The Ultimate Video Player For WordPress – by Presto Player - Version 1.9.0

Version Description

  • February 16, 2022 =
  • New: Introduced Modern skin for video.
  • New: Introduced Business skin for video.
Download this release

Release Info

Developer patilvikasj
Plugin Icon 128x128 The Ultimate Video Player For WordPress – by Presto Player
Version 1.9.0
Comparing to
See all releases

Code changes from version 1.8.6 to 1.9.0

dist/analytics/{admin-5a5a1db1.js → admin-1deea871.js} RENAMED
@@ -16,4 +16,4 @@
16
  * A zero setup Webpack Bundler Script for WordPress
17
  */
18
  (window.wpackioprestoPlayeranalyticsJsonp=window.wpackioprestoPlayeranalyticsJsonp||[]).push([[0],{23:function(e,t){e.exports=window.wp.apiFetch},24:function(e,t){e.exports=window.wp.components},26:function(e,t,a){a(27),e.exports=a(38)},38:function(e,t,a){"use strict";a.r(t);var r=a(1),n=a(12),c=a(13),l=a(14),o=a(15),i=a(17),s=a(10),p=a(4),u=a(21),d=a.n(u);function f(e){return{path:e.pathname,hash:e.hash,query:d.a.parse(e.search)}}var m=a(25),b=Object(m.a)(),h=wp.element.createContext({route:f(b.location)}),y=a(8),v=wp.element.useContext,w="";function g(e){var t=e.path,a=e.onRoute,r=e.children,n=v(h).route,c=Object(y.a)("".concat(t))("".concat(n.hash.substr(1)));return c?(a&&(w!==c.path&&a(),w=c.path),React.createElement("div",null,wp.element.cloneElement(r,{route:c}))):null}var E=a(18),R=a.n(E);wp.element.useContext;function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var a,r=Object(s.a)(e);if(t){var n=Object(s.a)(this).constructor;a=Reflect.construct(r,arguments,n)}else a=r.apply(this,arguments);return Object(i.a)(this,a)}}var j=function(e){Object(o.a)(a,e);var t=O(a);function a(e){var r;Object(n.a)(this,a),r=t.call(this,e),Object(p.a)(Object(l.a)(r),"handleRouteChange",(function(e){var t=f(null==e?void 0:e.location);r.setState({route:t})})),r.routes=Object.keys(e.routes).map((function(t){return e.routes[t].path})),r.unlisten=b.listen(r.handleRouteChange);var c=f(b.location);return r.state={route:c,defaultRoute:null!=e&&e.defaultRoute?"#".concat(null==e?void 0:e.defaultRoute):"#/"},r}return Object(c.a)(a,[{key:"componentWillUnmount",value:function(){this.unlisten()}},{key:"render",value:function(){var e=this.props,t=e.children,a=(e.NotFound,this.state),r=a.route,n=a.defaultRoute;if(!r.hash)return b.push(n),React.createElement("div",null);var c=!1;(this.routes||[]).forEach((function(e){var t=Object(y.a)(r.hash.substr(1))("".concat(r.hash.substr(1)));t&&(c={name:e,data:t})}));var l={route:r,matched:c},o=!c;return React.createElement(h.Provider,{value:l},o?React.createElement("div",null,"Not found"):t)}}]),a}(wp.element.Component),x=function(e){var t=e.width,a=e.height;return React.createElement("svg",{id:"e8f68bdd-4984-4f2e-95b7-7fc8ec281257","data-name":"Layer 1",width:t,height:a,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 918.14 765.54"},React.createElement("defs",null,React.createElement("linearGradient",{id:"27aa7b70-b106-4a00-be67-693c8380e41d",x1:"397.74",y1:"717.25",x2:"397.74",y2:"86.11",gradientUnits:"userSpaceOnUse"},React.createElement("stop",{offset:"0","stop-color":"gray","stop-opacity":"0.25"}),React.createElement("stop",{offset:"0.54","stop-color":"gray","stop-opacity":"0.12"}),React.createElement("stop",{offset:"1","stop-color":"gray","stop-opacity":"0.1"})),React.createElement("linearGradient",{id:"46a816da-c484-41ec-8a6f-fbf14454d910",x1:"288.88",y1:"378.44",x2:"288.88",y2:"209.65",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"32b634d8-28f1-48d9-a868-f602a2cad942",x1:"288.88",y1:"328.29",x2:"288.88",y2:"223.1",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("clipPath",{id:"7a4c6aff-0be0-461b-a111-b3ae1b8fbf73",transform:"translate(-140.93 -67.23)"},React.createElement("rect",{id:"8cc91f6d-19b0-43cc-9c18-2faa83ac34ba","data-name":"<Rectangle>",x:"354.51",y:"291.55",width:"150.6",height:"101.52",fill:"#fff"})),React.createElement("linearGradient",{id:"38f1cb81-8fac-4205-a0ff-a33ac00d354c",x1:"288.88",y1:"594.94",x2:"288.88",y2:"426.14",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"6fc01aaf-135e-403e-a209-43b2a4fe59f1",x1:"288.88",y1:"544.79",x2:"288.88",y2:"439.6",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("clipPath",{id:"79ce363a-d134-40e4-9f82-b96d04a36978",transform:"translate(-140.93 -67.23)"},React.createElement("rect",{id:"5b44e697-61fe-43bd-9a58-5f3e41301748","data-name":"<Rectangle>",x:"354.51",y:"508.05",width:"150.6",height:"101.52",fill:"#fff"})),React.createElement("linearGradient",{id:"54803c44-522d-4b9e-9a34-f1f7b43e8483",x1:"671.57",y1:"760.34",x2:"671.57",y2:"129.2",gradientTransform:"translate(1109.43 -194.1) rotate(90)",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"089a6a47-adaa-499b-aefb-cd6464b62fb8",x1:"670.96",y1:"553.63",x2:"670.96",y2:"387.28",gradientTransform:"translate(1129.51 -168.41) rotate(90)",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"fd8d88e0-7826-450d-9e0b-001d1be709c2",x1:"637.66",y1:"754.12",x2:"637.66",y2:"601.05",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"8d1793c5-b76e-44e2-a52e-569460402331",x1:"778.37",y1:"673.86",x2:"778.37",y2:"569.13",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"4745700d-8097-45ff-9f71-625443fc4ad8",x1:"778.37",y1:"774.41",x2:"778.37",y2:"713.66",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"})),React.createElement("title",null,"secure data"),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"162.9",y:"86.11",width:"469.69",height:"631.14",fill:"url(#27aa7b70-b106-4a00-be67-693c8380e41d)"})),React.createElement("rect",{x:"169.02",y:"94.67",width:"455.01",height:"609.12",fill:"#f2f2f2"}),React.createElement("rect",{x:"204.49",y:"120.36",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"204.49",y:"142.37",width:"156.56",height:"4.89",fill:"#6c63ff",opacity:"0.7"}),React.createElement("rect",{x:"384.29",y:"120.36",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"408.75",y:"259.8",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"412.42",y:"273.25",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"419.76",y:"286.7",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"408.75",y:"476.29",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"412.42",y:"489.75",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"419.76",y:"503.2",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"205.71",y:"209.65",width:"166.35",height:"168.79",fill:"url(#46a816da-c484-41ec-8a6f-fbf14454d910)"})),React.createElement("rect",{x:"206.76",y:"213.32",width:"163.72",height:"161.45",fill:"#f5f5f5"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"212.53",y:"223.1",width:"152.7",height:"105.19",fill:"url(#32b634d8-28f1-48d9-a868-f602a2cad942)"})),React.createElement("rect",{id:"689f37f3-cc41-448d-b172-63ec123bc985","data-name":"<Rectangle>",x:"213.58",y:"224.32",width:"150.6",height:"101.52",fill:"#fff"}),React.createElement("g",{"clip-path":"url(#7a4c6aff-0be0-461b-a111-b3ae1b8fbf73)"},React.createElement("polygon",{points:"200.82 322.18 238.74 263.46 254.64 289.15 288.88 253.68 318.24 289.15 343.93 236.56 409.98 341.75 195.93 334.41 200.82 322.18",fill:"#6c63ff",opacity:"0.4"}),React.createElement("circle",{cx:"230.17",cy:"239",r:"11.01",fill:"#6c63ff",opacity:"0.4"})),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"205.71",y:"426.14",width:"166.35",height:"168.79",fill:"url(#38f1cb81-8fac-4205-a0ff-a33ac00d354c)"})),React.createElement("rect",{x:"206.76",y:"429.81",width:"163.72",height:"161.45",fill:"#f5f5f5"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"212.53",y:"439.6",width:"152.7",height:"105.19",fill:"url(#6fc01aaf-135e-403e-a209-43b2a4fe59f1)"})),React.createElement("rect",{id:"b429ac3a-f8a8-4171-bcce-5b6c002c0714","data-name":"<Rectangle>",x:"213.58",y:"440.82",width:"150.6",height:"101.52",fill:"#fff"}),React.createElement("g",{"clip-path":"url(#79ce363a-d134-40e4-9f82-b96d04a36978)"},React.createElement("polygon",{points:"200.82 538.67 238.74 479.96 254.64 505.65 288.88 470.18 318.24 505.65 343.93 453.05 409.98 558.24 195.93 550.9 200.82 538.67",fill:"#bdbdbd",opacity:"0.4"}),React.createElement("circle",{cx:"230.17",cy:"455.5",r:"11.01",fill:"#bdbdbd",opacity:"0.4"})),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"349.09",y:"242.63",width:"631.14",height:"469.69",transform:"translate(-74.16 969.06) rotate(-78.76)",fill:"url(#54803c44-522d-4b9e-9a34-f1f7b43e8483)"})),React.createElement("rect",{x:"359.37",y:"247.33",width:"609.12",height:"455.01",transform:"translate(-72.16 966.22) rotate(-78.76)",fill:"#fff"}),React.createElement("rect",{x:"523.5",y:"197.22",width:"322.91",height:"4.89",transform:"translate(-88.86 -196.94) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"433.36",y:"650.7",width:"322.91",height:"4.89",transform:"translate(-2.18 -170.66) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"428.58",y:"671.14",width:"249.52",height:"4.89",transform:"translate(1.01 -162.18) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"424.6",y:"683.47",width:"92.96",height:"4.89",transform:"translate(1.84 -145.91) rotate(11.24)",fill:"#6c63ff",opacity:"0.7"}),React.createElement("rect",{x:"519.57",y:"209.08",width:"161.45",height:"4.89",transform:"translate(-88.17 -180.2) rotate(11.24)",fill:"#6c63ff",opacity:"0.7"}),React.createElement("rect",{x:"512.84",y:"249.31",width:"291.11",height:"4.89",transform:"translate(-79.21 -190.76) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"509.47",y:"255.44",width:"70.94",height:"4.89",transform:"translate(-80.19 -168.52) rotate(11.24)",fill:"#3ad29f",opacity:"0.7"}),React.createElement("rect",{x:"501.56",y:"307.59",width:"322.91",height:"4.89",transform:"translate(-67.76 -190.54) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"575.87",y:"357.6",width:"166.35",height:"289.88",transform:"translate(-103.27 983.74) rotate(-78.76)",fill:"url(#089a6a47-adaa-499b-aefb-cd6464b62fb8)"})),React.createElement("rect",{x:"516.06",y:"420.61",width:"286.22",height:"162.68",transform:"translate(-30.42 -186.11) rotate(11.24)",fill:"#fff"}),React.createElement("rect",{x:"496.08",y:"335.18",width:"322.91",height:"4.89",transform:"translate(-62.49 -188.94) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"547.86",y:"424.02",width:"35.47",height:"118.64",transform:"translate(-35.84 -168.22) rotate(11.24)",fill:"#6c63ff"}),React.createElement("rect",{x:"606.43",y:"475.19",width:"35.47",height:"79.5",transform:"translate(-28.56 -179.03) rotate(11.24)",fill:"#3ad29f"}),React.createElement("rect",{x:"665.23",y:"523.93",width:"35.47",height:"42.81",transform:"translate(-21.5 -189.92) rotate(11.24)",fill:"#f55f44"}),React.createElement("rect",{x:"731.91",y:"492.72",width:"35.47",height:"86.84",transform:"translate(-22.02 -203.09) rotate(11.24)",fill:"#fdd835"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"128.65",y:"645.09",width:"3.67",height:"20.79",fill:"#47e6b1"}),React.createElement("rect",{x:"269.58",y:"712.31",width:"3.67",height:"20.79",transform:"translate(853.2 384.07) rotate(90)",fill:"#47e6b1"})),React.createElement("path",{d:"M699.44,75.56a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,699.44,75.56Z",transform:"translate(-140.93 -67.23)",fill:"#4d8af0",opacity:"0.5"}),React.createElement("path",{d:"M286.33,179.4a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,286.33,179.4Z",transform:"translate(-140.93 -67.23)",fill:"#fdd835",opacity:"0.5"}),React.createElement("path",{d:"M253.63,484.46a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,253.63,484.46Z",transform:"translate(-140.93 -67.23)",fill:"#fdd835",opacity:"0.5"}),React.createElement("circle",{cx:"337.81",cy:"28.62",r:"7.34",fill:"#f55f44",opacity:"0.5"}),React.createElement("circle",{cx:"7.34",cy:"317.46",r:"7.34",fill:"#f55f44",opacity:"0.5"}),React.createElement("circle",{cx:"863.76",cy:"120.36",r:"7.34",fill:"#f55f44",opacity:"0.5"}),React.createElement("circle",{cx:"822.17",cy:"339.3",r:"7.34",fill:"#4d8af0",opacity:"0.5"}),React.createElement("circle",{cx:"37.68",cy:"145.22",r:"7.34",fill:"#47e6b1",opacity:"0.5"}),React.createElement("circle",{cx:"853.29",cy:"647.34",r:"7.34",fill:"#47e6b1",opacity:"0.5"}),React.createElement("circle",{cx:"910.8",cy:"430.97",r:"7.34",fill:"#47e6b1",opacity:"0.5"}),React.createElement("rect",{x:"544.42",y:"601.05",width:"186.48",height:"153.07",fill:"url(#fd8d88e0-7826-450d-9e0b-001d1be709c2)"}),React.createElement("path",{d:"M723.82,639a54.55,54.55,0,0,1,109.1,0v34.91h15.27V639a69.82,69.82,0,0,0-139.65,0v34.91h15.27Z",transform:"translate(-140.93 -67.23)",fill:"url(#8d1793c5-b76e-44e2-a52e-569460402331)"}),React.createElement("path",{d:"M726,638.25a52.37,52.37,0,1,1,104.74,0v33.52H845.4V638.25a67,67,0,0,0-134.06,0v33.52H726Z",transform:"translate(-140.93 -67.23)",fill:"#f5f5f5"}),React.createElement("rect",{x:"546.32",y:"602.45",width:"182.24",height:"148.73",fill:"#6c63ff"}),React.createElement("rect",{x:"546.32",y:"602.45",width:"182.24",height:"148.73",fill:"#f5f5f5"}),React.createElement("rect",{x:"546.32",y:"631.77",width:"182.24",height:"90.07",fill:"#6c63ff"}),React.createElement("path",{d:"M791.73,727a13.36,13.36,0,1,0-23.08,9.15v28.51a9.72,9.72,0,0,0,19.44,0V736.18A13.3,13.3,0,0,0,791.73,727Z",transform:"translate(-140.93 -67.23)",fill:"url(#4745700d-8097-45ff-9f71-625443fc4ad8)"}),React.createElement("path",{d:"M789.89,729.38a11.52,11.52,0,1,0-19.9,7.89v24.58a8.38,8.38,0,1,0,16.76,0V737.27A11.47,11.47,0,0,0,789.89,729.38Z",transform:"translate(-140.93 -67.23)",opacity:"0.2"}))},_=wp.i18n.__,D=wp.components,P=D.Flex,k=D.FlexItem,N=D.FlexBlock,S=function(){return React.createElement(P,{style:{padding:"30px",background:"#fff"}},React.createElement(k,null,React.createElement(x,{width:"250px"})),React.createElement(N,{style:{marginLeft:"20px"}},React.createElement("h1",null,_("Get detailed video insights.","presto-player")),React.createElement("p",null,_("Upgrade to Pro and get video insights like plays, watch-time, and drop off numbers.","presto-player")),React.createElement("a",{href:"https://prestoplayer.com",target:"_blank",className:"button button-primary"},_("Learn More","presto-player"))))},C=a(11),F=a(5),T=a(3),M=a.n(T);function I(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function B(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?I(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):I(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}wp.i18n.__;var A=wp.apiFetch,V=wp.element.useState,H=wp.compose.createHigherOrderComponent,L=function(){return H((function(e){return function(t){var a=V(!1),n=Object(r.a)(a,2),c=n[0],l=n[1],o=V(1),i=Object(r.a)(o,2),s=i[0],p=i[1],u=V(0),d=Object(r.a)(u,2),f=d[0],m=d[1],b=V(0),h=Object(r.a)(b,2),y=h[0],v=h[1],w=V([]),g=Object(r.a)(w,2),E=g[0],R=g[1],O=V(""),j=Object(r.a)(O,2),x=j[0],_=j[1],D=function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r,n,c;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.endpoint,r=t.params,n=void 0===r?{}:r,l(!0),e.prev=2,e.next=5,A({path:wp.url.addQueryArgs(a,B({page:s,per_page:5},n)),parse:!1}).then((function(e){var t=e.headers?parseInt(e.headers.get("X-WP-Total")):0,a=e.headers?parseInt(e.headers.get("X-WP-TotalPages")):0;return m(t),v(a),e.json()}));case 5:c=e.sent,R(c),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),null!==e.t0&&void 0!==e.t0&&e.t0.message&&_(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[2,9,13,16]])})));return function(t){return e.apply(this,arguments)}}();return React.createElement(e,Object.assign({loading:c,setLoading:l,fetchData:D,page:s,setPage:p,total:f,setTotal:m,totalPages:y,setTotalPages:v,data:E,setData:R,error:x,setError:_},t))}}),"withDataList")},U=wp.i18n,G=U.__,W=U.sprintf,Z=function(e){var t=(new Date).getTimezoneOffset();return new Date(e.getTime()-60*t*1e3).toISOString().split("T")[0]+"T00:00:00.000Z"},z=wp.components,Y=z.Spinner,Q=z.Flex,X=z.FlexItem,q=function(e){var t=e.height,a=void 0===t?100:t;return React.createElement(Q,{style:{height:"".concat(a,"px")},align:"center",justify:"center"},React.createElement(X,null,React.createElement(Y,null)))},J=wp.i18n.__,$=wp.components,K=$.Card,ee=$.CardBody,te=$.Flex,ae=$.FlexBlock,re=$.Button,ne=$.ButtonGroup,ce=wp.element,le=ce.useState,oe=ce.useEffect,ie=function(e){var t=e.page,a=e.setPage,n=e.perPage,c=e.total,l=e.totalPages,o=le(!1),i=Object(r.a)(o,2),s=i[0],p=i[1],u=le(!1),d=Object(r.a)(u,2),f=d[0],m=d[1],b=le(0),h=Object(r.a)(b,2),y=h[0],v=h[1],w=le(0),g=Object(r.a)(w,2),E=g[0],R=g[1];oe((function(){v(Math.min(n*t,c)),R(n*(t-1)+1)}),[n,t,c]);return oe((function(){p(t-1>0),m(l>=t+1)}),[t,l]),React.createElement(K,{size:"large",className:"presto-card pagination"},React.createElement(ee,{className:"presto-flow"},React.createElement(te,null,React.createElement(ae,null,sprintf(J("Showing %1s to %2s of %3s","presto-player"),E,y,c)),React.createElement(ae,null,React.createElement(te,{justify:"flex-end"},React.createElement(ne,null,React.createElement(re,{isSecondary:!0,disabled:!s,onClick:function(){a(Math.max(t-1,0))}},J("Previous","presto-player")),React.createElement(re,{isSecondary:!0,disabled:!f,onClick:function(){a(Math.min(l,t+1))}},J("Next","presto-player"))))))))},se=wp.i18n.__,pe=wp.element,ue=(pe.useRef,pe.useEffect,pe.useState,wp.components),de=ue.Card,fe=ue.CardBody,me=(ue.Flex,ue.FlexBlock,ue.Button,ue.ButtonGroup,function(e){var t=e.columns,a=e.data,r=e.onRowClick,n=e.title;return a.length?React.createElement(de,{size:"large",className:"presto-card table-card"},React.createElement(fe,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},n),React.createElement("table",{role:"table",className:R()("presto-table",{"is-clickable":r})},React.createElement("thead",{role:"rowgroup"},React.createElement("tr",{role:"row"},t&&t.map((function(e){return React.createElement("th",{key:e.key,role:"columnheader"},e.label)})))),React.createElement("tbody",{role:"rowgroup"},a.map((function(e,a){return React.createElement("tr",{role:"row",key:"row-".concat(a),onClick:function(){return r&&r(e)}},t.map((function(t,r){return React.createElement("td",{role:"cell","data-title":t.label,key:"row-".concat(a,"-").concat(r),"aria-label":t.label},t.render?t.render(e):React.createElement("div",null,t.value(e)))})))})))))):React.createElement(de,{size:"large",className:"presto-card table-card"},React.createElement(fe,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},n),React.createElement("div",{style:{opacity:.65}},se("No data available.","presto-player"))))}),be=wp.i18n.__,he=wp.element,ye=(he.useEffect,he.useState,wp.components),ve=ye.Card,we=ye.CardBody,ge=function(e){var t=e.perPage,a=void 0===t?10:t,r=e.title,n=e.page,c=e.setPage,l=e.loading,o=e.total,i=e.totalPages,s=e.columns,p=e.data,u=e.onSelect;return l?React.createElement(ve,null,React.createElement(q,null)):null!=p&&p.length?React.createElement("div",{className:"datatable"},React.createElement(me,{data:p,columns:s,perPage:a,onRowClick:u,title:r}),!!o&&React.createElement(ie,{page:n,setPage:c,perPage:a,total:o,totalPages:i})):React.createElement(ve,{size:"large",className:"presto-card"},React.createElement(we,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},r),React.createElement("div",{style:{opacity:.65}},be("No data available.","presto-player"))))};function Ee(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function Re(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Ee(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Oe=wp.i18n.__,je=wp.element.useEffect,xe=(0,wp.compose.compose)([L()])((function(e){var t=e.loading,a=e.page,r=e.setPage,n=e.total,c=e.totalPages,l=e.data,o=e.error,i=e.fetchData,s=e.startDate,p=e.endDate;je((function(){i({endpoint:"/presto-player/v1/analytics/top-users",params:Re(Re({per_page:5},s?{start:Z(s)}:{}),p?{end:Z(p)}:{})})}),[a,s,p]);var u=[{key:"name",label:Oe("Name","presto-player"),value:function(e){var t;return null==e||null===(t=e.user)||void 0===t?void 0:t.name}},{key:"total_view",label:Oe("Total View","presto-player"),value:function(e){var t,a;return null==e||null===(t=e.stats)||void 0===t||null===(a=t[0])||void 0===a?void 0:a.data}},{key:"avg_view_time",label:Oe("Avg View Time","presto-player"),render:function(e){var t,a;return React.createElement("div",{className:"presto-badge"},null==e||null===(t=e.stats)||void 0===t||null===(a=t[1])||void 0===a?void 0:a.data)}}];return o?{error:o}:React.createElement(ge,{title:Oe("Top Users","presto-player"),page:a,perPage:5,setPage:r,loading:t,total:n,totalPages:c,columns:u,data:l,onSelect:function(e){var t,a;return a=null==e||null===(t=e.user)||void 0===t?void 0:t.id,void b.push("#/user/".concat(a))}})}));function _e(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function De(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?_e(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):_e(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Pe=wp.i18n.__,ke=wp.element.useEffect,Ne=(0,wp.compose.compose)([L()])((function(e){var t=e.loading,a=e.page,r=e.setPage,n=e.total,c=e.totalPages,l=e.data,o=e.error,i=e.fetchData,s=e.startDate,p=e.endDate,u=e.userId;ke((function(){i({endpoint:"/presto-player/v1/analytics/top-videos",params:De(De(De({per_page:10},s?{start:Z(s)}:{}),p?{end:Z(p)}:{}),u?{user_id:u}:{})})}),[a,s,p]);var d=[{key:"name",label:Pe("Name","presto-player"),render:function(e){return React.createElement("h3",{style:{marginBottom:0,wordBreak:"break-all"}},e.video.title?e.video.title:Pe("Untitled","presto-player"))}},{key:"total_view",label:Pe("Total View","presto-player"),value:function(e){return e.stats[0].data}},{key:"avg_view_time",label:Pe("Avg View Time","presto-player"),render:function(e){return React.createElement("div",{className:"presto-badge"},e.stats[1].data)}},{key:"view_more",label:"",render:function(e){return React.createElement("span",{style:{color:"var(--wp-admin-theme-color, #007cba)"}},Pe("View Details","presto-player")," →")}}];return o?{error:o}:React.createElement(ge,{title:Pe("Top Media","presto-player"),perPage:10,page:a,setPage:r,loading:t,total:n,totalPages:c,columns:d,data:l,onSelect:function(e){var t,a;a=null==e||null===(t=e.video)||void 0===t?void 0:t.id,b.push("#/video/".concat(a))}})})),Se=wp.apiFetch;Se.use(Se.createNonceMiddleware(prestoPlayer.nonce)),Se.use(Se.createRootURLMiddleware(prestoPlayer.root+prestoPlayer.prestoVersionString));var Ce=Se,Fe=a(9),Te=a.n(Fe);function Me(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function Ie(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Me(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Me(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Be,Ae=wp.i18n,Ve=Ae.__,He=Ae.sprintf,Le=wp.components,Ue=(Le.Card,Le.CardBody),Ge=wp.element,We=Ge.useState,Ze=Ge.useEffect,ze=(Ge.useRef,function(e){var t=We(!0),a=Object(r.a)(t,2),n=a[0],c=a[1],l=We(0),o=Object(r.a)(l,2),i=o[0],s=o[1],p=e.startDate,u=e.endDate,d=We([{name:"Views",data:[]}]),f=Object(r.a)(d,2),m=f[0],b=f[1],h={options:{chart:{toolbar:{show:!1}},yaxis:{min:0,labels:{formatter:function(e){return e<1?0:Math.abs(e)>999?Math.sign(e)*(Math.abs(e)/1e3).toFixed(1)+"k":Math.sign(e)*Math.abs(e).toFixed(0)}}},colors:["#7c3aed"],xaxis:{type:"datetime",min:new Date(p).setHours(0,0,0,0),max:new Date(u).setHours(23,59,59,999)},dataLabels:{enabled:!1},stroke:{curve:"smooth"},fill:{type:"gradient",gradient:{shadeIntensity:1,opacityFrom:.7,opacityTo:.9,stops:[0,90,100]}}}};Ze((function(){y()}),[e]);var y=function(){c(!0),Ce({path:"/presto-player/v1/analytics/views?"+jQuery.param(Ie(Ie({},p?{start:Z(p)}:{}),u?{end:Z(u)}:{})),parse:!1}).then(function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s(t.headers&&t.headers.get("X-WP-Total")),e.next=3,t.json();case 3:a=e.sent,r=[],a.length&&a.forEach((function(e){r.push({x:e.date_time,y:e.total})})),b([{name:"Views",data:r}]);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error(e)})).finally((function(){c(!1)}))};return n?React.createElement(Ue,null,React.createElement(q,null)):React.createElement(Ue,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},He(Ve("%d Unique Views","presto-player"),i)),React.createElement(Te.a,{options:h.options,series:m,type:"area",height:280}))}),Ye=wp.i18n,Qe=Ye.__,Xe=Ye.sprintf,qe=wp.components,Je=(qe.Card,qe.CardBody),$e=wp.element,Ke=$e.useState,et=$e.useEffect,tt=($e.useRef,function(e){var t=Ke(!0),a=Object(r.a)(t,2),n=a[0],c=a[1],l=Ke(0),o=Object(r.a)(l,2),i=o[0],s=o[1],p=e.startDate,u=e.endDate,d=Ke([{name:"Views",data:[]}]),f=Object(r.a)(d,2),m=f[0],b=f[1],h={options:{chart:{toolbar:{show:!1}},yaxis:{labels:{formatter:function(e){return Math.abs(e)>999?Math.sign(e)*(Math.abs(e)/1e3).toFixed(1)+"k min":(Math.sign(e)*Math.abs(e)).toFixed(1)+"min"}}},colors:["#7c3aed"],xaxis:{type:"datetime",min:new Date(p).setHours(0,0,0,0),max:new Date(u).setHours(23,59,59,999)},dataLabels:{enabled:!1},stroke:{curve:"smooth"},fill:{type:"gradient",gradient:{shadeIntensity:1,opacityFrom:.7,opacityTo:.9,stops:[0,90,100]}}}};et((function(){R()}),[e]);var y,v,w,g,E,R=function(){c(!0),Ce({path:"/presto-player/v1/analytics/watch-time?"+jQuery.param({start:Z(p),end:Z(u)}),parse:!1}).then(function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r,n,c;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.json();case 2:a=e.sent,r=a.data,n=a.average,s(parseFloat(n)),c=[],r.length&&r.forEach((function(e){c.push({x:e.date_time,y:(e.total/60).toFixed(2)})})),b([{name:"Watch Time",data:c}]);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error(e)})).finally((function(){c(!1)}))};return n?React.createElement(Je,null,React.createElement(q,null)):React.createElement(Je,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},Xe(Qe("%s average watch time","presto-player"),(y=i,v=Math.floor(y/60/60),w=Math.floor(y/60)-60*v,g=y%60,E="",v&&(E+=W(G("%d hours","presto-player"),v)+", "),w&&(E+=W(G("%d minutes","presto-player"),w)+" "),(v||w)&&g&&(E+=G("and","presto-player")+" "),E+=W(G("%d seconds","presto-player"),g)))),React.createElement(Te.a,{options:h.options,series:m,type:"area",height:280}))}),at=wp.i18n.__,rt=wp.components,nt=rt.Panel,ct=rt.TabPanel,lt=function(e){var t=e.startDate,a=e.endDate;return React.createElement(nt,null,React.createElement(ct,{className:"presto-module-tabs",onSelect:function(){},tabs:[{name:"views",title:at("Views","presto-player")},{name:"watch",title:at("Watch Time","presto-player")}]},(function(e){switch(e.name){case"views":return React.createElement(ze,{startDate:t,endDate:a});case"watch":return React.createElement(tt,{startDate:t,endDate:a});default:return React.createElement(React.Fragment,null,"Not Found")}})))},ot=a(22),it=a.n(ot),st=(a(35),wp.i18n.__),pt=wp.element,ut=pt.useRef,dt=pt.useEffect,ft=pt.useState,mt=function(e){var t=e.startDate,a=e.setStartDate,n=e.endDate,c=e.setEndDate,l=ut(),o=ft(25),i=Object(r.a)(o,2),s=i[0],p=i[1];return dt((function(){new it.a({element:null==l?void 0:l.current,singleMode:!1,format:"MMMM D YYYY",autoApply:!1,plugins:["ranges"],maxDate:new Date,numberOfMonths:2,buttonText:{apply:st("Apply","presto-player"),cancel:st("Cancel","presto-player")},dropdowns:{minYear:1990,maxYear:null,months:!0,years:!0},setup:function(e){e.setDateRange(t,n),e.on("button:apply",(function(e,t){a(e.dateInstance),c(t.dateInstance),p(l.current.value.length)}))}})}),[l]),React.createElement("div",{className:"component-base-control"},React.createElement("div",{className:"components-base-control__field"},React.createElement("input",{className:"components-text-control__input presto-settings__date-select",ref:l,size:s})))},bt=a(23),ht=a.n(bt),yt=a(24),vt=a(0),wt=wp.i18n.__,gt=wp.components,Et=gt.Flex,Rt=gt.FlexBlock,Ot=gt.FlexItem,jt=wp.element,xt=jt.useState,_t=jt.useEffect,Dt=function(e){var t=e.startDate,a=e.endDate,n=e.setStartDate,c=e.setEndDate,l=xt(!1),o=Object(r.a)(l,2),i=o[0],s=o[1];return _t((function(){ht()({path:"/wp/v2/settings"}).then((function(e){var t;!1===(null==e||null===(t=e.presto_player_analytics)||void 0===t?void 0:t.enable)&&s(!0)}))}),[]),Object(vt.b)(React.Fragment,null,i?Object(vt.b)(Pt,null):"",Object(vt.b)(Et,null,Object(vt.b)(Rt,null,Object(vt.b)("h1",null,wt("Analytics","presto-player"))),Object(vt.b)(Ot,null,Object(vt.b)(mt,{startDate:t,setStartDate:n,endDate:a,setEndDate:c}))),Object(vt.b)("div",{className:"presto-flow"},Object(vt.b)("div",{className:"presto-dashboard"},Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item is-large"},Object(vt.b)(lt,{startDate:t,endDate:a})),Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(xe,{startDate:t,endDate:a}))),Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item is-large"},Object(vt.b)(Ne,{startDate:t,endDate:a}))))))},Pt=function(){return Object(vt.b)(yt.Notice,{css:Object(vt.a)(Be||(Be=Object(C.a)(["\n margin: 0 0 1em 0 !important;\n "]))),status:"warning",isDismissible:!1},Object(vt.b)("p",null,wt("Analytics are currently disabled. To collect analytics, turn them on in your settings page.","presto-player")))},kt=wp.components,Nt=kt.Card,St=kt.CardBody,Ct=function(e){var t=e.loading,a=e.title,r=e.value,n=e.label;return t?React.createElement(Nt,null,React.createElement(St,null,React.createElement(q,null))):React.createElement(Nt,{className:"presto-player__stat-card"},React.createElement(St,null,React.createElement("div",{className:"presto-subtitle"},a),React.createElement("h1",null,r),React.createElement("div",null,n)))};function Ft(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function Tt(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Ft(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Ft(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Mt,It,Bt,At=wp.apiFetch,Vt=wp.element.useState,Ht=wp.compose.createHigherOrderComponent,Lt=function(){return Ht((function(e){return function(t){var a=Vt(!1),n=Object(r.a)(a,2),c=n[0],l=n[1],o=Vt([]),i=Object(r.a)(o,2),s=i[0],p=i[1],u=Vt(""),d=Object(r.a)(u,2),f=d[0],m=d[1],b=function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r,n,c;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.endpoint,r=t.params,n=void 0===r?{}:r,l(!0),e.prev=2,e.next=5,At({path:wp.url.addQueryArgs(a,Tt({},n))});case 5:c=e.sent,p(c),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),null!==e.t0&&void 0!==e.t0&&e.t0.message&&m(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[2,9,13,16]])})));return function(t){return e.apply(this,arguments)}}();return React.createElement(e,Object.assign({loading:c,setLoading:l,fetchData:b,stat:s,setStat:p,error:f,setError:m},t))}}),"withStat")},Ut=wp.i18n.__,Gt=wp.compose.compose,Wt=wp.element.useEffect,Zt=Gt([Lt()])((function(e){var t=e.userId,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return Wt((function(){c({endpoint:"/presto-player/v1/analytics/user/".concat(t,"/total-views"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseInt(null==n?void 0:n.view),title:Ut("Total Views","presto-player")})})),zt=wp.i18n.__,Yt=wp.compose.compose,Qt=wp.element.useEffect,Xt=Yt([Lt()])((function(e){var t=e.userId,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return Qt((function(){c({endpoint:"/presto-player/v1/analytics/user/".concat(t,"/average-watchtime"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseFloat(null==n?void 0:n.view).toFixed(2),title:zt("Average Watch Time","presto-player"),label:zt("seconds","presto-player")})})),qt=wp.i18n.__,Jt=wp.compose.compose,$t=wp.element.useEffect,Kt=Jt([Lt()])((function(e){var t=e.userId,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return $t((function(){c({endpoint:"/presto-player/v1/analytics/user/".concat(t,"/total-watchtime"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseFloat(null==n?void 0:n.view).toFixed(2),title:qt("Total Watch Time","presto-player"),label:qt("seconds","presto-player")})})),ea=wp.i18n.__,ta=wp.components,aa=ta.Flex,ra=ta.FlexBlock,na=ta.FlexItem,ca=ta.Spinner,la=ta.Button,oa=wp.element,ia=oa.useEffect,sa=oa.useState,pa=wp.apiFetch,ua=function(e){var t,a,n,c,l=e.route,o=e.startDate,i=e.endDate,s=e.setStartDate,p=e.setEndDate,u=sa(!0),d=Object(r.a)(u,2),f=d[0],m=d[1],h=sa({}),y=Object(r.a)(h,2),v=y[0],w=y[1],g=sa(""),E=Object(r.a)(g,2),R=E[0],O=E[1],j=function(){var e=Object(F.a)(M.a.mark((function e(){var t,a;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return m(!0),e.prev=1,e.next=4,pa({url:"/wp-json/wp/v2/users/".concat(null==l||null===(t=l.params)||void 0===t?void 0:t.id,"?context=edit")});case 4:a=e.sent,w(a),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),"rest_no_route"===e.t0.code&&O("User Not Found");case 11:return e.prev=11,m(!1),e.finish(11);case 14:case"end":return e.stop()}}),e,null,[[1,8,11,14]])})));return function(){return e.apply(this,arguments)}}();return ia((function(){j()}),[]),R?Object(vt.b)("div",{className:"presto-flow"},Object(vt.b)(aa,null,Object(vt.b)(ra,null,Object(vt.b)("h2",null,R)))):Object(vt.b)("div",{className:"presto-flow"},Object(vt.b)(aa,null,Object(vt.b)(ra,null,Object(vt.b)(la,{isSecondary:!0,onClick:function(){b.push("#/")}},"← ",ea("Back to Dashboard","presto-player")))),Object(vt.b)(aa,{wrap:!0},Object(vt.b)(ra,null,f?Object(vt.b)(ca,null):Object(vt.b)("div",{css:Object(vt.a)(Mt||(Mt=Object(C.a)(["\n display: flex;\n align-items: center;\n\n .presto__edit-user-button {\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s ease;\n }\n\n &:hover {\n .presto__edit-user-button {\n opacity: 1;\n visibility: visible;\n }\n }\n "])))},Object(vt.b)("div",null,Object(vt.b)("h1",{className:"presto-dashboard__title"},null==v?void 0:v.name),Object(vt.b)("p",{css:Object(vt.a)(It||(It=Object(C.a)(["\n margin-top: -10px;\n opacity: 0.65;\n "])))},null==v?void 0:v.email)),!!v.id&&Object(vt.b)("div",{className:"presto__edit-user-button",css:Object(vt.a)(Bt||(Bt=Object(C.a)(["\n margin: 0 20px;\n "])))},Object(vt.b)(la,{href:"/wp-admin/user-edit.php?user_id=".concat(null==v?void 0:v.id),isSecondary:!0,isSmall:!0},ea("View Profile","presto-player")," →")))),Object(vt.b)(na,null,Object(vt.b)(mt,{startDate:o,setStartDate:s,endDate:i,setEndDate:p}))),Object(vt.b)("div",{className:"presto-dashboard presto-flow"},Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(Zt,{userId:null==l||null===(t=l.params)||void 0===t?void 0:t.id,startDate:o,endDate:i})),Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(Xt,{userId:null==l||null===(a=l.params)||void 0===a?void 0:a.id,startDate:o,endDate:i})),Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(Kt,{userId:null==l||null===(n=l.params)||void 0===n?void 0:n.id,startDate:o,endDate:i}))),Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item is-large"},Object(vt.b)(Ne,{startDate:o,endDate:i,userId:null==l||null===(c=l.params)||void 0===c?void 0:c.id})))))},da=wp.i18n.__,fa=wp.compose.compose,ma=wp.element.useEffect,ba=fa([Lt()])((function(e){var t=e.video_id,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return ma((function(){c({endpoint:"/presto-player/v1/analytics/video/".concat(t,"/average-watchtime"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseInt(n),title:da("Average Watch Time","presto-player"),label:da("seconds","presto-player")})})),ha=wp.i18n,ya=ha.__,va=(ha.sprintf,wp.components),wa=va.Card,ga=va.CardBody,Ea=wp.element,Ra=Ea.useState,Oa=Ea.useEffect,ja=(Ea.useRef,function(e){var t=e.video_id,a=e.startDate,n=e.endDate,c=Ra(!0),l=Object(r.a)(c,2),o=l[0],i=l[1],s=Ra([{name:"Views",data:[]}]),p=Object(r.a)(s,2),u=p[0],d=p[1];Oa((function(){i(!0),Ce({path:wp.url.addQueryArgs("/presto-player/v1/analytics/video/".concat(t,"/timeline"),{start:Z(a),end:Z(n)})}).then((function(e){var t=[];e.length&&e.forEach((function(e){t.push({x:e.watch_time,y:e.total})})),d([{name:"Viewers",data:t}])})).catch((function(e){console.error(e)})).finally((function(){i(!1)}))}),[a,n]);var f={options:{chart:{toolbar:{show:!1}},tickAmount:1,yaxis:{labels:{formatter:function(e){return parseInt(e)}}},xaxis:{labels:{formatter:function(e){return t=e,t=1e3*parseInt(t||0),new Date(t).toISOString().substr(11,8);var t}}},colors:["#7c3aed"],dataLabels:{enabled:!1},stroke:{curve:"smooth"},fill:{type:"gradient",gradient:{shadeIntensity:1,opacityFrom:.7,opacityTo:.9,stops:[0,90,100]}}}};return o?React.createElement(wa,null,React.createElement(ga,null,React.createElement(q,null))):React.createElement(wa,null,React.createElement(ga,null,React.createElement("div",{className:"presto-card__title"},ya("Audience Retention","presto-player")),React.createElement(Te.a,{options:f.options,series:u,type:"area",height:280})))}),xa=wp.i18n.__,_a=wp.compose.compose,Da=wp.element.useEffect,Pa=_a([Lt()])((function(e){var t=e.video_id,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return Da((function(){c({endpoint:"/presto-player/v1/analytics/video/".concat(t,"/views"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseInt(n),title:xa("Unique Views","presto-player")})})),ka=a(2),Na=a.n(ka),Sa=function(e){return e.replace(/([A-Z])/g,(function(e){return"-".concat(e[0].toLowerCase())}))},Ca=a(6),Fa=function(e,t,a){var r=t.className||t.class,n=a.className||a.class,c=Ia(e),l=Ia(r?r.split(" "):[]),o=Ia(n?n.split(" "):[]),i=[];return c.forEach((function(e){l.has(e)?(i.push(e),l.delete(e)):o.has(e)||i.push(e)})),l.forEach((function(e){return i.push(e)})),i.join(" ")},Ta=function(e){if("undefined"==typeof document)return!0;var t="on"+e,a=t in document;if(!a){var r=document.createElement("div");r.setAttribute(t,"return;"),a="function"==typeof r[t]}return a},Ma=function(e,t,a){var r=e.__events||(e.__events={}),n=r[t];n&&e.removeEventListener(t,n),e.addEventListener(t,r[t]=function(e){a&&a.call(this,e)})},Ia=function(e){var t=new Map;return e.forEach((function(e){return t.set(e,e)})),t},Ba=function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)},Aa=function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return function(e){t.forEach((function(t){Ba(t,e)}))}};function Va(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var a,r=Object(s.a)(e);if(t){var n=Object(s.a)(this).constructor;a=Reflect.construct(r,arguments,n)}else a=r.apply(this,arguments);return Object(i.a)(this,a)}}var Ha=function(e,t){var a={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(a[r[n]]=e[r[n]])}return a},La=function(e,t,a,r){void 0!==r&&r();var l=e.toLowerCase().split("-").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join(""),i=function(t){Object(o.a)(i,t);var r=Va(i);function i(e){var t;return Object(n.a)(this,i),(t=r.call(this,e)).setComponentElRef=function(e){t.componentEl=e},t}return Object(c.a)(i,[{key:"componentDidMount",value:function(){this.componentDidUpdate(this.props)}},{key:"componentDidUpdate",value:function(e){!function(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e instanceof Element){var r=Fa(e.classList,t,a);""!==r&&(e.className=r),Object.keys(t).forEach((function(a){if("children"!==a&&"style"!==a&&"ref"!==a&&"class"!==a&&"className"!==a&&"forwardedRef"!==a)if(0===a.indexOf("on")&&a[2]===a[2].toUpperCase()){var r=a.substring(2),n=r[0].toLowerCase()+r.substring(1);Ta(n)||Ma(e,n,t[a])}else{e[a]=t[a],"string"===Object(Ca.a)(t[a])&&e.setAttribute(Sa(a),t[a])}}))}}(this.componentEl,this.props,e)}},{key:"render",value:function(){var t=this.props,r=t.children,n=t.forwardedRef,c=t.style,l=(t.className,t.ref,Ha(t,["children","forwardedRef","style","className","ref"])),o=Object.keys(l).reduce((function(e,t){if(0===t.indexOf("on")&&t[2]===t[2].toUpperCase()){var a=t.substring(2).toLowerCase();"undefined"!=typeof document&&Ta(a)&&(e[t]=l[t])}else e[t]=l[t];return e}),{});a&&(o=a(this.props,o));var i=Object.assign(Object.assign({},o),{ref:Aa(n,this.setComponentElRef),style:c});return Na.a.createElement(e,i,r)}}],[{key:"displayName",get:function(){return l}}]),i}(Na.a.Component);return t&&(i.contextType=t),function(e,t){var a=function(t,a){return Na.a.createElement(e,Object.assign({},t,{forwardedRef:a}))};return a.displayName=t,Na.a.forwardRef(a)}(i,l)},Ua=La("presto-player"),Ga=wp.element;Ga.useRef,Ga.useEffect;function Wa(e){if(e){if(e.match(/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/))return"youtube";if(e.match(/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/([a-z]*\/)*([‌​0-9]{6,11})[?]?.*/))return"vimeo";if(e.indexOf("https://vz-")>-1&&e.indexOf("b-cdn.net")>-1)return"bunny";if(e.indexOf(".mp3")>-1)return"audio"}return"self-hosted"}function Za(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function za(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Za(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Za(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Ya=wp.data.useSelect,Qa=function(e){var t,a,r,n=e.src,c=e.classes,l=e.preset,o=e.branding,i=e.attributes,s=e.adminPreview,p=e.currentTime,u=e.preload,d=void 0===u?"metadata":u,f=e.overlays,m=e.type,b=i.chapters,h=i.mutedOverlay,y=i.mutedPreview,v=Ya((function(e){var t;return null===(t=e("presto-player/player"))||void 0===t?void 0:t.youtube()})),w=Ya((function(e){var t;return null===(t=e("presto-player/player"))||void 0===t?void 0:t.playerCSS()}));return React.createElement("div",{className:"wp-block-video presto-block-video",style:"audio"===m?za(za(za({"--presto-player-border-radius":"".concat(null==l?void 0:l.border_radius,"px")},null!=l&&l.background_color?{"--plyr-audio-controls-background":l.background_color}:{"--plyr-audio-controls-background":null==o?void 0:o.color}),null!=l&&l.control_color?{"--plyr-audio-control-color":l.control_color,"--plyr-range-thumb-background":l.control_color,"--plyr-range-fill-background":l.control_color,"--plyr-audio-progress-buffered-background":function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=e.replace("#","");3===a.length&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]);var r=parseInt(a.substring(0,2),16),n=parseInt(a.substring(2,4),16),c=parseInt(a.substring(4,6),16);return t>1&&t<=100&&(t/=100),"rgba("+r+","+n+","+c+","+t+")"}(l.control_color||(null==o?void 0:o.color)||"#00b3ff",.5)}:{"--plyr-audio-control-color":"#ffffff","--plyr-range-thumb-background":"#ffffff","--plyr-range-fill-background":"#ffffff"}),{},{"--plyr-range-thumb-shadow":"0px"}):za(za(za({"--presto-player-border-radius":"".concat(null==l?void 0:l.border_radius,"px")},null!=l&&l.caption_background?{"--plyr-captions-background":l.caption_background}:{}),null!=o&&o.color?{"--plyr-color-main":o.color}:{}),{},{"--presto-player-email-border-radius":"".concat((null==l||null===(t=l.email_collection)||void 0===t?void 0:t.border_radius)||0,"px"),"--presto-player-logo-width":"".concat((null==o?void 0:o.logo_width)||75,"px")})},React.createElement(Ua,{src:n,css:w,classes:c,currentTime:p,overlays:f,isAdmin:!0,preload:d,preset:l,bunny:{thumbnail:null==i?void 0:i.previewThumbnail,preview:null==i?void 0:i.preview},youtube:{channelId:null==v?void 0:v.channel_id},tracks:!(null==l||!l.captions)&&[{kind:"captions",label:"English",srclang:"en",src:"/path/to/captions.en.vtt",default:!0}],branding:o,chapters:b,blockAttributes:i,poster:i.poster,provider:"audio"===m?"audio":Wa(n),mediaTitle:i.title},React.createElement("div",{slot:"player-end"},(null==y?void 0:y.enabled)&&(null==h?void 0:h.enabled)&&React.createElement("div",{className:"presto-player__overlay is-image",style:{position:"absolute",width:"".concat((null==h?void 0:h.width)||100,"%"),left:"".concat(100*((null==h||null===(a=h.focalPoint)||void 0===a?void 0:a.x)||.5),"%"),top:"".concat(100*((null==h||null===(r=h.focalPoint)||void 0===r?void 0:r.y)||.5),"%")}},React.createElement("img",{src:null==h?void 0:h.src,style:{transform:"translateX(-50%) translateY(-50%)"}})),s)))};function Xa(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function qa(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Xa(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Xa(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Ja=wp.i18n.__,$a=wp.components,Ka=$a.Flex,er=$a.FlexBlock,tr=$a.FlexItem,ar=$a.Spinner,rr=$a.Button,nr=$a.TextControl,cr=wp.element,lr=cr.useEffect,or=cr.useState,ir=wp.apiFetch,sr=function(e){var t,a,n,c=e.route,l=e.startDate,o=e.endDate,i=e.setStartDate,s=e.setEndDate,p=or(!0),u=Object(r.a)(p,2),d=u[0],f=u[1],m=or({}),h=Object(r.a)(m,2),y=h[0],v=h[1],w=or(""),g=Object(r.a)(w,2),E=g[0],R=g[1],O=or(null),j=Object(r.a)(O,2),x=j[0],_=j[1],D=or(!1),P=Object(r.a)(D,2),k=P[0],N=P[1],S=function(){var e=Object(F.a)(M.a.mark((function e(){var t,a,r,n;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,e.next=4,ir({url:"".concat(null===(t=prestoPlayer)||void 0===t?void 0:t.root).concat(null===(a=prestoPlayer)||void 0===a?void 0:a.prestoVersionString,"videos/").concat(null==c||null===(r=c.params)||void 0===r?void 0:r.id)});case 4:n=e.sent,v(n),_(null==n?void 0:n.title),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(1),"rest_no_route"===e.t0.code&&R("Video Not Found");case 12:return e.prev=12,f(!1),e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[1,9,12,15]])})));return function(){return e.apply(this,arguments)}}(),C=function(){var e=Object(F.a)(M.a.mark((function e(){var t,a;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("New Video title ".concat(x)),f(!0),e.prev=2,t=qa(qa({},y),{title:x}),e.next=6,wp.apiFetch({method:"POST",url:wp.url.addQueryArgs("".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"videos/").concat(y.id),{_method:"PUT"}),data:t});case 6:if(a=e.sent){e.next=9;break}throw genericError;case 9:N(!1),v(a),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),R(null!==e.t0&&void 0!==e.t0&&e.t0.message?e.t0.message:genericError);case 16:return e.prev=16,f(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,13,16,19]])})));return function(){return e.apply(this,arguments)}}(),T=function(){_(null==y?void 0:y.title),N(!1)};return lr((function(){S()}),[]),E?React.createElement("div",{className:"presto-flow"},React.createElement(Ka,null,React.createElement(er,null,React.createElement("h2",null,E)))):React.createElement("div",{className:"presto-flow"},React.createElement(Ka,null,React.createElement(er,null,React.createElement(rr,{isSecondary:!0,onClick:function(){b.push("#/")}},"← ",Ja("Back to Dashboard","presto-player")))),React.createElement(Ka,{wrap:!0},React.createElement(er,null,d?React.createElement(ar,null):k?React.createElement("div",{className:"presto-inline-edit presto-inline-edit--editing"},React.createElement(nr,{className:"presto-inline-edit__input",type:"text",value:x,onChange:function(e){return _(e)}}),React.createElement(rr,{className:"presto-inline-edit__button",isPrimary:!0,onClick:C}," ","Save"," "),React.createElement(rr,{className:"presto-inline-edit__button",isSecondary:!0,onClick:T}," ","Cancel"," ")):React.createElement("div",{className:"presto-inline-edit"},React.createElement("h1",{className:"presto-dashboard__title presto-inline-edit__text"},null==y?void 0:y.title),React.createElement("button",{className:"presto-inline-edit__edit",onClick:function(){return N(!0)}},React.createElement("span",{className:"dashicon dashicons dashicons-edit"})))),React.createElement(tr,null,React.createElement(mt,{startDate:l,setStartDate:i,endDate:o,setEndDate:s}))),React.createElement("div",{className:"presto-dashboard presto-flow"},React.createElement("div",{className:"presto-dashboard__row"},React.createElement("div",{className:"presto-dashboard__item is-large"},React.createElement(Pa,{video_id:null==c||null===(t=c.params)||void 0===t?void 0:t.id,startDate:l,endDate:o})),React.createElement("div",{className:"presto-dashboard__item"},!!Object.keys(y||{}).length&&React.createElement(Qa,{src:null==y?void 0:y.src,attributes:{title:y.title},type:Wa(y.src),preset:{"play-large":!0,play:!0,progress:!0,rewind:!0,"fast-forward":!0,"current-time":!0,background_color:"#8421cb",volume:!0,mute:!0,i18n:window.prestoPlayer.i18n}})),React.createElement("div",{className:"presto-dashboard__item"},React.createElement(ba,{video_id:null==c||null===(a=c.params)||void 0===a?void 0:a.id,startDate:l,endDate:o}))),React.createElement("div",{className:"presto-dashboard__row"},React.createElement("div",{className:"presto-dashboard__item is-large"},React.createElement(ja,{video_id:null==c||null===(n=c.params)||void 0===n?void 0:n.id,startDate:l,endDate:o})))))},pr={dashboard:{path:"/"},video:{path:"/video/:id"},user:{path:"/user/:id"}},ur=wp.element.useState,dr=function(){var e,t=function(){window.scrollTo(0,0)},a=ur(new Date(Date.now()-6048e5)),n=Object(r.a)(a,2),c=n[0],l=n[1],o=ur(new Date),i=Object(r.a)(o,2),s=i[0],p=i[1];return null!==(e=prestoPlayer)&&void 0!==e&&e.isPremium?React.createElement("div",{className:"presto-dashboard__content"},React.createElement(j,{routes:pr},React.createElement(g,{path:pr.dashboard.path,onRoute:t},React.createElement(Dt,{startDate:c,endDate:s,setStartDate:l,setEndDate:p})),React.createElement(g,{path:pr.video.path,onRoute:t},React.createElement(sr,{startDate:c,endDate:s,setStartDate:l,setEndDate:p})),React.createElement(g,{path:pr.user.path,onRoute:t},React.createElement(ua,{startDate:c,endDate:s,setStartDate:l,setEndDate:p})))):React.createElement("div",{className:"presto-dashboard__content"},React.createElement(S,null))};(0,wp.element.render)(React.createElement(dr,null),document.getElementById("presto-analytics-page"))}},[[26,1,2]]]);
19
- //# sourceMappingURL=admin-5a5a1db1.js.map
16
  * A zero setup Webpack Bundler Script for WordPress
17
  */
18
  (window.wpackioprestoPlayeranalyticsJsonp=window.wpackioprestoPlayeranalyticsJsonp||[]).push([[0],{23:function(e,t){e.exports=window.wp.apiFetch},24:function(e,t){e.exports=window.wp.components},26:function(e,t,a){a(27),e.exports=a(38)},38:function(e,t,a){"use strict";a.r(t);var r=a(1),n=a(12),c=a(13),l=a(14),o=a(15),i=a(17),s=a(10),p=a(4),u=a(21),d=a.n(u);function f(e){return{path:e.pathname,hash:e.hash,query:d.a.parse(e.search)}}var m=a(25),b=Object(m.a)(),h=wp.element.createContext({route:f(b.location)}),y=a(8),v=wp.element.useContext,w="";function g(e){var t=e.path,a=e.onRoute,r=e.children,n=v(h).route,c=Object(y.a)("".concat(t))("".concat(n.hash.substr(1)));return c?(a&&(w!==c.path&&a(),w=c.path),React.createElement("div",null,wp.element.cloneElement(r,{route:c}))):null}var E=a(18),R=a.n(E);wp.element.useContext;function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var a,r=Object(s.a)(e);if(t){var n=Object(s.a)(this).constructor;a=Reflect.construct(r,arguments,n)}else a=r.apply(this,arguments);return Object(i.a)(this,a)}}var j=function(e){Object(o.a)(a,e);var t=O(a);function a(e){var r;Object(n.a)(this,a),r=t.call(this,e),Object(p.a)(Object(l.a)(r),"handleRouteChange",(function(e){var t=f(null==e?void 0:e.location);r.setState({route:t})})),r.routes=Object.keys(e.routes).map((function(t){return e.routes[t].path})),r.unlisten=b.listen(r.handleRouteChange);var c=f(b.location);return r.state={route:c,defaultRoute:null!=e&&e.defaultRoute?"#".concat(null==e?void 0:e.defaultRoute):"#/"},r}return Object(c.a)(a,[{key:"componentWillUnmount",value:function(){this.unlisten()}},{key:"render",value:function(){var e=this.props,t=e.children,a=(e.NotFound,this.state),r=a.route,n=a.defaultRoute;if(!r.hash)return b.push(n),React.createElement("div",null);var c=!1;(this.routes||[]).forEach((function(e){var t=Object(y.a)(r.hash.substr(1))("".concat(r.hash.substr(1)));t&&(c={name:e,data:t})}));var l={route:r,matched:c},o=!c;return React.createElement(h.Provider,{value:l},o?React.createElement("div",null,"Not found"):t)}}]),a}(wp.element.Component),x=function(e){var t=e.width,a=e.height;return React.createElement("svg",{id:"e8f68bdd-4984-4f2e-95b7-7fc8ec281257","data-name":"Layer 1",width:t,height:a,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 918.14 765.54"},React.createElement("defs",null,React.createElement("linearGradient",{id:"27aa7b70-b106-4a00-be67-693c8380e41d",x1:"397.74",y1:"717.25",x2:"397.74",y2:"86.11",gradientUnits:"userSpaceOnUse"},React.createElement("stop",{offset:"0","stop-color":"gray","stop-opacity":"0.25"}),React.createElement("stop",{offset:"0.54","stop-color":"gray","stop-opacity":"0.12"}),React.createElement("stop",{offset:"1","stop-color":"gray","stop-opacity":"0.1"})),React.createElement("linearGradient",{id:"46a816da-c484-41ec-8a6f-fbf14454d910",x1:"288.88",y1:"378.44",x2:"288.88",y2:"209.65",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"32b634d8-28f1-48d9-a868-f602a2cad942",x1:"288.88",y1:"328.29",x2:"288.88",y2:"223.1",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("clipPath",{id:"7a4c6aff-0be0-461b-a111-b3ae1b8fbf73",transform:"translate(-140.93 -67.23)"},React.createElement("rect",{id:"8cc91f6d-19b0-43cc-9c18-2faa83ac34ba","data-name":"<Rectangle>",x:"354.51",y:"291.55",width:"150.6",height:"101.52",fill:"#fff"})),React.createElement("linearGradient",{id:"38f1cb81-8fac-4205-a0ff-a33ac00d354c",x1:"288.88",y1:"594.94",x2:"288.88",y2:"426.14",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"6fc01aaf-135e-403e-a209-43b2a4fe59f1",x1:"288.88",y1:"544.79",x2:"288.88",y2:"439.6",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("clipPath",{id:"79ce363a-d134-40e4-9f82-b96d04a36978",transform:"translate(-140.93 -67.23)"},React.createElement("rect",{id:"5b44e697-61fe-43bd-9a58-5f3e41301748","data-name":"<Rectangle>",x:"354.51",y:"508.05",width:"150.6",height:"101.52",fill:"#fff"})),React.createElement("linearGradient",{id:"54803c44-522d-4b9e-9a34-f1f7b43e8483",x1:"671.57",y1:"760.34",x2:"671.57",y2:"129.2",gradientTransform:"translate(1109.43 -194.1) rotate(90)",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"089a6a47-adaa-499b-aefb-cd6464b62fb8",x1:"670.96",y1:"553.63",x2:"670.96",y2:"387.28",gradientTransform:"translate(1129.51 -168.41) rotate(90)",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"fd8d88e0-7826-450d-9e0b-001d1be709c2",x1:"637.66",y1:"754.12",x2:"637.66",y2:"601.05",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"8d1793c5-b76e-44e2-a52e-569460402331",x1:"778.37",y1:"673.86",x2:"778.37",y2:"569.13",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"}),React.createElement("linearGradient",{id:"4745700d-8097-45ff-9f71-625443fc4ad8",x1:"778.37",y1:"774.41",x2:"778.37",y2:"713.66",xlinkHref:"#27aa7b70-b106-4a00-be67-693c8380e41d"})),React.createElement("title",null,"secure data"),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"162.9",y:"86.11",width:"469.69",height:"631.14",fill:"url(#27aa7b70-b106-4a00-be67-693c8380e41d)"})),React.createElement("rect",{x:"169.02",y:"94.67",width:"455.01",height:"609.12",fill:"#f2f2f2"}),React.createElement("rect",{x:"204.49",y:"120.36",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"204.49",y:"142.37",width:"156.56",height:"4.89",fill:"#6c63ff",opacity:"0.7"}),React.createElement("rect",{x:"384.29",y:"120.36",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"408.75",y:"259.8",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"412.42",y:"273.25",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"419.76",y:"286.7",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"408.75",y:"476.29",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"412.42",y:"489.75",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("rect",{x:"419.76",y:"503.2",width:"156.56",height:"4.89",fill:"#e0e0e0"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"205.71",y:"209.65",width:"166.35",height:"168.79",fill:"url(#46a816da-c484-41ec-8a6f-fbf14454d910)"})),React.createElement("rect",{x:"206.76",y:"213.32",width:"163.72",height:"161.45",fill:"#f5f5f5"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"212.53",y:"223.1",width:"152.7",height:"105.19",fill:"url(#32b634d8-28f1-48d9-a868-f602a2cad942)"})),React.createElement("rect",{id:"689f37f3-cc41-448d-b172-63ec123bc985","data-name":"<Rectangle>",x:"213.58",y:"224.32",width:"150.6",height:"101.52",fill:"#fff"}),React.createElement("g",{"clip-path":"url(#7a4c6aff-0be0-461b-a111-b3ae1b8fbf73)"},React.createElement("polygon",{points:"200.82 322.18 238.74 263.46 254.64 289.15 288.88 253.68 318.24 289.15 343.93 236.56 409.98 341.75 195.93 334.41 200.82 322.18",fill:"#6c63ff",opacity:"0.4"}),React.createElement("circle",{cx:"230.17",cy:"239",r:"11.01",fill:"#6c63ff",opacity:"0.4"})),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"205.71",y:"426.14",width:"166.35",height:"168.79",fill:"url(#38f1cb81-8fac-4205-a0ff-a33ac00d354c)"})),React.createElement("rect",{x:"206.76",y:"429.81",width:"163.72",height:"161.45",fill:"#f5f5f5"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"212.53",y:"439.6",width:"152.7",height:"105.19",fill:"url(#6fc01aaf-135e-403e-a209-43b2a4fe59f1)"})),React.createElement("rect",{id:"b429ac3a-f8a8-4171-bcce-5b6c002c0714","data-name":"<Rectangle>",x:"213.58",y:"440.82",width:"150.6",height:"101.52",fill:"#fff"}),React.createElement("g",{"clip-path":"url(#79ce363a-d134-40e4-9f82-b96d04a36978)"},React.createElement("polygon",{points:"200.82 538.67 238.74 479.96 254.64 505.65 288.88 470.18 318.24 505.65 343.93 453.05 409.98 558.24 195.93 550.9 200.82 538.67",fill:"#bdbdbd",opacity:"0.4"}),React.createElement("circle",{cx:"230.17",cy:"455.5",r:"11.01",fill:"#bdbdbd",opacity:"0.4"})),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"349.09",y:"242.63",width:"631.14",height:"469.69",transform:"translate(-74.16 969.06) rotate(-78.76)",fill:"url(#54803c44-522d-4b9e-9a34-f1f7b43e8483)"})),React.createElement("rect",{x:"359.37",y:"247.33",width:"609.12",height:"455.01",transform:"translate(-72.16 966.22) rotate(-78.76)",fill:"#fff"}),React.createElement("rect",{x:"523.5",y:"197.22",width:"322.91",height:"4.89",transform:"translate(-88.86 -196.94) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"433.36",y:"650.7",width:"322.91",height:"4.89",transform:"translate(-2.18 -170.66) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"428.58",y:"671.14",width:"249.52",height:"4.89",transform:"translate(1.01 -162.18) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"424.6",y:"683.47",width:"92.96",height:"4.89",transform:"translate(1.84 -145.91) rotate(11.24)",fill:"#6c63ff",opacity:"0.7"}),React.createElement("rect",{x:"519.57",y:"209.08",width:"161.45",height:"4.89",transform:"translate(-88.17 -180.2) rotate(11.24)",fill:"#6c63ff",opacity:"0.7"}),React.createElement("rect",{x:"512.84",y:"249.31",width:"291.11",height:"4.89",transform:"translate(-79.21 -190.76) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"509.47",y:"255.44",width:"70.94",height:"4.89",transform:"translate(-80.19 -168.52) rotate(11.24)",fill:"#3ad29f",opacity:"0.7"}),React.createElement("rect",{x:"501.56",y:"307.59",width:"322.91",height:"4.89",transform:"translate(-67.76 -190.54) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"575.87",y:"357.6",width:"166.35",height:"289.88",transform:"translate(-103.27 983.74) rotate(-78.76)",fill:"url(#089a6a47-adaa-499b-aefb-cd6464b62fb8)"})),React.createElement("rect",{x:"516.06",y:"420.61",width:"286.22",height:"162.68",transform:"translate(-30.42 -186.11) rotate(11.24)",fill:"#fff"}),React.createElement("rect",{x:"496.08",y:"335.18",width:"322.91",height:"4.89",transform:"translate(-62.49 -188.94) rotate(11.24)",fill:"#e0e0e0"}),React.createElement("rect",{x:"547.86",y:"424.02",width:"35.47",height:"118.64",transform:"translate(-35.84 -168.22) rotate(11.24)",fill:"#6c63ff"}),React.createElement("rect",{x:"606.43",y:"475.19",width:"35.47",height:"79.5",transform:"translate(-28.56 -179.03) rotate(11.24)",fill:"#3ad29f"}),React.createElement("rect",{x:"665.23",y:"523.93",width:"35.47",height:"42.81",transform:"translate(-21.5 -189.92) rotate(11.24)",fill:"#f55f44"}),React.createElement("rect",{x:"731.91",y:"492.72",width:"35.47",height:"86.84",transform:"translate(-22.02 -203.09) rotate(11.24)",fill:"#fdd835"}),React.createElement("g",{opacity:"0.5"},React.createElement("rect",{x:"128.65",y:"645.09",width:"3.67",height:"20.79",fill:"#47e6b1"}),React.createElement("rect",{x:"269.58",y:"712.31",width:"3.67",height:"20.79",transform:"translate(853.2 384.07) rotate(90)",fill:"#47e6b1"})),React.createElement("path",{d:"M699.44,75.56a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,699.44,75.56Z",transform:"translate(-140.93 -67.23)",fill:"#4d8af0",opacity:"0.5"}),React.createElement("path",{d:"M286.33,179.4a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,286.33,179.4Z",transform:"translate(-140.93 -67.23)",fill:"#fdd835",opacity:"0.5"}),React.createElement("path",{d:"M253.63,484.46a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,253.63,484.46Z",transform:"translate(-140.93 -67.23)",fill:"#fdd835",opacity:"0.5"}),React.createElement("circle",{cx:"337.81",cy:"28.62",r:"7.34",fill:"#f55f44",opacity:"0.5"}),React.createElement("circle",{cx:"7.34",cy:"317.46",r:"7.34",fill:"#f55f44",opacity:"0.5"}),React.createElement("circle",{cx:"863.76",cy:"120.36",r:"7.34",fill:"#f55f44",opacity:"0.5"}),React.createElement("circle",{cx:"822.17",cy:"339.3",r:"7.34",fill:"#4d8af0",opacity:"0.5"}),React.createElement("circle",{cx:"37.68",cy:"145.22",r:"7.34",fill:"#47e6b1",opacity:"0.5"}),React.createElement("circle",{cx:"853.29",cy:"647.34",r:"7.34",fill:"#47e6b1",opacity:"0.5"}),React.createElement("circle",{cx:"910.8",cy:"430.97",r:"7.34",fill:"#47e6b1",opacity:"0.5"}),React.createElement("rect",{x:"544.42",y:"601.05",width:"186.48",height:"153.07",fill:"url(#fd8d88e0-7826-450d-9e0b-001d1be709c2)"}),React.createElement("path",{d:"M723.82,639a54.55,54.55,0,0,1,109.1,0v34.91h15.27V639a69.82,69.82,0,0,0-139.65,0v34.91h15.27Z",transform:"translate(-140.93 -67.23)",fill:"url(#8d1793c5-b76e-44e2-a52e-569460402331)"}),React.createElement("path",{d:"M726,638.25a52.37,52.37,0,1,1,104.74,0v33.52H845.4V638.25a67,67,0,0,0-134.06,0v33.52H726Z",transform:"translate(-140.93 -67.23)",fill:"#f5f5f5"}),React.createElement("rect",{x:"546.32",y:"602.45",width:"182.24",height:"148.73",fill:"#6c63ff"}),React.createElement("rect",{x:"546.32",y:"602.45",width:"182.24",height:"148.73",fill:"#f5f5f5"}),React.createElement("rect",{x:"546.32",y:"631.77",width:"182.24",height:"90.07",fill:"#6c63ff"}),React.createElement("path",{d:"M791.73,727a13.36,13.36,0,1,0-23.08,9.15v28.51a9.72,9.72,0,0,0,19.44,0V736.18A13.3,13.3,0,0,0,791.73,727Z",transform:"translate(-140.93 -67.23)",fill:"url(#4745700d-8097-45ff-9f71-625443fc4ad8)"}),React.createElement("path",{d:"M789.89,729.38a11.52,11.52,0,1,0-19.9,7.89v24.58a8.38,8.38,0,1,0,16.76,0V737.27A11.47,11.47,0,0,0,789.89,729.38Z",transform:"translate(-140.93 -67.23)",opacity:"0.2"}))},_=wp.i18n.__,D=wp.components,P=D.Flex,k=D.FlexItem,N=D.FlexBlock,S=function(){return React.createElement(P,{style:{padding:"30px",background:"#fff"}},React.createElement(k,null,React.createElement(x,{width:"250px"})),React.createElement(N,{style:{marginLeft:"20px"}},React.createElement("h1",null,_("Get detailed video insights.","presto-player")),React.createElement("p",null,_("Upgrade to Pro and get video insights like plays, watch-time, and drop off numbers.","presto-player")),React.createElement("a",{href:"https://prestoplayer.com",target:"_blank",className:"button button-primary"},_("Learn More","presto-player"))))},C=a(11),F=a(5),T=a(3),M=a.n(T);function I(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function B(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?I(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):I(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}wp.i18n.__;var A=wp.apiFetch,V=wp.element.useState,H=wp.compose.createHigherOrderComponent,L=function(){return H((function(e){return function(t){var a=V(!1),n=Object(r.a)(a,2),c=n[0],l=n[1],o=V(1),i=Object(r.a)(o,2),s=i[0],p=i[1],u=V(0),d=Object(r.a)(u,2),f=d[0],m=d[1],b=V(0),h=Object(r.a)(b,2),y=h[0],v=h[1],w=V([]),g=Object(r.a)(w,2),E=g[0],R=g[1],O=V(""),j=Object(r.a)(O,2),x=j[0],_=j[1],D=function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r,n,c;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.endpoint,r=t.params,n=void 0===r?{}:r,l(!0),e.prev=2,e.next=5,A({path:wp.url.addQueryArgs(a,B({page:s,per_page:5},n)),parse:!1}).then((function(e){var t=e.headers?parseInt(e.headers.get("X-WP-Total")):0,a=e.headers?parseInt(e.headers.get("X-WP-TotalPages")):0;return m(t),v(a),e.json()}));case 5:c=e.sent,R(c),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),null!==e.t0&&void 0!==e.t0&&e.t0.message&&_(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[2,9,13,16]])})));return function(t){return e.apply(this,arguments)}}();return React.createElement(e,Object.assign({loading:c,setLoading:l,fetchData:D,page:s,setPage:p,total:f,setTotal:m,totalPages:y,setTotalPages:v,data:E,setData:R,error:x,setError:_},t))}}),"withDataList")},U=wp.i18n,G=U.__,W=U.sprintf,Z=function(e){var t=(new Date).getTimezoneOffset();return new Date(e.getTime()-60*t*1e3).toISOString().split("T")[0]+"T00:00:00.000Z"},z=wp.components,Y=z.Spinner,Q=z.Flex,X=z.FlexItem,q=function(e){var t=e.height,a=void 0===t?100:t;return React.createElement(Q,{style:{height:"".concat(a,"px")},align:"center",justify:"center"},React.createElement(X,null,React.createElement(Y,null)))},J=wp.i18n.__,$=wp.components,K=$.Card,ee=$.CardBody,te=$.Flex,ae=$.FlexBlock,re=$.Button,ne=$.ButtonGroup,ce=wp.element,le=ce.useState,oe=ce.useEffect,ie=function(e){var t=e.page,a=e.setPage,n=e.perPage,c=e.total,l=e.totalPages,o=le(!1),i=Object(r.a)(o,2),s=i[0],p=i[1],u=le(!1),d=Object(r.a)(u,2),f=d[0],m=d[1],b=le(0),h=Object(r.a)(b,2),y=h[0],v=h[1],w=le(0),g=Object(r.a)(w,2),E=g[0],R=g[1];oe((function(){v(Math.min(n*t,c)),R(n*(t-1)+1)}),[n,t,c]);return oe((function(){p(t-1>0),m(l>=t+1)}),[t,l]),React.createElement(K,{size:"large",className:"presto-card pagination"},React.createElement(ee,{className:"presto-flow"},React.createElement(te,null,React.createElement(ae,null,sprintf(J("Showing %1s to %2s of %3s","presto-player"),E,y,c)),React.createElement(ae,null,React.createElement(te,{justify:"flex-end"},React.createElement(ne,null,React.createElement(re,{isSecondary:!0,disabled:!s,onClick:function(){a(Math.max(t-1,0))}},J("Previous","presto-player")),React.createElement(re,{isSecondary:!0,disabled:!f,onClick:function(){a(Math.min(l,t+1))}},J("Next","presto-player"))))))))},se=wp.i18n.__,pe=wp.element,ue=(pe.useRef,pe.useEffect,pe.useState,wp.components),de=ue.Card,fe=ue.CardBody,me=(ue.Flex,ue.FlexBlock,ue.Button,ue.ButtonGroup,function(e){var t=e.columns,a=e.data,r=e.onRowClick,n=e.title;return a.length?React.createElement(de,{size:"large",className:"presto-card table-card"},React.createElement(fe,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},n),React.createElement("table",{role:"table",className:R()("presto-table",{"is-clickable":r})},React.createElement("thead",{role:"rowgroup"},React.createElement("tr",{role:"row"},t&&t.map((function(e){return React.createElement("th",{key:e.key,role:"columnheader"},e.label)})))),React.createElement("tbody",{role:"rowgroup"},a.map((function(e,a){return React.createElement("tr",{role:"row",key:"row-".concat(a),onClick:function(){return r&&r(e)}},t.map((function(t,r){return React.createElement("td",{role:"cell","data-title":t.label,key:"row-".concat(a,"-").concat(r),"aria-label":t.label},t.render?t.render(e):React.createElement("div",null,t.value(e)))})))})))))):React.createElement(de,{size:"large",className:"presto-card table-card"},React.createElement(fe,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},n),React.createElement("div",{style:{opacity:.65}},se("No data available.","presto-player"))))}),be=wp.i18n.__,he=wp.element,ye=(he.useEffect,he.useState,wp.components),ve=ye.Card,we=ye.CardBody,ge=function(e){var t=e.perPage,a=void 0===t?10:t,r=e.title,n=e.page,c=e.setPage,l=e.loading,o=e.total,i=e.totalPages,s=e.columns,p=e.data,u=e.onSelect;return l?React.createElement(ve,null,React.createElement(q,null)):null!=p&&p.length?React.createElement("div",{className:"datatable"},React.createElement(me,{data:p,columns:s,perPage:a,onRowClick:u,title:r}),!!o&&React.createElement(ie,{page:n,setPage:c,perPage:a,total:o,totalPages:i})):React.createElement(ve,{size:"large",className:"presto-card"},React.createElement(we,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},r),React.createElement("div",{style:{opacity:.65}},be("No data available.","presto-player"))))};function Ee(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function Re(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Ee(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Oe=wp.i18n.__,je=wp.element.useEffect,xe=(0,wp.compose.compose)([L()])((function(e){var t=e.loading,a=e.page,r=e.setPage,n=e.total,c=e.totalPages,l=e.data,o=e.error,i=e.fetchData,s=e.startDate,p=e.endDate;je((function(){i({endpoint:"/presto-player/v1/analytics/top-users",params:Re(Re({per_page:5},s?{start:Z(s)}:{}),p?{end:Z(p)}:{})})}),[a,s,p]);var u=[{key:"name",label:Oe("Name","presto-player"),value:function(e){var t;return null==e||null===(t=e.user)||void 0===t?void 0:t.name}},{key:"total_view",label:Oe("Total View","presto-player"),value:function(e){var t,a;return null==e||null===(t=e.stats)||void 0===t||null===(a=t[0])||void 0===a?void 0:a.data}},{key:"avg_view_time",label:Oe("Avg View Time","presto-player"),render:function(e){var t,a;return React.createElement("div",{className:"presto-badge"},null==e||null===(t=e.stats)||void 0===t||null===(a=t[1])||void 0===a?void 0:a.data)}}];return o?{error:o}:React.createElement(ge,{title:Oe("Top Users","presto-player"),page:a,perPage:5,setPage:r,loading:t,total:n,totalPages:c,columns:u,data:l,onSelect:function(e){var t,a;return a=null==e||null===(t=e.user)||void 0===t?void 0:t.id,void b.push("#/user/".concat(a))}})}));function _e(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function De(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?_e(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):_e(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Pe=wp.i18n.__,ke=wp.element.useEffect,Ne=(0,wp.compose.compose)([L()])((function(e){var t=e.loading,a=e.page,r=e.setPage,n=e.total,c=e.totalPages,l=e.data,o=e.error,i=e.fetchData,s=e.startDate,p=e.endDate,u=e.userId;ke((function(){i({endpoint:"/presto-player/v1/analytics/top-videos",params:De(De(De({per_page:10},s?{start:Z(s)}:{}),p?{end:Z(p)}:{}),u?{user_id:u}:{})})}),[a,s,p]);var d=[{key:"name",label:Pe("Name","presto-player"),render:function(e){return React.createElement("h3",{style:{marginBottom:0,wordBreak:"break-all"}},e.video.title?e.video.title:Pe("Untitled","presto-player"))}},{key:"total_view",label:Pe("Total View","presto-player"),value:function(e){return e.stats[0].data}},{key:"avg_view_time",label:Pe("Avg View Time","presto-player"),render:function(e){return React.createElement("div",{className:"presto-badge"},e.stats[1].data)}},{key:"view_more",label:"",render:function(e){return React.createElement("span",{style:{color:"var(--wp-admin-theme-color, #007cba)"}},Pe("View Details","presto-player")," →")}}];return o?{error:o}:React.createElement(ge,{title:Pe("Top Media","presto-player"),perPage:10,page:a,setPage:r,loading:t,total:n,totalPages:c,columns:d,data:l,onSelect:function(e){var t,a;a=null==e||null===(t=e.video)||void 0===t?void 0:t.id,b.push("#/video/".concat(a))}})})),Se=wp.apiFetch;Se.use(Se.createNonceMiddleware(prestoPlayer.nonce)),Se.use(Se.createRootURLMiddleware(prestoPlayer.root+prestoPlayer.prestoVersionString));var Ce=Se,Fe=a(9),Te=a.n(Fe);function Me(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function Ie(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Me(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Me(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Be,Ae=wp.i18n,Ve=Ae.__,He=Ae.sprintf,Le=wp.components,Ue=(Le.Card,Le.CardBody),Ge=wp.element,We=Ge.useState,Ze=Ge.useEffect,ze=(Ge.useRef,function(e){var t=We(!0),a=Object(r.a)(t,2),n=a[0],c=a[1],l=We(0),o=Object(r.a)(l,2),i=o[0],s=o[1],p=e.startDate,u=e.endDate,d=We([{name:"Views",data:[]}]),f=Object(r.a)(d,2),m=f[0],b=f[1],h={options:{chart:{toolbar:{show:!1}},yaxis:{min:0,labels:{formatter:function(e){return e<1?0:Math.abs(e)>999?Math.sign(e)*(Math.abs(e)/1e3).toFixed(1)+"k":Math.sign(e)*Math.abs(e).toFixed(0)}}},colors:["#7c3aed"],xaxis:{type:"datetime",min:new Date(p).setHours(0,0,0,0),max:new Date(u).setHours(23,59,59,999)},dataLabels:{enabled:!1},stroke:{curve:"smooth"},fill:{type:"gradient",gradient:{shadeIntensity:1,opacityFrom:.7,opacityTo:.9,stops:[0,90,100]}}}};Ze((function(){y()}),[e]);var y=function(){c(!0),Ce({path:"/presto-player/v1/analytics/views?"+jQuery.param(Ie(Ie({},p?{start:Z(p)}:{}),u?{end:Z(u)}:{})),parse:!1}).then(function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s(t.headers&&t.headers.get("X-WP-Total")),e.next=3,t.json();case 3:a=e.sent,r=[],a.length&&a.forEach((function(e){r.push({x:e.date_time,y:e.total})})),b([{name:"Views",data:r}]);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error(e)})).finally((function(){c(!1)}))};return n?React.createElement(Ue,null,React.createElement(q,null)):React.createElement(Ue,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},He(Ve("%d Unique Views","presto-player"),i)),React.createElement(Te.a,{options:h.options,series:m,type:"area",height:280}))}),Ye=wp.i18n,Qe=Ye.__,Xe=Ye.sprintf,qe=wp.components,Je=(qe.Card,qe.CardBody),$e=wp.element,Ke=$e.useState,et=$e.useEffect,tt=($e.useRef,function(e){var t=Ke(!0),a=Object(r.a)(t,2),n=a[0],c=a[1],l=Ke(0),o=Object(r.a)(l,2),i=o[0],s=o[1],p=e.startDate,u=e.endDate,d=Ke([{name:"Views",data:[]}]),f=Object(r.a)(d,2),m=f[0],b=f[1],h={options:{chart:{toolbar:{show:!1}},yaxis:{labels:{formatter:function(e){return Math.abs(e)>999?Math.sign(e)*(Math.abs(e)/1e3).toFixed(1)+"k min":(Math.sign(e)*Math.abs(e)).toFixed(1)+"min"}}},colors:["#7c3aed"],xaxis:{type:"datetime",min:new Date(p).setHours(0,0,0,0),max:new Date(u).setHours(23,59,59,999)},dataLabels:{enabled:!1},stroke:{curve:"smooth"},fill:{type:"gradient",gradient:{shadeIntensity:1,opacityFrom:.7,opacityTo:.9,stops:[0,90,100]}}}};et((function(){R()}),[e]);var y,v,w,g,E,R=function(){c(!0),Ce({path:"/presto-player/v1/analytics/watch-time?"+jQuery.param({start:Z(p),end:Z(u)}),parse:!1}).then(function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r,n,c;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.json();case 2:a=e.sent,r=a.data,n=a.average,s(parseFloat(n)),c=[],r.length&&r.forEach((function(e){c.push({x:e.date_time,y:(e.total/60).toFixed(2)})})),b([{name:"Watch Time",data:c}]);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error(e)})).finally((function(){c(!1)}))};return n?React.createElement(Je,null,React.createElement(q,null)):React.createElement(Je,{className:"presto-flow"},React.createElement("div",{className:"presto-card__title"},Xe(Qe("%s average watch time","presto-player"),(y=i,v=Math.floor(y/60/60),w=Math.floor(y/60)-60*v,g=y%60,E="",v&&(E+=W(G("%d hours","presto-player"),v)+", "),w&&(E+=W(G("%d minutes","presto-player"),w)+" "),(v||w)&&g&&(E+=G("and","presto-player")+" "),E+=W(G("%d seconds","presto-player"),g)))),React.createElement(Te.a,{options:h.options,series:m,type:"area",height:280}))}),at=wp.i18n.__,rt=wp.components,nt=rt.Panel,ct=rt.TabPanel,lt=function(e){var t=e.startDate,a=e.endDate;return React.createElement(nt,null,React.createElement(ct,{className:"presto-module-tabs",onSelect:function(){},tabs:[{name:"views",title:at("Views","presto-player")},{name:"watch",title:at("Watch Time","presto-player")}]},(function(e){switch(e.name){case"views":return React.createElement(ze,{startDate:t,endDate:a});case"watch":return React.createElement(tt,{startDate:t,endDate:a});default:return React.createElement(React.Fragment,null,"Not Found")}})))},ot=a(22),it=a.n(ot),st=(a(35),wp.i18n.__),pt=wp.element,ut=pt.useRef,dt=pt.useEffect,ft=pt.useState,mt=function(e){var t=e.startDate,a=e.setStartDate,n=e.endDate,c=e.setEndDate,l=ut(),o=ft(25),i=Object(r.a)(o,2),s=i[0],p=i[1];return dt((function(){new it.a({element:null==l?void 0:l.current,singleMode:!1,format:"MMMM D YYYY",autoApply:!1,plugins:["ranges"],maxDate:new Date,numberOfMonths:2,buttonText:{apply:st("Apply","presto-player"),cancel:st("Cancel","presto-player")},dropdowns:{minYear:1990,maxYear:null,months:!0,years:!0},setup:function(e){e.setDateRange(t,n),e.on("button:apply",(function(e,t){a(e.dateInstance),c(t.dateInstance),p(l.current.value.length)}))}})}),[l]),React.createElement("div",{className:"component-base-control"},React.createElement("div",{className:"components-base-control__field"},React.createElement("input",{className:"components-text-control__input presto-settings__date-select",ref:l,size:s})))},bt=a(23),ht=a.n(bt),yt=a(24),vt=a(0),wt=wp.i18n.__,gt=wp.components,Et=gt.Flex,Rt=gt.FlexBlock,Ot=gt.FlexItem,jt=wp.element,xt=jt.useState,_t=jt.useEffect,Dt=function(e){var t=e.startDate,a=e.endDate,n=e.setStartDate,c=e.setEndDate,l=xt(!1),o=Object(r.a)(l,2),i=o[0],s=o[1];return _t((function(){ht()({path:"/wp/v2/settings"}).then((function(e){var t;!1===(null==e||null===(t=e.presto_player_analytics)||void 0===t?void 0:t.enable)&&s(!0)}))}),[]),Object(vt.b)(React.Fragment,null,i?Object(vt.b)(Pt,null):"",Object(vt.b)(Et,null,Object(vt.b)(Rt,null,Object(vt.b)("h1",null,wt("Analytics","presto-player"))),Object(vt.b)(Ot,null,Object(vt.b)(mt,{startDate:t,setStartDate:n,endDate:a,setEndDate:c}))),Object(vt.b)("div",{className:"presto-flow"},Object(vt.b)("div",{className:"presto-dashboard"},Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item is-large"},Object(vt.b)(lt,{startDate:t,endDate:a})),Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(xe,{startDate:t,endDate:a}))),Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item is-large"},Object(vt.b)(Ne,{startDate:t,endDate:a}))))))},Pt=function(){return Object(vt.b)(yt.Notice,{css:Object(vt.a)(Be||(Be=Object(C.a)(["\n margin: 0 0 1em 0 !important;\n "]))),status:"warning",isDismissible:!1},Object(vt.b)("p",null,wt("Analytics are currently disabled. To collect analytics, turn them on in your settings page.","presto-player")))},kt=wp.components,Nt=kt.Card,St=kt.CardBody,Ct=function(e){var t=e.loading,a=e.title,r=e.value,n=e.label;return t?React.createElement(Nt,null,React.createElement(St,null,React.createElement(q,null))):React.createElement(Nt,{className:"presto-player__stat-card"},React.createElement(St,null,React.createElement("div",{className:"presto-subtitle"},a),React.createElement("h1",null,r),React.createElement("div",null,n)))};function Ft(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function Tt(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Ft(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Ft(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Mt,It,Bt,At=wp.apiFetch,Vt=wp.element.useState,Ht=wp.compose.createHigherOrderComponent,Lt=function(){return Ht((function(e){return function(t){var a=Vt(!1),n=Object(r.a)(a,2),c=n[0],l=n[1],o=Vt([]),i=Object(r.a)(o,2),s=i[0],p=i[1],u=Vt(""),d=Object(r.a)(u,2),f=d[0],m=d[1],b=function(){var e=Object(F.a)(M.a.mark((function e(t){var a,r,n,c;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.endpoint,r=t.params,n=void 0===r?{}:r,l(!0),e.prev=2,e.next=5,At({path:wp.url.addQueryArgs(a,Tt({},n))});case 5:c=e.sent,p(c),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),null!==e.t0&&void 0!==e.t0&&e.t0.message&&m(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[2,9,13,16]])})));return function(t){return e.apply(this,arguments)}}();return React.createElement(e,Object.assign({loading:c,setLoading:l,fetchData:b,stat:s,setStat:p,error:f,setError:m},t))}}),"withStat")},Ut=wp.i18n.__,Gt=wp.compose.compose,Wt=wp.element.useEffect,Zt=Gt([Lt()])((function(e){var t=e.userId,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return Wt((function(){c({endpoint:"/presto-player/v1/analytics/user/".concat(t,"/total-views"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseInt(null==n?void 0:n.view),title:Ut("Total Views","presto-player")})})),zt=wp.i18n.__,Yt=wp.compose.compose,Qt=wp.element.useEffect,Xt=Yt([Lt()])((function(e){var t=e.userId,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return Qt((function(){c({endpoint:"/presto-player/v1/analytics/user/".concat(t,"/average-watchtime"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseFloat(null==n?void 0:n.view).toFixed(2),title:zt("Average Watch Time","presto-player"),label:zt("seconds","presto-player")})})),qt=wp.i18n.__,Jt=wp.compose.compose,$t=wp.element.useEffect,Kt=Jt([Lt()])((function(e){var t=e.userId,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return $t((function(){c({endpoint:"/presto-player/v1/analytics/user/".concat(t,"/total-watchtime"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseFloat(null==n?void 0:n.view).toFixed(2),title:qt("Total Watch Time","presto-player"),label:qt("seconds","presto-player")})})),ea=wp.i18n.__,ta=wp.components,aa=ta.Flex,ra=ta.FlexBlock,na=ta.FlexItem,ca=ta.Spinner,la=ta.Button,oa=wp.element,ia=oa.useEffect,sa=oa.useState,pa=wp.apiFetch,ua=function(e){var t,a,n,c,l=e.route,o=e.startDate,i=e.endDate,s=e.setStartDate,p=e.setEndDate,u=sa(!0),d=Object(r.a)(u,2),f=d[0],m=d[1],h=sa({}),y=Object(r.a)(h,2),v=y[0],w=y[1],g=sa(""),E=Object(r.a)(g,2),R=E[0],O=E[1],j=function(){var e=Object(F.a)(M.a.mark((function e(){var t,a;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return m(!0),e.prev=1,e.next=4,pa({url:"/wp-json/wp/v2/users/".concat(null==l||null===(t=l.params)||void 0===t?void 0:t.id,"?context=edit")});case 4:a=e.sent,w(a),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),"rest_no_route"===e.t0.code&&O("User Not Found");case 11:return e.prev=11,m(!1),e.finish(11);case 14:case"end":return e.stop()}}),e,null,[[1,8,11,14]])})));return function(){return e.apply(this,arguments)}}();return ia((function(){j()}),[]),R?Object(vt.b)("div",{className:"presto-flow"},Object(vt.b)(aa,null,Object(vt.b)(ra,null,Object(vt.b)("h2",null,R)))):Object(vt.b)("div",{className:"presto-flow"},Object(vt.b)(aa,null,Object(vt.b)(ra,null,Object(vt.b)(la,{isSecondary:!0,onClick:function(){b.push("#/")}},"← ",ea("Back to Dashboard","presto-player")))),Object(vt.b)(aa,{wrap:!0},Object(vt.b)(ra,null,f?Object(vt.b)(ca,null):Object(vt.b)("div",{css:Object(vt.a)(Mt||(Mt=Object(C.a)(["\n display: flex;\n align-items: center;\n\n .presto__edit-user-button {\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s ease;\n }\n\n &:hover {\n .presto__edit-user-button {\n opacity: 1;\n visibility: visible;\n }\n }\n "])))},Object(vt.b)("div",null,Object(vt.b)("h1",{className:"presto-dashboard__title"},null==v?void 0:v.name),Object(vt.b)("p",{css:Object(vt.a)(It||(It=Object(C.a)(["\n margin-top: -10px;\n opacity: 0.65;\n "])))},null==v?void 0:v.email)),!!v.id&&Object(vt.b)("div",{className:"presto__edit-user-button",css:Object(vt.a)(Bt||(Bt=Object(C.a)(["\n margin: 0 20px;\n "])))},Object(vt.b)(la,{href:"/wp-admin/user-edit.php?user_id=".concat(null==v?void 0:v.id),isSecondary:!0,isSmall:!0},ea("View Profile","presto-player")," →")))),Object(vt.b)(na,null,Object(vt.b)(mt,{startDate:o,setStartDate:s,endDate:i,setEndDate:p}))),Object(vt.b)("div",{className:"presto-dashboard presto-flow"},Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(Zt,{userId:null==l||null===(t=l.params)||void 0===t?void 0:t.id,startDate:o,endDate:i})),Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(Xt,{userId:null==l||null===(a=l.params)||void 0===a?void 0:a.id,startDate:o,endDate:i})),Object(vt.b)("div",{className:"presto-dashboard__item"},Object(vt.b)(Kt,{userId:null==l||null===(n=l.params)||void 0===n?void 0:n.id,startDate:o,endDate:i}))),Object(vt.b)("div",{className:"presto-dashboard__row"},Object(vt.b)("div",{className:"presto-dashboard__item is-large"},Object(vt.b)(Ne,{startDate:o,endDate:i,userId:null==l||null===(c=l.params)||void 0===c?void 0:c.id})))))},da=wp.i18n.__,fa=wp.compose.compose,ma=wp.element.useEffect,ba=fa([Lt()])((function(e){var t=e.video_id,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return ma((function(){c({endpoint:"/presto-player/v1/analytics/video/".concat(t,"/average-watchtime"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseInt(n),title:da("Average Watch Time","presto-player"),label:da("seconds","presto-player")})})),ha=wp.i18n,ya=ha.__,va=(ha.sprintf,wp.components),wa=va.Card,ga=va.CardBody,Ea=wp.element,Ra=Ea.useState,Oa=Ea.useEffect,ja=(Ea.useRef,function(e){var t=e.video_id,a=e.startDate,n=e.endDate,c=Ra(!0),l=Object(r.a)(c,2),o=l[0],i=l[1],s=Ra([{name:"Views",data:[]}]),p=Object(r.a)(s,2),u=p[0],d=p[1];Oa((function(){i(!0),Ce({path:wp.url.addQueryArgs("/presto-player/v1/analytics/video/".concat(t,"/timeline"),{start:Z(a),end:Z(n)})}).then((function(e){var t=[];e.length&&e.forEach((function(e){t.push({x:e.watch_time,y:e.total})})),d([{name:"Viewers",data:t}])})).catch((function(e){console.error(e)})).finally((function(){i(!1)}))}),[a,n]);var f={options:{chart:{toolbar:{show:!1}},tickAmount:1,yaxis:{labels:{formatter:function(e){return parseInt(e)}}},xaxis:{labels:{formatter:function(e){return t=e,t=1e3*parseInt(t||0),new Date(t).toISOString().substr(11,8);var t}}},colors:["#7c3aed"],dataLabels:{enabled:!1},stroke:{curve:"smooth"},fill:{type:"gradient",gradient:{shadeIntensity:1,opacityFrom:.7,opacityTo:.9,stops:[0,90,100]}}}};return o?React.createElement(wa,null,React.createElement(ga,null,React.createElement(q,null))):React.createElement(wa,null,React.createElement(ga,null,React.createElement("div",{className:"presto-card__title"},ya("Audience Retention","presto-player")),React.createElement(Te.a,{options:f.options,series:u,type:"area",height:280})))}),xa=wp.i18n.__,_a=wp.compose.compose,Da=wp.element.useEffect,Pa=_a([Lt()])((function(e){var t=e.video_id,a=e.startDate,r=e.endDate,n=e.stat,c=e.fetchData,l=e.loading;return Da((function(){c({endpoint:"/presto-player/v1/analytics/video/".concat(t,"/views"),params:{start:Z(a),end:Z(r)}})}),[a,r]),React.createElement(Ct,{loading:l,value:parseInt(n),title:xa("Unique Views","presto-player")})})),ka=a(2),Na=a.n(ka),Sa=function(e){return e.replace(/([A-Z])/g,(function(e){return"-".concat(e[0].toLowerCase())}))},Ca=a(6),Fa=function(e,t,a){var r=t.className||t.class,n=a.className||a.class,c=Ia(e),l=Ia(r?r.split(" "):[]),o=Ia(n?n.split(" "):[]),i=[];return c.forEach((function(e){l.has(e)?(i.push(e),l.delete(e)):o.has(e)||i.push(e)})),l.forEach((function(e){return i.push(e)})),i.join(" ")},Ta=function(e){if("undefined"==typeof document)return!0;var t="on"+e,a=t in document;if(!a){var r=document.createElement("div");r.setAttribute(t,"return;"),a="function"==typeof r[t]}return a},Ma=function(e,t,a){var r=e.__events||(e.__events={}),n=r[t];n&&e.removeEventListener(t,n),e.addEventListener(t,r[t]=function(e){a&&a.call(this,e)})},Ia=function(e){var t=new Map;return e.forEach((function(e){return t.set(e,e)})),t},Ba=function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)},Aa=function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return function(e){t.forEach((function(t){Ba(t,e)}))}};function Va(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var a,r=Object(s.a)(e);if(t){var n=Object(s.a)(this).constructor;a=Reflect.construct(r,arguments,n)}else a=r.apply(this,arguments);return Object(i.a)(this,a)}}var Ha=function(e,t){var a={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(a[r[n]]=e[r[n]])}return a},La=function(e,t,a,r){void 0!==r&&r();var l=e.toLowerCase().split("-").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join(""),i=function(t){Object(o.a)(i,t);var r=Va(i);function i(e){var t;return Object(n.a)(this,i),(t=r.call(this,e)).setComponentElRef=function(e){t.componentEl=e},t}return Object(c.a)(i,[{key:"componentDidMount",value:function(){this.componentDidUpdate(this.props)}},{key:"componentDidUpdate",value:function(e){!function(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e instanceof Element){var r=Fa(e.classList,t,a);""!==r&&(e.className=r),Object.keys(t).forEach((function(a){if("children"!==a&&"style"!==a&&"ref"!==a&&"class"!==a&&"className"!==a&&"forwardedRef"!==a)if(0===a.indexOf("on")&&a[2]===a[2].toUpperCase()){var r=a.substring(2),n=r[0].toLowerCase()+r.substring(1);Ta(n)||Ma(e,n,t[a])}else{e[a]=t[a],"string"===Object(Ca.a)(t[a])&&e.setAttribute(Sa(a),t[a])}}))}}(this.componentEl,this.props,e)}},{key:"render",value:function(){var t=this.props,r=t.children,n=t.forwardedRef,c=t.style,l=(t.className,t.ref,Ha(t,["children","forwardedRef","style","className","ref"])),o=Object.keys(l).reduce((function(e,t){if(0===t.indexOf("on")&&t[2]===t[2].toUpperCase()){var a=t.substring(2).toLowerCase();"undefined"!=typeof document&&Ta(a)&&(e[t]=l[t])}else e[t]=l[t];return e}),{});a&&(o=a(this.props,o));var i=Object.assign(Object.assign({},o),{ref:Aa(n,this.setComponentElRef),style:c});return Na.a.createElement(e,i,r)}}],[{key:"displayName",get:function(){return l}}]),i}(Na.a.Component);return t&&(i.contextType=t),function(e,t){var a=function(t,a){return Na.a.createElement(e,Object.assign({},t,{forwardedRef:a}))};return a.displayName=t,Na.a.forwardRef(a)}(i,l)},Ua=La("presto-player"),Ga=wp.element;Ga.useRef,Ga.useEffect;function Wa(e){if(e){if(e.match(/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/))return"youtube";if(e.match(/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/([a-z]*\/)*([‌​0-9]{6,11})[?]?.*/))return"vimeo";if(e.indexOf("https://vz-")>-1&&e.indexOf("b-cdn.net")>-1)return"bunny";if(e.indexOf(".mp3")>-1)return"audio"}return"self-hosted"}function Za(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function za(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Za(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Za(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Ya=wp.data.useSelect,Qa=function(e){var t,a,r,n=e.src,c=e.classes,l=e.preset,o=e.branding,i=e.attributes,s=e.adminPreview,p=e.currentTime,u=e.preload,d=void 0===u?"metadata":u,f=e.overlays,m=e.type,b=i.chapters,h=i.mutedOverlay,y=i.mutedPreview,v=Ya((function(e){var t;return null===(t=e("presto-player/player"))||void 0===t?void 0:t.youtube()})),w=Ya((function(e){var t;return null===(t=e("presto-player/player"))||void 0===t?void 0:t.playerCSS()}));return React.createElement("div",{className:"wp-block-video presto-block-video",style:"audio"===m?za(za(za({"--presto-player-border-radius":"".concat(null==l?void 0:l.border_radius,"px")},null!=l&&l.background_color?{"--plyr-audio-controls-background":l.background_color}:{"--plyr-audio-controls-background":null==o?void 0:o.color}),null!=l&&l.control_color?{"--plyr-audio-control-color":l.control_color,"--plyr-range-thumb-background":l.control_color,"--plyr-range-fill-background":l.control_color,"--plyr-audio-progress-buffered-background":function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=e.replace("#","");3===a.length&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]);var r=parseInt(a.substring(0,2),16),n=parseInt(a.substring(2,4),16),c=parseInt(a.substring(4,6),16);return t>1&&t<=100&&(t/=100),"rgba("+r+","+n+","+c+","+t+")"}(l.control_color||(null==o?void 0:o.color)||"#00b3ff",.5)}:{"--plyr-audio-control-color":"#ffffff","--plyr-range-thumb-background":"#ffffff","--plyr-range-fill-background":"#ffffff"}),{},{"--plyr-range-thumb-shadow":"0px"}):za(za(za({"--presto-player-border-radius":"".concat(null==l?void 0:l.border_radius,"px")},null!=l&&l.caption_background?{"--plyr-captions-background":l.caption_background}:{}),null!=o&&o.color?{"--plyr-color-main":o.color}:{}),{},{"--presto-player-email-border-radius":"".concat((null==l||null===(t=l.email_collection)||void 0===t?void 0:t.border_radius)||0,"px"),"--presto-player-logo-width":"".concat((null==o?void 0:o.logo_width)||75,"px")})},React.createElement(Ua,{src:n,css:w,classes:c,currentTime:p,overlays:f,isAdmin:!0,preload:d,preset:l,bunny:{thumbnail:null==i?void 0:i.previewThumbnail,preview:null==i?void 0:i.preview},youtube:{channelId:null==v?void 0:v.channel_id},tracks:!(null==l||!l.captions)&&[{kind:"captions",label:"English",srclang:"en",src:"/path/to/captions.en.vtt",default:!0}],branding:o,chapters:b,blockAttributes:i,poster:i.poster,provider:"audio"===m?"audio":Wa(n),mediaTitle:i.title},React.createElement("div",{slot:"player-end"},(null==y?void 0:y.enabled)&&(null==h?void 0:h.enabled)&&React.createElement("div",{className:"presto-player__overlay is-image",style:{position:"absolute",width:"".concat((null==h?void 0:h.width)||100,"%"),left:"".concat(100*((null==h||null===(a=h.focalPoint)||void 0===a?void 0:a.x)||.5),"%"),top:"".concat(100*((null==h||null===(r=h.focalPoint)||void 0===r?void 0:r.y)||.5),"%")}},React.createElement("img",{src:null==h?void 0:h.src,style:{transform:"translateX(-50%) translateY(-50%)"}})),s)))};function Xa(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function qa(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?Xa(Object(a),!0).forEach((function(t){Object(p.a)(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Xa(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var Ja=wp.i18n.__,$a=wp.components,Ka=$a.Flex,er=$a.FlexBlock,tr=$a.FlexItem,ar=$a.Spinner,rr=$a.Button,nr=$a.TextControl,cr=wp.element,lr=cr.useEffect,or=cr.useState,ir=wp.apiFetch,sr=function(e){var t,a,n,c=e.route,l=e.startDate,o=e.endDate,i=e.setStartDate,s=e.setEndDate,p=or(!0),u=Object(r.a)(p,2),d=u[0],f=u[1],m=or({}),h=Object(r.a)(m,2),y=h[0],v=h[1],w=or(""),g=Object(r.a)(w,2),E=g[0],R=g[1],O=or(null),j=Object(r.a)(O,2),x=j[0],_=j[1],D=or(!1),P=Object(r.a)(D,2),k=P[0],N=P[1],S=function(){var e=Object(F.a)(M.a.mark((function e(){var t,a,r,n;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,e.next=4,ir({url:"".concat(null===(t=prestoPlayer)||void 0===t?void 0:t.root).concat(null===(a=prestoPlayer)||void 0===a?void 0:a.prestoVersionString,"videos/").concat(null==c||null===(r=c.params)||void 0===r?void 0:r.id)});case 4:n=e.sent,v(n),_(null==n?void 0:n.title),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(1),"rest_no_route"===e.t0.code&&R("Video Not Found");case 12:return e.prev=12,f(!1),e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[1,9,12,15]])})));return function(){return e.apply(this,arguments)}}(),C=function(){var e=Object(F.a)(M.a.mark((function e(){var t,a;return M.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("New Video title ".concat(x)),f(!0),e.prev=2,t=qa(qa({},y),{title:x}),e.next=6,wp.apiFetch({method:"POST",url:wp.url.addQueryArgs("".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"videos/").concat(y.id),{_method:"PUT"}),data:t});case 6:if(a=e.sent){e.next=9;break}throw genericError;case 9:N(!1),v(a),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),R(null!==e.t0&&void 0!==e.t0&&e.t0.message?e.t0.message:genericError);case 16:return e.prev=16,f(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,13,16,19]])})));return function(){return e.apply(this,arguments)}}(),T=function(){_(null==y?void 0:y.title),N(!1)};return lr((function(){S()}),[]),E?React.createElement("div",{className:"presto-flow"},React.createElement(Ka,null,React.createElement(er,null,React.createElement("h2",null,E)))):React.createElement("div",{className:"presto-flow"},React.createElement(Ka,null,React.createElement(er,null,React.createElement(rr,{isSecondary:!0,onClick:function(){b.push("#/")}},"← ",Ja("Back to Dashboard","presto-player")))),React.createElement(Ka,{wrap:!0},React.createElement(er,null,d?React.createElement(ar,null):k?React.createElement("div",{className:"presto-inline-edit presto-inline-edit--editing"},React.createElement(nr,{className:"presto-inline-edit__input",type:"text",value:x,onChange:function(e){return _(e)}}),React.createElement(rr,{className:"presto-inline-edit__button",isPrimary:!0,onClick:C}," ","Save"," "),React.createElement(rr,{className:"presto-inline-edit__button",isSecondary:!0,onClick:T}," ","Cancel"," ")):React.createElement("div",{className:"presto-inline-edit"},React.createElement("h1",{className:"presto-dashboard__title presto-inline-edit__text"},null==y?void 0:y.title),React.createElement("button",{className:"presto-inline-edit__edit",onClick:function(){return N(!0)}},React.createElement("span",{className:"dashicon dashicons dashicons-edit"})))),React.createElement(tr,null,React.createElement(mt,{startDate:l,setStartDate:i,endDate:o,setEndDate:s}))),React.createElement("div",{className:"presto-dashboard presto-flow"},React.createElement("div",{className:"presto-dashboard__row"},React.createElement("div",{className:"presto-dashboard__item is-large"},React.createElement(Pa,{video_id:null==c||null===(t=c.params)||void 0===t?void 0:t.id,startDate:l,endDate:o})),React.createElement("div",{className:"presto-dashboard__item"},!!Object.keys(y||{}).length&&React.createElement(Qa,{src:null==y?void 0:y.src,attributes:{title:y.title},type:Wa(y.src),preset:{"play-large":!0,play:!0,progress:!0,rewind:!0,"fast-forward":!0,"current-time":!0,background_color:"#8421cb",volume:!0,mute:!0,i18n:window.prestoPlayer.i18n}})),React.createElement("div",{className:"presto-dashboard__item"},React.createElement(ba,{video_id:null==c||null===(a=c.params)||void 0===a?void 0:a.id,startDate:l,endDate:o}))),React.createElement("div",{className:"presto-dashboard__row"},React.createElement("div",{className:"presto-dashboard__item is-large"},React.createElement(ja,{video_id:null==c||null===(n=c.params)||void 0===n?void 0:n.id,startDate:l,endDate:o})))))},pr={dashboard:{path:"/"},video:{path:"/video/:id"},user:{path:"/user/:id"}},ur=wp.element.useState,dr=function(){var e,t=function(){window.scrollTo(0,0)},a=ur(new Date(Date.now()-6048e5)),n=Object(r.a)(a,2),c=n[0],l=n[1],o=ur(new Date),i=Object(r.a)(o,2),s=i[0],p=i[1];return null!==(e=prestoPlayer)&&void 0!==e&&e.isPremium?React.createElement("div",{className:"presto-dashboard__content"},React.createElement(j,{routes:pr},React.createElement(g,{path:pr.dashboard.path,onRoute:t},React.createElement(Dt,{startDate:c,endDate:s,setStartDate:l,setEndDate:p})),React.createElement(g,{path:pr.video.path,onRoute:t},React.createElement(sr,{startDate:c,endDate:s,setStartDate:l,setEndDate:p})),React.createElement(g,{path:pr.user.path,onRoute:t},React.createElement(ua,{startDate:c,endDate:s,setStartDate:l,setEndDate:p})))):React.createElement("div",{className:"presto-dashboard__content"},React.createElement(S,null))};(0,wp.element.render)(React.createElement(dr,null),document.getElementById("presto-analytics-page"))}},[[26,1,2]]]);
19
+ //# sourceMappingURL=admin-1deea871.js.map
dist/analytics/{admin-5a5a1db1.js.map → admin-1deea871.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///external [\"wp\",\"apiFetch\"]","webpack:///external [\"wp\",\"components\"]","webpack:///./src/router/utils.js","webpack:///./src/router/context.js","webpack:///./src/router/route.js","webpack:///./src/router/link.js","webpack:///./src/router/index.js","webpack:///./src/admin/analytics/pages/illustration.js","webpack:///./src/admin/analytics/pages/AnalyticsUpgrade.js","webpack:///./src/admin/analytics/hocs/withDataList.js","webpack:///./src/admin/analytics/util.js","webpack:///./src/admin/settings/components/Loading.js","webpack:///./src/admin/ui/Pagination.js","webpack:///./src/admin/ui/Table.js","webpack:///./src/admin/analytics/components/DataTable.js","webpack:///./src/admin/analytics/components/TopUsers.js","webpack:///./src/admin/analytics/components/TopVideos.js","webpack:///./src/shared/services/fetch.js","webpack:///./src/admin/analytics/components/TotalViewsGraph.js","webpack:///./src/admin/analytics/components/TotalWatchGraph.js","webpack:///./src/admin/analytics/components/OverviewPanel.js","webpack:///./src/admin/analytics/components/DatePicker.js","webpack:///./src/admin/analytics/pages/Dashboard.js","webpack:///./src/admin/ui/StatCard.js","webpack:///./src/admin/analytics/hocs/withStat.js","webpack:///./src/admin/analytics/components/TotalVideoViewsByUser.js","webpack:///./src/admin/analytics/components/VideoAverageWatchTimeByUser.js","webpack:///./src/admin/analytics/components/VideoTotalWatchTimeByUser.js","webpack:///./src/admin/analytics/pages/User.js","webpack:///./src/admin/analytics/components/VideoAverageWatchTime.js","webpack:///./src/admin/analytics/components/VideoTimeline.js","webpack:///./src/admin/analytics/components/VideoViews.js","webpack:///../../../src/components/react-component-lib/utils/case.ts","webpack:///../../../src/components/react-component-lib/utils/attachProps.ts","webpack:///../../../src/components/react-component-lib/utils/index.tsx","webpack:///../../src/components/react-component-lib/createComponent.tsx","webpack:///../src/components/index.ts","webpack:///./src/admin/blocks/util.js","webpack:///./src/admin/blocks/shared/Player.js","webpack:///./src/admin/analytics/pages/Video.js","webpack:///./src/admin/analytics/routes.js","webpack:///./src/admin/analytics/App.js","webpack:///./src/admin/analytics/index.js"],"names":["module","exports","window","locationToRoute","location","path","pathname","hash","query","qs","parse","search","history","createBrowserHistory","RouterContext","wp","element","createContext","route","useContext","prev","Route","onRoute","children","matched","match","checkMatch","substr","cloneElement","Router","props","setState","routes","Object","keys","map","key","unlisten","listen","handleRouteChange","state","defaultRoute","this","NotFound","push","forEach","name","isMatched","data","routerContextValue","is404","Provider","value","Component","width","height","id","data-name","xmlns","xmlnsXlink","viewBox","x1","y1","x2","y2","gradientUnits","offset","stop-color","stop-opacity","xlinkHref","transform","x","y","fill","gradientTransform","opacity","clip-path","points","cx","cy","r","d","__","i18n","components","Flex","FlexItem","FlexBlock","style","padding","background","marginLeft","href","target","className","apiFetch","useState","createHigherOrderComponent","compose","WrappedComponent","loading","setLoading","page","setPage","total","setTotal","totalPages","setTotalPages","setData","error","setError","fetchData","a","endpoint","params","url","addQueryArgs","per_page","then","res","headers","parseInt","get","json","responseData","console","message","sprintf","convertDateTimeToAbsoluteDate","dateTime","Date","getTimezoneOffset","getTime","toISOString","split","Spinner","align","justify","Card","CardBody","Button","ButtonGroup","useEffect","perPage","hasPrevious","setHasPrevious","hasNext","setHasNext","end","setEnd","start","setStart","Math","min","size","isSecondary","disabled","onClick","max","useRef","columns","onRowClick","title","length","role","classNames","column","label","row","rowIndex","columnIndex","data-title","aria-label","render","onSelect","Loading","Table","Pagination","withDataList","startDate","endDate","user","stats","DataTable","userId","user_id","marginBottom","wordBreak","video","color","use","createNonceMiddleware","prestoPlayer","nonce","createRootURLMiddleware","root","prestoVersionString","totalViews","setTotalViews","series","setSeries","chart","options","toolbar","show","yaxis","labels","formatter","num","abs","sign","toFixed","colors","xaxis","type","setHours","dataLabels","enabled","stroke","curve","gradient","shadeIntensity","opacityFrom","opacityTo","stops","fetchViews","jQuery","param","item","date_time","catch","e","finally","averageTime","setAverageTime","fetchMinutes","savedSeconds","hours","minutes","seconds","out","average","parseFloat","floor","Panel","TabPanel","tabs","tab","TotalViewsGraph","TotalWatchGraph","setStartDate","setEndDate","dateRef","inputSize","setInputSize","Litepicker","current","singleMode","format","autoApply","plugins","maxDate","numberOfMonths","buttonText","apply","cancel","dropdowns","minYear","maxYear","months","years","setup","picker","setDateRange","on","dateInstance","ref","noticeStatus","setNoticeStatus","post","presto_player_analytics","enable","DatePicker","OverviewPanel","TopUsers","TopVideos","MyNotice","css","status","isDismissible","stat","setStat","withStat","StatCard","view","User","setUser","getUser","code","wrap","email","isSmall","TotalVideoViewsByUser","VideoAverageWatchTimeByUser","VideoTotalWatchTimeByUser","video_id","watch_time","tickAmount","eventNameSuffix","getProvider","src","indexOf","useSelect","classes","preset","branding","attributes","adminPreview","currentTime","preload","overlays","chapters","mutedOverlay","mutedPreview","youtube","select","playerCSS","border_radius","background_color","control_color","hexCode","hex","replace","substring","g","b","convertHex","caption_background","email_collection","logo_width","PrestoPlayer","isAdmin","bunny","thumbnail","previewThumbnail","preview","channelId","channel_id","tracks","captions","kind","srclang","default","blockAttributes","poster","provider","mediaTitle","slot","position","left","focalPoint","top","TextControl","Video","setVideo","thisName","setThisName","editing","setEditing","getVideo","putVideo","log","method","_method","saved","genericError","cancelEditing","onChange","isPrimary","VideoViews","Player","play","progress","rewind","volume","mute","VideoAverageWatchTime","VideoTimeline","dashboard","scrollToTop","scrollTo","now","isPremium","Dashboard","AnalyticsUpgrade","App","document","getElementById"],"mappings":"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","file":"analytics/admin-5a5a1db1.js","sourcesContent":["(function() { module.exports = window[\"wp\"][\"apiFetch\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","import qs from \"querystringify\";\nexport function locationToRoute(location) {\n // location comes from the history package\n return {\n path: location.pathname,\n hash: location.hash,\n query: qs.parse(location.search),\n };\n}\n","import { createBrowserHistory } from \"history\";\nimport { locationToRoute } from \"./utils\";\n\nexport const history = createBrowserHistory();\nexport const RouterContext = wp.element.createContext({\n route: locationToRoute(history.location),\n});\n","import { RouterContext } from \"./context\";\nconst { useContext } = wp.element;\nimport { match } from \"path-to-regexp\";\nlet prev = \"\";\n\nexport function Route({ path, onRoute, children }) {\n // Extract route from RouterContext\n const { route } = useContext(RouterContext);\n\n const checkMatch = match(`${path}`);\n const matched = checkMatch(`${route.hash.substr(1)}`);\n\n if (!matched) {\n return null;\n }\n\n if (onRoute) {\n if (prev !== matched.path) {\n onRoute();\n }\n prev = matched.path;\n }\n\n return <div>{wp.element.cloneElement(children, { route: matched })}</div>;\n}\n","const { useContext } = wp.element;\nimport { RouterContext, history } from \"./context\";\nimport classNames from \"classnames\";\nimport { match } from \"path-to-regexp\";\n\nexport function Link(props) {\n const { to, onClick, children, activeClassName } = props;\n const { route } = useContext(RouterContext);\n\n let state = { ...props };\n delete state.activeClassName;\n\n const isActive = () => {\n const checkMatch = match(`${to}`);\n return checkMatch(`${route.hash.substr(1)}`);\n };\n\n const handleClick = (e) => {\n e.preventDefault();\n // Dont' navigate if current path\n if (route.path === to) {\n return;\n }\n // Trigger onClick prop manually\n if (onClick) {\n onClick(e);\n }\n // Use history API to navigate page\n history.push(`#${to}`);\n };\n\n return (\n <a\n {...state}\n className={classNames({ [activeClassName]: isActive() }, props.className)}\n onClick={handleClick}\n >\n {children}\n </a>\n );\n}\n","const { Component } = wp.element;\nimport { locationToRoute } from \"./utils\";\nimport { history, RouterContext } from \"./context\";\nimport { Route } from \"./route\";\nimport { Link } from \"./link\";\nimport { match } from \"path-to-regexp\";\n\nclass Router extends Component {\n constructor(props) {\n super(props);\n\n // Convert our routes into an array for easy 404 checking\n this.routes = Object.keys(props.routes).map(\n (key) => props.routes[key].path\n );\n\n // Listen for path changes from the history API\n this.unlisten = history.listen(this.handleRouteChange);\n\n const route = locationToRoute(history.location);\n\n // Define the initial RouterContext value\n this.state = {\n route,\n defaultRoute: props?.defaultRoute ? `#${props?.defaultRoute}` : \"#/\",\n };\n }\n\n componentWillUnmount() {\n // Stop listening for changes if the Router component unmounts\n this.unlisten();\n }\n\n handleRouteChange = (location) => {\n const route = locationToRoute(location?.location);\n this.setState({ route: route });\n };\n\n render() {\n // Define our variables\n const { children, NotFound } = this.props;\n const { route, defaultRoute } = this.state;\n\n if (!route.hash) {\n history.push(defaultRoute);\n return <div></div>;\n }\n\n let matched = false;\n // match route\n (this.routes || []).forEach((name) => {\n const checkMatch = match(route.hash.substr(1));\n const isMatched = checkMatch(`${route.hash.substr(1)}`);\n if (!isMatched) {\n return;\n }\n matched = {\n name,\n data: isMatched,\n };\n });\n\n const routerContextValue = { route, matched };\n\n // Check if 404 if no route matched\n const is404 = !matched;\n\n return (\n <RouterContext.Provider value={routerContextValue}>\n {is404 ? <div>Not found</div> : children}\n </RouterContext.Provider>\n );\n }\n}\nexport { history, RouterContext, Router, Route, Link };\n","export default ({ width, height }) => {\n return (\n <svg\n id=\"e8f68bdd-4984-4f2e-95b7-7fc8ec281257\"\n data-name=\"Layer 1\"\n width={width}\n height={height}\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 918.14 765.54\"\n >\n <defs>\n <linearGradient\n id=\"27aa7b70-b106-4a00-be67-693c8380e41d\"\n x1=\"397.74\"\n y1=\"717.25\"\n x2=\"397.74\"\n y2=\"86.11\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" stop-color=\"gray\" stop-opacity=\"0.25\" />\n <stop offset=\"0.54\" stop-color=\"gray\" stop-opacity=\"0.12\" />\n <stop offset=\"1\" stop-color=\"gray\" stop-opacity=\"0.1\" />\n </linearGradient>\n <linearGradient\n id=\"46a816da-c484-41ec-8a6f-fbf14454d910\"\n x1=\"288.88\"\n y1=\"378.44\"\n x2=\"288.88\"\n y2=\"209.65\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"32b634d8-28f1-48d9-a868-f602a2cad942\"\n x1=\"288.88\"\n y1=\"328.29\"\n x2=\"288.88\"\n y2=\"223.1\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <clipPath\n id=\"7a4c6aff-0be0-461b-a111-b3ae1b8fbf73\"\n transform=\"translate(-140.93 -67.23)\"\n >\n <rect\n id=\"8cc91f6d-19b0-43cc-9c18-2faa83ac34ba\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"354.51\"\n y=\"291.55\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n </clipPath>\n <linearGradient\n id=\"38f1cb81-8fac-4205-a0ff-a33ac00d354c\"\n x1=\"288.88\"\n y1=\"594.94\"\n x2=\"288.88\"\n y2=\"426.14\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"6fc01aaf-135e-403e-a209-43b2a4fe59f1\"\n x1=\"288.88\"\n y1=\"544.79\"\n x2=\"288.88\"\n y2=\"439.6\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <clipPath\n id=\"79ce363a-d134-40e4-9f82-b96d04a36978\"\n transform=\"translate(-140.93 -67.23)\"\n >\n <rect\n id=\"5b44e697-61fe-43bd-9a58-5f3e41301748\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"354.51\"\n y=\"508.05\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n </clipPath>\n <linearGradient\n id=\"54803c44-522d-4b9e-9a34-f1f7b43e8483\"\n x1=\"671.57\"\n y1=\"760.34\"\n x2=\"671.57\"\n y2=\"129.2\"\n gradientTransform=\"translate(1109.43 -194.1) rotate(90)\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"089a6a47-adaa-499b-aefb-cd6464b62fb8\"\n x1=\"670.96\"\n y1=\"553.63\"\n x2=\"670.96\"\n y2=\"387.28\"\n gradientTransform=\"translate(1129.51 -168.41) rotate(90)\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"fd8d88e0-7826-450d-9e0b-001d1be709c2\"\n x1=\"637.66\"\n y1=\"754.12\"\n x2=\"637.66\"\n y2=\"601.05\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"8d1793c5-b76e-44e2-a52e-569460402331\"\n x1=\"778.37\"\n y1=\"673.86\"\n x2=\"778.37\"\n y2=\"569.13\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"4745700d-8097-45ff-9f71-625443fc4ad8\"\n x1=\"778.37\"\n y1=\"774.41\"\n x2=\"778.37\"\n y2=\"713.66\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n </defs>\n <title>secure data</title>\n <g opacity=\"0.5\">\n <rect\n x=\"162.9\"\n y=\"86.11\"\n width=\"469.69\"\n height=\"631.14\"\n fill=\"url(#27aa7b70-b106-4a00-be67-693c8380e41d)\"\n />\n </g>\n <rect\n x=\"169.02\"\n y=\"94.67\"\n width=\"455.01\"\n height=\"609.12\"\n fill=\"#f2f2f2\"\n />\n <rect x=\"204.49\" y=\"120.36\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect\n x=\"204.49\"\n y=\"142.37\"\n width=\"156.56\"\n height=\"4.89\"\n fill=\"#6c63ff\"\n opacity=\"0.7\"\n />\n <rect x=\"384.29\" y=\"120.36\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"408.75\" y=\"259.8\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"412.42\" y=\"273.25\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"419.76\" y=\"286.7\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"408.75\" y=\"476.29\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"412.42\" y=\"489.75\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"419.76\" y=\"503.2\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <g opacity=\"0.5\">\n <rect\n x=\"205.71\"\n y=\"209.65\"\n width=\"166.35\"\n height=\"168.79\"\n fill=\"url(#46a816da-c484-41ec-8a6f-fbf14454d910)\"\n />\n </g>\n <rect\n x=\"206.76\"\n y=\"213.32\"\n width=\"163.72\"\n height=\"161.45\"\n fill=\"#f5f5f5\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"212.53\"\n y=\"223.1\"\n width=\"152.7\"\n height=\"105.19\"\n fill=\"url(#32b634d8-28f1-48d9-a868-f602a2cad942)\"\n />\n </g>\n <rect\n id=\"689f37f3-cc41-448d-b172-63ec123bc985\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"213.58\"\n y=\"224.32\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n <g clip-path=\"url(#7a4c6aff-0be0-461b-a111-b3ae1b8fbf73)\">\n <polygon\n points=\"200.82 322.18 238.74 263.46 254.64 289.15 288.88 253.68 318.24 289.15 343.93 236.56 409.98 341.75 195.93 334.41 200.82 322.18\"\n fill=\"#6c63ff\"\n opacity=\"0.4\"\n />\n <circle cx=\"230.17\" cy=\"239\" r=\"11.01\" fill=\"#6c63ff\" opacity=\"0.4\" />\n </g>\n <g opacity=\"0.5\">\n <rect\n x=\"205.71\"\n y=\"426.14\"\n width=\"166.35\"\n height=\"168.79\"\n fill=\"url(#38f1cb81-8fac-4205-a0ff-a33ac00d354c)\"\n />\n </g>\n <rect\n x=\"206.76\"\n y=\"429.81\"\n width=\"163.72\"\n height=\"161.45\"\n fill=\"#f5f5f5\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"212.53\"\n y=\"439.6\"\n width=\"152.7\"\n height=\"105.19\"\n fill=\"url(#6fc01aaf-135e-403e-a209-43b2a4fe59f1)\"\n />\n </g>\n <rect\n id=\"b429ac3a-f8a8-4171-bcce-5b6c002c0714\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"213.58\"\n y=\"440.82\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n <g clip-path=\"url(#79ce363a-d134-40e4-9f82-b96d04a36978)\">\n <polygon\n points=\"200.82 538.67 238.74 479.96 254.64 505.65 288.88 470.18 318.24 505.65 343.93 453.05 409.98 558.24 195.93 550.9 200.82 538.67\"\n fill=\"#bdbdbd\"\n opacity=\"0.4\"\n />\n <circle cx=\"230.17\" cy=\"455.5\" r=\"11.01\" fill=\"#bdbdbd\" opacity=\"0.4\" />\n </g>\n <g opacity=\"0.5\">\n <rect\n x=\"349.09\"\n y=\"242.63\"\n width=\"631.14\"\n height=\"469.69\"\n transform=\"translate(-74.16 969.06) rotate(-78.76)\"\n fill=\"url(#54803c44-522d-4b9e-9a34-f1f7b43e8483)\"\n />\n </g>\n <rect\n x=\"359.37\"\n y=\"247.33\"\n width=\"609.12\"\n height=\"455.01\"\n transform=\"translate(-72.16 966.22) rotate(-78.76)\"\n fill=\"#fff\"\n />\n <rect\n x=\"523.5\"\n y=\"197.22\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-88.86 -196.94) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"433.36\"\n y=\"650.7\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-2.18 -170.66) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"428.58\"\n y=\"671.14\"\n width=\"249.52\"\n height=\"4.89\"\n transform=\"translate(1.01 -162.18) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"424.6\"\n y=\"683.47\"\n width=\"92.96\"\n height=\"4.89\"\n transform=\"translate(1.84 -145.91) rotate(11.24)\"\n fill=\"#6c63ff\"\n opacity=\"0.7\"\n />\n <rect\n x=\"519.57\"\n y=\"209.08\"\n width=\"161.45\"\n height=\"4.89\"\n transform=\"translate(-88.17 -180.2) rotate(11.24)\"\n fill=\"#6c63ff\"\n opacity=\"0.7\"\n />\n <rect\n x=\"512.84\"\n y=\"249.31\"\n width=\"291.11\"\n height=\"4.89\"\n transform=\"translate(-79.21 -190.76) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"509.47\"\n y=\"255.44\"\n width=\"70.94\"\n height=\"4.89\"\n transform=\"translate(-80.19 -168.52) rotate(11.24)\"\n fill=\"#3ad29f\"\n opacity=\"0.7\"\n />\n <rect\n x=\"501.56\"\n y=\"307.59\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-67.76 -190.54) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"575.87\"\n y=\"357.6\"\n width=\"166.35\"\n height=\"289.88\"\n transform=\"translate(-103.27 983.74) rotate(-78.76)\"\n fill=\"url(#089a6a47-adaa-499b-aefb-cd6464b62fb8)\"\n />\n </g>\n <rect\n x=\"516.06\"\n y=\"420.61\"\n width=\"286.22\"\n height=\"162.68\"\n transform=\"translate(-30.42 -186.11) rotate(11.24)\"\n fill=\"#fff\"\n />\n <rect\n x=\"496.08\"\n y=\"335.18\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-62.49 -188.94) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"547.86\"\n y=\"424.02\"\n width=\"35.47\"\n height=\"118.64\"\n transform=\"translate(-35.84 -168.22) rotate(11.24)\"\n fill=\"#6c63ff\"\n />\n <rect\n x=\"606.43\"\n y=\"475.19\"\n width=\"35.47\"\n height=\"79.5\"\n transform=\"translate(-28.56 -179.03) rotate(11.24)\"\n fill=\"#3ad29f\"\n />\n <rect\n x=\"665.23\"\n y=\"523.93\"\n width=\"35.47\"\n height=\"42.81\"\n transform=\"translate(-21.5 -189.92) rotate(11.24)\"\n fill=\"#f55f44\"\n />\n <rect\n x=\"731.91\"\n y=\"492.72\"\n width=\"35.47\"\n height=\"86.84\"\n transform=\"translate(-22.02 -203.09) rotate(11.24)\"\n fill=\"#fdd835\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"128.65\"\n y=\"645.09\"\n width=\"3.67\"\n height=\"20.79\"\n fill=\"#47e6b1\"\n />\n <rect\n x=\"269.58\"\n y=\"712.31\"\n width=\"3.67\"\n height=\"20.79\"\n transform=\"translate(853.2 384.07) rotate(90)\"\n fill=\"#47e6b1\"\n />\n </g>\n <path\n d=\"M699.44,75.56a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,699.44,75.56Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#4d8af0\"\n opacity=\"0.5\"\n />\n <path\n d=\"M286.33,179.4a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,286.33,179.4Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#fdd835\"\n opacity=\"0.5\"\n />\n <path\n d=\"M253.63,484.46a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,253.63,484.46Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#fdd835\"\n opacity=\"0.5\"\n />\n <circle cx=\"337.81\" cy=\"28.62\" r=\"7.34\" fill=\"#f55f44\" opacity=\"0.5\" />\n <circle cx=\"7.34\" cy=\"317.46\" r=\"7.34\" fill=\"#f55f44\" opacity=\"0.5\" />\n <circle cx=\"863.76\" cy=\"120.36\" r=\"7.34\" fill=\"#f55f44\" opacity=\"0.5\" />\n <circle cx=\"822.17\" cy=\"339.3\" r=\"7.34\" fill=\"#4d8af0\" opacity=\"0.5\" />\n <circle cx=\"37.68\" cy=\"145.22\" r=\"7.34\" fill=\"#47e6b1\" opacity=\"0.5\" />\n <circle cx=\"853.29\" cy=\"647.34\" r=\"7.34\" fill=\"#47e6b1\" opacity=\"0.5\" />\n <circle cx=\"910.8\" cy=\"430.97\" r=\"7.34\" fill=\"#47e6b1\" opacity=\"0.5\" />\n <rect\n x=\"544.42\"\n y=\"601.05\"\n width=\"186.48\"\n height=\"153.07\"\n fill=\"url(#fd8d88e0-7826-450d-9e0b-001d1be709c2)\"\n />\n <path\n d=\"M723.82,639a54.55,54.55,0,0,1,109.1,0v34.91h15.27V639a69.82,69.82,0,0,0-139.65,0v34.91h15.27Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"url(#8d1793c5-b76e-44e2-a52e-569460402331)\"\n />\n <path\n d=\"M726,638.25a52.37,52.37,0,1,1,104.74,0v33.52H845.4V638.25a67,67,0,0,0-134.06,0v33.52H726Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#f5f5f5\"\n />\n <rect\n x=\"546.32\"\n y=\"602.45\"\n width=\"182.24\"\n height=\"148.73\"\n fill=\"#6c63ff\"\n />\n <rect\n x=\"546.32\"\n y=\"602.45\"\n width=\"182.24\"\n height=\"148.73\"\n fill=\"#f5f5f5\"\n />\n <rect\n x=\"546.32\"\n y=\"631.77\"\n width=\"182.24\"\n height=\"90.07\"\n fill=\"#6c63ff\"\n />\n <path\n d=\"M791.73,727a13.36,13.36,0,1,0-23.08,9.15v28.51a9.72,9.72,0,0,0,19.44,0V736.18A13.3,13.3,0,0,0,791.73,727Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"url(#4745700d-8097-45ff-9f71-625443fc4ad8)\"\n />\n <path\n d=\"M789.89,729.38a11.52,11.52,0,1,0-19.9,7.89v24.58a8.38,8.38,0,1,0,16.76,0V737.27A11.47,11.47,0,0,0,789.89,729.38Z\"\n transform=\"translate(-140.93 -67.23)\"\n opacity=\"0.2\"\n />\n </svg>\n );\n};\n","const { __ } = wp.i18n;\n\nimport Illustration from \"./illustration\";\nconst { Flex, FlexItem, FlexBlock } = wp.components;\n\nexport default () => {\n return (\n <Flex style={{ padding: \"30px\", background: \"#fff\" }}>\n <FlexItem>\n <Illustration width=\"250px\" />\n </FlexItem>\n <FlexBlock style={{ marginLeft: \"20px\" }}>\n <h1>{__(\"Get detailed video insights.\", \"presto-player\")}</h1>\n <p>\n {__(\n \"Upgrade to Pro and get video insights like plays, watch-time, and drop off numbers.\",\n \"presto-player\"\n )}\n </p>\n <a\n href=\"https://prestoplayer.com\"\n target=\"_blank\"\n className=\"button button-primary\"\n >\n {__(\"Learn More\", \"presto-player\")}\n </a>\n </FlexBlock>\n </Flex>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { apiFetch } = wp;\nconst { useState } = wp.element;\nconst { createHigherOrderComponent } = wp.compose;\n\n/**\n * Higher order component factory\n *\n * @return {Function} The higher order component.\n */\nexport default () =>\n createHigherOrderComponent(\n (WrappedComponent) => (props) => {\n const [loading, setLoading] = useState(false);\n const [page, setPage] = useState(1);\n const [total, setTotal] = useState(0);\n const [totalPages, setTotalPages] = useState(0);\n const [data, setData] = useState([]);\n const [error, setError] = useState(\"\");\n\n // fetch data\n // we could also abstract this function to make it reusable\n // or do a higher order component\n const fetchData = async ({ endpoint, params = {} }) => {\n setLoading(true);\n\n let responseData;\n try {\n responseData = await apiFetch({\n path: wp.url.addQueryArgs(endpoint, {\n page,\n per_page: 5,\n ...params,\n }),\n parse: false,\n }).then((res) => {\n const total = res.headers\n ? parseInt(res.headers.get(\"X-WP-Total\"))\n : 0;\n const totalPages = res.headers\n ? parseInt(res.headers.get(\"X-WP-TotalPages\"))\n : 0;\n setTotal(total);\n setTotalPages(totalPages);\n return res.json();\n });\n\n setData(responseData);\n } catch (e) {\n console.error(e);\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <WrappedComponent\n loading={loading}\n setLoading={setLoading}\n fetchData={fetchData}\n page={page}\n setPage={setPage}\n total={total}\n setTotal={setTotal}\n totalPages={totalPages}\n setTotalPages={setTotalPages}\n data={data}\n setData={setData}\n error={error}\n setError={setError}\n {...props}\n />\n );\n },\n \"withDataList\"\n );\n","const { __, sprintf } = wp.i18n;\n\nexport const humanSeconds = (savedSeconds) => {\n const hours = Math.floor(savedSeconds / 60 / 60);\n const minutes = Math.floor(savedSeconds / 60) - hours * 60;\n const seconds = savedSeconds % 60;\n\n let out = \"\";\n if (hours) {\n out += sprintf(__(\"%d hours\", \"presto-player\"), hours) + \", \";\n }\n if (minutes) {\n out += sprintf(__(\"%d minutes\", \"presto-player\"), minutes) + \" \";\n }\n if ((hours || minutes) && seconds) {\n out += __(\"and\", \"presto-player\") + \" \";\n }\n\n out += sprintf(__(\"%d seconds\", \"presto-player\"), seconds);\n\n return out;\n};\n\nexport const timestamp = (seconds) => {\n seconds = parseInt(seconds || 0) * 1000;\n return new Date(seconds).toISOString().substr(11, 8);\n};\n\n/*\n * This function remove the user timezone from new Date()\n * https://stackoverflow.com/a/29774197/1972413\n */\nexport const convertDateTimeToAbsoluteDate = (dateTime) => {\n const offset = new Date().getTimezoneOffset();\n var date = new Date(dateTime.getTime() - offset * 60 * 1000);\n return date.toISOString().split(\"T\")[0] + \"T00:00:00.000Z\";\n};\n","const { Spinner, Flex, FlexItem } = wp.components;\nexport default ({ height = 100 }) => {\n return (\n <Flex style={{ height: `${height}px` }} align=\"center\" justify=\"center\">\n <FlexItem>\n <Spinner />\n </FlexItem>\n </Flex>\n );\n};\n","const { __ } = wp.i18n;\nconst { Card, CardBody, Flex, FlexBlock, Button, ButtonGroup } = wp.components;\nconst { useState, useEffect } = wp.element;\n\nexport default ({ page, setPage, perPage, total, totalPages }) => {\n // do we have prev/next\n const [hasPrevious, setHasPrevious] = useState(false);\n const [hasNext, setHasNext] = useState(false);\n\n // end and start cursors\n const [end, setEnd] = useState(0);\n const [start, setStart] = useState(0);\n\n // set end and start\n useEffect(() => {\n setEnd(Math.min(perPage * page, total));\n setStart(perPage * (page - 1) + 1);\n }, [perPage, page, total]);\n\n // update page when pagination is clicked\n const nextPage = () => {\n setPage(Math.min(totalPages, page + 1));\n };\n const prevPage = () => {\n setPage(Math.max(page - 1, 0));\n };\n\n // set prev/next\n useEffect(() => {\n setHasPrevious(page - 1 > 0);\n setHasNext(totalPages >= page + 1);\n }, [page, totalPages]);\n\n return (\n <Card size=\"large\" className=\"presto-card pagination\">\n <CardBody className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n {sprintf(\n __(\"Showing %1s to %2s of %3s\", \"presto-player\"),\n start,\n end,\n total\n )}\n </FlexBlock>\n <FlexBlock>\n <Flex justify=\"flex-end\">\n {\n <ButtonGroup>\n <Button\n isSecondary\n disabled={!hasPrevious}\n onClick={prevPage}\n >\n {__(\"Previous\", \"presto-player\")}\n </Button>\n <Button isSecondary disabled={!hasNext} onClick={nextPage}>\n {__(\"Next\", \"presto-player\")}\n </Button>\n </ButtonGroup>\n }\n </Flex>\n </FlexBlock>\n </Flex>\n </CardBody>\n </Card>\n );\n};\n","const { __ } = wp.i18n;\nconst { useRef, useEffect, useState } = wp.element;\nconst { Card, CardBody, Flex, FlexBlock, Button, ButtonGroup } = wp.components;\n\nimport classNames from \"classnames\";\n\nexport default ({ columns, data, onRowClick, title }) => {\n if (!data.length) {\n return (\n <Card size=\"large\" className=\"presto-card table-card\">\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">{title}</div>\n <div style={{ opacity: 0.65 }}>\n {__(\"No data available.\", \"presto-player\")}\n </div>\n </CardBody>\n </Card>\n );\n }\n\n return (\n <Card size=\"large\" className=\"presto-card table-card\">\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">{title}</div>\n <table\n role=\"table\"\n className={classNames(\"presto-table\", { \"is-clickable\": onRowClick })}\n >\n <thead role=\"rowgroup\">\n <tr role=\"row\">\n {columns &&\n columns.map((column) => {\n return (\n <th key={column.key} role=\"columnheader\">\n {column.label}\n </th>\n );\n })}\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n {data.map((row, rowIndex) => {\n return (\n <tr\n role=\"row\"\n key={`row-${rowIndex}`}\n onClick={() => onRowClick && onRowClick(row)}\n >\n {columns.map((column, columnIndex) => {\n return (\n <td\n role=\"cell\"\n data-title={column.label}\n key={`row-${rowIndex}-${columnIndex}`}\n aria-label={column.label}\n >\n {column.render ? (\n column.render(row)\n ) : (\n <div>{column.value(row)}</div>\n )}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </CardBody>\n </Card>\n );\n};\n","const { __ } = wp.i18n;\nconst { useEffect, useState } = wp.element;\nconst { Card, CardBody } = wp.components;\nimport Loading from \"@/admin/settings/components/Loading\";\nimport Pagination from \"@/admin/ui/Pagination\";\nimport Table from \"@/admin/ui/Table\";\n\nexport default ({\n perPage = 10,\n title,\n page,\n setPage,\n loading,\n total,\n totalPages,\n columns,\n data,\n onSelect,\n}) => {\n if (loading) {\n return (\n <Card>\n <Loading />\n </Card>\n );\n }\n\n if (!data?.length) {\n return (\n <Card size=\"large\" className=\"presto-card\">\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">{title}</div>\n <div style={{ opacity: 0.65 }}>\n {__(\"No data available.\", \"presto-player\")}\n </div>\n </CardBody>\n </Card>\n );\n }\n\n return (\n <div className=\"datatable\">\n <Table\n data={data}\n columns={columns}\n perPage={perPage}\n onRowClick={onSelect}\n title={title}\n />\n\n {!!total && (\n <Pagination\n page={page}\n setPage={setPage}\n perPage={perPage}\n total={total}\n totalPages={totalPages}\n />\n )}\n </div>\n );\n};\n","const { __ } = wp.i18n;\nconst { useEffect } = wp.element;\nconst { compose } = wp.compose;\n\nimport { history } from \"@/router/context\";\nimport withDataList from \"../hocs/withDataList\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\nimport DataTable from \"./DataTable\";\n\nexport default compose([withDataList()])(\n ({\n loading,\n page,\n setPage,\n total,\n totalPages,\n data,\n error,\n fetchData,\n startDate,\n endDate,\n }) => {\n // 10 per page\n const per_page = 5;\n\n // fetch data when page changes\n useEffect(() => {\n fetchData({\n endpoint: \"/presto-player/v1/analytics/top-users\",\n params: {\n per_page,\n ...(startDate\n ? { start: convertDateTimeToAbsoluteDate(startDate) }\n : {}),\n ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),\n },\n });\n }, [page, startDate, endDate]);\n\n // navigate to user screen here\n const navigate = (id) => {\n history.push(`#/user/${id}`);\n };\n\n const columns = [\n {\n key: \"name\",\n label: __(\"Name\", \"presto-player\"),\n value: (row) => row?.user?.name,\n },\n {\n key: \"total_view\",\n label: __(\"Total View\", \"presto-player\"),\n value: (row) => row?.stats?.[0]?.data,\n },\n {\n key: \"avg_view_time\",\n label: __(\"Avg View Time\", \"presto-player\"),\n render: (row) => (\n <div className=\"presto-badge\">{row?.stats?.[1]?.data}</div>\n ),\n },\n ];\n\n if (error) {\n return { error };\n }\n\n return (\n <DataTable\n title={__(\"Top Users\", \"presto-player\")}\n page={page}\n perPage={per_page}\n setPage={setPage}\n loading={loading}\n total={total}\n totalPages={totalPages}\n columns={columns}\n data={data}\n onSelect={(row) => navigate(row?.user?.id)}\n />\n );\n }\n);\n","const { __ } = wp.i18n;\nconst { useEffect } = wp.element;\nconst { compose } = wp.compose;\n\nimport { history } from \"@/router/context\";\nimport withDataList from \"../hocs/withDataList\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\nimport DataTable from \"./DataTable\";\n\nexport default compose([withDataList()])(\n ({\n loading,\n page,\n setPage,\n total,\n totalPages,\n data,\n error,\n fetchData,\n startDate,\n endDate,\n userId,\n }) => {\n // 10 per page\n const per_page = 10;\n\n // fetch data when page changes\n useEffect(() => {\n fetchData({\n endpoint: \"/presto-player/v1/analytics/top-videos\",\n params: {\n per_page,\n ...(startDate\n ? { start: convertDateTimeToAbsoluteDate(startDate) }\n : {}),\n ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),\n ...(userId ? { user_id: userId } : {}),\n },\n });\n }, [page, startDate, endDate]);\n\n const navigate = (id) => {\n history.push(`#/video/${id}`);\n };\n\n const columns = [\n {\n key: \"name\",\n label: __(\"Name\", \"presto-player\"),\n render(row) {\n return (\n <h3 style={{ marginBottom: 0, wordBreak: \"break-all\" }}>\n {row.video.title\n ? row.video.title\n : __(\"Untitled\", \"presto-player\")}\n </h3>\n );\n },\n },\n {\n key: \"total_view\",\n label: __(\"Total View\", \"presto-player\"),\n value(row) {\n return row.stats[0].data;\n },\n },\n {\n key: \"avg_view_time\",\n label: __(\"Avg View Time\", \"presto-player\"),\n render(row) {\n return <div className=\"presto-badge\">{row.stats[1].data}</div>;\n },\n },\n {\n key: \"view_more\",\n label: \"\",\n render(row) {\n return (\n <span\n style={{\n color: \"var(--wp-admin-theme-color, #007cba)\",\n }}\n >\n {__(\"View Details\", \"presto-player\")} &rarr;\n </span>\n );\n },\n },\n ];\n\n if (error) {\n return { error };\n }\n\n return (\n <DataTable\n title={__(\"Top Media\", \"presto-player\")}\n perPage={per_page}\n page={page}\n setPage={setPage}\n loading={loading}\n total={total}\n totalPages={totalPages}\n columns={columns}\n data={data}\n onSelect={(row) => {\n navigate(row?.video?.id);\n }}\n />\n );\n }\n);\n","// import apiFetch from \"@wordpress/api-fetch\";\nconst { apiFetch } = wp;\n\n// nonce and root\napiFetch.use(apiFetch.createNonceMiddleware(prestoPlayer.nonce));\napiFetch.use(\n apiFetch.createRootURLMiddleware(\n prestoPlayer.root + prestoPlayer.prestoVersionString\n )\n);\n\nexport default apiFetch;\n","const { __, sprintf } = wp.i18n;\nconst { Card, CardBody } = wp.components;\nconst { useState, useEffect, useRef } = wp.element;\n\nimport Loading from \"@/admin/settings/components/Loading\";\nimport apiFetch from \"@/shared/services/fetch\";\nimport Chart from \"react-apexcharts\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default (props) => {\n const [loading, setLoading] = useState(true);\n const [totalViews, setTotalViews] = useState(0);\n const { startDate, endDate } = props;\n const [series, setSeries] = useState([\n {\n name: \"Views\",\n data: [],\n },\n ]);\n\n const chart = {\n options: {\n chart: {\n toolbar: {\n show: false,\n },\n },\n yaxis: {\n min: 0,\n labels: {\n formatter: function (num) {\n if (num < 1) {\n return 0;\n }\n return Math.abs(num) > 999\n ? Math.sign(num) * (Math.abs(num) / 1000).toFixed(1) + \"k\"\n : Math.sign(num) * Math.abs(num).toFixed(0);\n },\n },\n },\n colors: [\"#7c3aed\"],\n xaxis: {\n type: \"datetime\",\n min: new Date(startDate).setHours(0, 0, 0, 0),\n max: new Date(endDate).setHours(23, 59, 59, 999),\n },\n dataLabels: {\n enabled: false,\n },\n stroke: { curve: \"smooth\" },\n fill: {\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 90, 100],\n },\n },\n },\n };\n\n // fetch only if we already mounted\n useEffect(() => {\n fetchViews();\n }, [props]);\n\n const fetchViews = () => {\n setLoading(true);\n apiFetch({\n path:\n \"/presto-player/v1/analytics/views?\" +\n jQuery.param({\n ...(startDate\n ? { start: convertDateTimeToAbsoluteDate(startDate) }\n : {}),\n ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),\n }),\n parse: false,\n })\n .then(async (res) => {\n setTotalViews(res.headers && res.headers.get(\"X-WP-Total\"));\n const data = await res.json();\n\n let series = [];\n if (data.length) {\n data.forEach((item) => {\n series.push({\n x: item.date_time,\n y: item.total,\n });\n });\n }\n setSeries([\n {\n name: \"Views\",\n data: series,\n },\n ]);\n })\n .catch((e) => {\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n if (loading) {\n return (\n <CardBody>\n <Loading />\n </CardBody>\n );\n }\n\n return (\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">\n {sprintf(__(\"%d Unique Views\", \"presto-player\"), totalViews)}\n </div>\n <Chart options={chart.options} series={series} type=\"area\" height={280} />\n </CardBody>\n );\n};\n","const { __, sprintf } = wp.i18n;\nconst { Card, CardBody } = wp.components;\nconst { useState, useEffect, useRef } = wp.element;\n\nimport Loading from \"@/admin/settings/components/Loading\";\nimport apiFetch from \"@/shared/services/fetch\";\nimport Chart from \"react-apexcharts\";\nimport { convertDateTimeToAbsoluteDate, humanSeconds } from \"../util\";\n\nexport default (props) => {\n const [loading, setLoading] = useState(true);\n const [averageTime, setAverageTime] = useState(0);\n const { startDate, endDate } = props;\n const [series, setSeries] = useState([\n {\n name: \"Views\",\n data: [],\n },\n ]);\n\n const chart = {\n options: {\n chart: {\n toolbar: {\n show: false,\n },\n },\n yaxis: {\n labels: {\n formatter: function (num) {\n return Math.abs(num) > 999\n ? Math.sign(num) * (Math.abs(num) / 1000).toFixed(1) + \"k min\"\n : (Math.sign(num) * Math.abs(num)).toFixed(1) + \"min\";\n },\n },\n },\n colors: [\"#7c3aed\"],\n xaxis: {\n type: \"datetime\",\n min: new Date(startDate).setHours(0, 0, 0, 0),\n max: new Date(endDate).setHours(23, 59, 59, 999),\n },\n dataLabels: {\n enabled: false,\n },\n stroke: { curve: \"smooth\" },\n fill: {\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 90, 100],\n },\n },\n },\n };\n\n // fetch only if we already mounted\n useEffect(() => {\n fetchMinutes();\n }, [props]);\n\n const fetchMinutes = () => {\n setLoading(true);\n apiFetch({\n path:\n \"/presto-player/v1/analytics/watch-time?\" +\n jQuery.param({\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n }),\n parse: false,\n })\n .then(async (res) => {\n const { data, average } = await res.json();\n\n setAverageTime(parseFloat(average));\n\n let series = [];\n if (data.length) {\n data.forEach((item) => {\n series.push({\n x: item.date_time,\n y: (item.total / 60).toFixed(2),\n });\n });\n }\n setSeries([\n {\n name: \"Watch Time\",\n data: series,\n },\n ]);\n })\n .catch((e) => {\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n if (loading) {\n return (\n <CardBody>\n <Loading />\n </CardBody>\n );\n }\n\n return (\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">\n {sprintf(\n __(\"%s average watch time\", \"presto-player\"),\n humanSeconds(averageTime)\n )}\n </div>\n <Chart options={chart.options} series={series} type=\"area\" height={280} />\n </CardBody>\n );\n};\n","const { __ } = wp.i18n;\nconst { Panel, TabPanel } = wp.components;\n\nimport TotalViewsGraph from \"./TotalViewsGraph\";\nimport TotalWatchGraph from \"./TotalWatchGraph\";\n\nexport default ({ startDate, endDate }) => {\n return (\n <Panel>\n <TabPanel\n className=\"presto-module-tabs\"\n onSelect={() => {}}\n tabs={[\n {\n name: \"views\",\n title: __(\"Views\", \"presto-player\"),\n },\n {\n name: \"watch\",\n title: __(\"Watch Time\", \"presto-player\"),\n },\n ]}\n >\n {(tab) => {\n switch (tab.name) {\n case \"views\":\n return (\n <TotalViewsGraph startDate={startDate} endDate={endDate} />\n );\n case \"watch\":\n return (\n <TotalWatchGraph startDate={startDate} endDate={endDate} />\n );\n default:\n return <>Not Found</>;\n }\n }}\n </TabPanel>\n </Panel>\n );\n};\n","const { __ } = wp.i18n;\nconst { useRef, useEffect, useState } = wp.element;\n\nimport Litepicker from \"litepicker\";\nimport \"litepicker/dist/plugins/ranges\";\n\nexport default ({ startDate, setStartDate, endDate, setEndDate }) => {\n const dateRef = useRef();\n const [inputSize, setInputSize] = useState(25);\n\n let datepicker;\n useEffect(() => {\n datepicker = new Litepicker({\n element: dateRef?.current,\n singleMode: false,\n format: \"MMMM D YYYY\",\n autoApply: false,\n plugins: [\"ranges\"],\n maxDate: new Date(),\n numberOfMonths: 2,\n buttonText: {\n apply: __(\"Apply\", \"presto-player\"),\n cancel: __(\"Cancel\", \"presto-player\"),\n },\n dropdowns: {\n minYear: 1990,\n maxYear: null,\n months: true,\n years: true,\n },\n setup: (picker) => {\n picker.setDateRange(startDate, endDate);\n picker.on(\"button:apply\", (start, end) => {\n setStartDate(start.dateInstance);\n setEndDate(end.dateInstance);\n setInputSize(dateRef.current.value.length);\n });\n },\n });\n }, [dateRef]);\n\n return (\n <div className=\"component-base-control\">\n <div className=\"components-base-control__field\">\n <input\n className=\"components-text-control__input presto-settings__date-select\"\n ref={dateRef}\n size={inputSize}\n />\n </div>\n </div>\n );\n};\n","/** @jsx jsx */\n\nconst { __ } = wp.i18n;\nconst { Flex, FlexBlock, FlexItem } = wp.components;\nconst { useState, useEffect } = wp.element;\n\nimport TopUsers from \"../components/TopUsers\";\nimport TopVideos from \"../components/TopVideos\";\nimport OverviewPanel from \"../components/OverviewPanel\";\nimport DatePicker from \"../components/DatePicker\";\nimport apiFetch from \"@wordpress/api-fetch\";\nimport { Notice } from \"@wordpress/components\";\nimport { css, jsx } from \"@emotion/core\";\n\nexport default function ({ startDate, endDate, setStartDate, setEndDate }) {\n const [noticeStatus, setNoticeStatus] = useState(false);\n\n // run this only on mount.\n useEffect(() => {\n apiFetch({ path: \"/wp/v2/settings\" }).then((post) => {\n if (post?.presto_player_analytics?.enable === false) {\n setNoticeStatus(true);\n }\n });\n }, []);\n\n return (\n <>\n {/* Component decleared below this code */}\n {noticeStatus ? <MyNotice /> : \"\"}\n <Flex>\n <FlexBlock>\n <h1>{__(\"Analytics\", \"presto-player\")}</h1>\n </FlexBlock>\n <FlexItem>\n <DatePicker\n startDate={startDate}\n setStartDate={setStartDate}\n endDate={endDate}\n setEndDate={setEndDate}\n />\n </FlexItem>\n </Flex>\n\n <div className=\"presto-flow\">\n <div className=\"presto-dashboard\">\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <OverviewPanel startDate={startDate} endDate={endDate} />\n </div>\n <div className=\"presto-dashboard__item\">\n <TopUsers startDate={startDate} endDate={endDate} />\n </div>\n </div>\n\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <TopVideos startDate={startDate} endDate={endDate} />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n}\n\nconst MyNotice = () => (\n <Notice\n css={css`\n margin: 0 0 1em 0 !important;\n `}\n status=\"warning\"\n isDismissible={false}\n >\n <p>\n {__(\n \"Analytics are currently disabled. To collect analytics, turn them on in your settings page.\",\n \"presto-player\"\n )}\n </p>\n </Notice>\n);\n","const { Card, CardBody } = wp.components;\nimport Loading from \"@/admin/settings/components/Loading\";\n\nexport default ({ loading, title, value, label }) => {\n if (loading) {\n return (\n <Card>\n <CardBody>\n <Loading />\n </CardBody>\n </Card>\n );\n }\n\n return (\n <Card className=\"presto-player__stat-card\">\n <CardBody>\n <div className=\"presto-subtitle\">{title}</div>\n <h1>{value}</h1>\n <div>{label}</div>\n </CardBody>\n </Card>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { apiFetch } = wp;\nconst { useState } = wp.element;\nconst { createHigherOrderComponent } = wp.compose;\n\n/**\n * Higher order component factory\n *\n * @return {Function} The higher order component.\n */\nexport default () =>\n createHigherOrderComponent(\n (WrappedComponent) => (props) => {\n const [loading, setLoading] = useState(false);\n const [stat, setStat] = useState([]);\n const [error, setError] = useState(\"\");\n\n // fetch data\n // we could also abstract this function to make it reusable\n // or do a higher order component\n const fetchData = async ({ endpoint, params = {} }) => {\n setLoading(true);\n\n let responseData;\n try {\n responseData = await apiFetch({\n path: wp.url.addQueryArgs(endpoint, {\n ...params,\n }),\n });\n setStat(responseData);\n } catch (e) {\n console.error(e);\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <WrappedComponent\n loading={loading}\n setLoading={setLoading}\n fetchData={fetchData}\n stat={stat}\n setStat={setStat}\n error={error}\n setError={setError}\n {...props}\n />\n );\n },\n \"withStat\"\n );\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { userId, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/user/${userId}/total-views`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseInt(stat?.view)}\n title={__(\"Total Views\", \"presto-player\")}\n />\n );\n});\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { userId, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/user/${userId}/average-watchtime`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseFloat(stat?.view).toFixed(2)}\n title={__(\"Average Watch Time\", \"presto-player\")}\n label={__(\"seconds\", \"presto-player\")}\n />\n );\n});\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { userId, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/user/${userId}/total-watchtime`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseFloat(stat?.view).toFixed(2)}\n title={__(\"Total Watch Time\", \"presto-player\")}\n label={__(\"seconds\", \"presto-player\")}\n />\n );\n});\n","/** @jsx jsx */\n\nconst { __ } = wp.i18n;\n\nconst { Flex, FlexBlock, FlexItem, Spinner, Button } = wp.components;\n\nimport { history } from \"@/router/context\";\nimport DatePicker from \"../components/DatePicker\";\nimport TopVideos from \"../components/TopVideos\";\nimport TotalVideoViewsByUser from \"../components/TotalVideoViewsByUser\";\nimport VideoAverageWatchTimeByUser from \"../components/VideoAverageWatchTimeByUser\";\nimport VideoTotalWatchTimeByUser from \"../components/VideoTotalWatchTimeByUser\";\n\nconst { useEffect, useState } = wp.element;\nconst { apiFetch } = wp;\n\nimport { css, jsx } from \"@emotion/core\";\n\nconst User = ({ route, startDate, endDate, setStartDate, setEndDate }) => {\n const [loading, setLoading] = useState(true);\n const [user, setUser] = useState({});\n const [error, setError] = useState(\"\");\n\n const back = () => {\n history.push(`#/`);\n };\n\n const getUser = async () => {\n setLoading(true);\n try {\n let user = await apiFetch({\n url: `/wp-json/wp/v2/users/${route?.params?.id}?context=edit`,\n });\n setUser(user);\n } catch (e) {\n if (e.code === \"rest_no_route\") {\n setError(\"User Not Found\");\n }\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n getUser();\n }, []);\n\n if (error) {\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <h2>{error}</h2>\n </FlexBlock>\n </Flex>\n </div>\n );\n }\n\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <Button isSecondary onClick={back}>\n &larr; {__(\"Back to Dashboard\", \"presto-player\")}\n </Button>\n </FlexBlock>\n </Flex>\n <Flex wrap>\n <FlexBlock>\n {loading ? (\n <Spinner />\n ) : (\n <div\n css={css`\n display: flex;\n align-items: center;\n\n .presto__edit-user-button {\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s ease;\n }\n\n &:hover {\n .presto__edit-user-button {\n opacity: 1;\n visibility: visible;\n }\n }\n `}\n >\n <div>\n <h1 className=\"presto-dashboard__title\">{user?.name}</h1>\n <p\n css={css`\n margin-top: -10px;\n opacity: 0.65;\n `}\n >\n {user?.email}\n </p>\n </div>\n {!!user.id && (\n <div\n className=\"presto__edit-user-button\"\n css={css`\n margin: 0 20px;\n `}\n >\n <Button\n href={`/wp-admin/user-edit.php?user_id=${user?.id}`}\n isSecondary\n isSmall\n >\n {__(\"View Profile\", \"presto-player\")} &rarr;\n </Button>\n </div>\n )}\n </div>\n )}\n </FlexBlock>\n <FlexItem>\n <DatePicker\n startDate={startDate}\n setStartDate={setStartDate}\n endDate={endDate}\n setEndDate={setEndDate}\n />\n </FlexItem>\n </Flex>\n\n <div className=\"presto-dashboard presto-flow\">\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item\">\n <TotalVideoViewsByUser\n userId={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n <div className=\"presto-dashboard__item\">\n <VideoAverageWatchTimeByUser\n userId={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n <div className=\"presto-dashboard__item\">\n <VideoTotalWatchTimeByUser\n userId={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n </div>\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <TopVideos\n startDate={startDate}\n endDate={endDate}\n userId={route?.params?.id}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default User;\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { video_id, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/video/${video_id}/average-watchtime`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseInt(stat)}\n title={__(\"Average Watch Time\", \"presto-player\")}\n label={__(\"seconds\", \"presto-player\")}\n />\n );\n});\n","const { __, sprintf } = wp.i18n;\nconst { Card, CardBody } = wp.components;\nconst { useState, useEffect, useRef } = wp.element;\n\nimport Loading from \"@/admin/settings/components/Loading\";\nimport apiFetch from \"@/shared/services/fetch\";\nimport Chart from \"react-apexcharts\";\nimport { convertDateTimeToAbsoluteDate, timestamp } from \"../util\";\n\nexport default (props) => {\n const { video_id, startDate, endDate } = props;\n const [loading, setLoading] = useState(true);\n\n const [series, setSeries] = useState([\n {\n name: \"Views\",\n data: [],\n },\n ]);\n\n const fetchTimeline = () => {\n setLoading(true);\n apiFetch({\n path: wp.url.addQueryArgs(\n `/presto-player/v1/analytics/video/${video_id}/timeline`,\n {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n }\n ),\n })\n .then((data) => {\n let series = [];\n if (data.length) {\n data.forEach((item) => {\n // add another to them\n series.push({\n x: item.watch_time,\n y: item.total,\n });\n });\n }\n setSeries([\n {\n name: \"Viewers\",\n data: series,\n },\n ]);\n })\n .catch((e) => {\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n useEffect(() => {\n fetchTimeline();\n }, [startDate, endDate]);\n\n const chart = {\n options: {\n chart: {\n toolbar: {\n show: false,\n },\n },\n tickAmount: 1,\n yaxis: {\n labels: {\n formatter: function (num) {\n return parseInt(num);\n },\n },\n },\n xaxis: {\n labels: {\n formatter: function (num) {\n return timestamp(num);\n },\n },\n },\n colors: [\"#7c3aed\"],\n dataLabels: {\n enabled: false,\n },\n stroke: { curve: \"smooth\" },\n fill: {\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 90, 100],\n },\n },\n },\n };\n\n if (loading) {\n return (\n <Card>\n <CardBody>\n <Loading />\n </CardBody>\n </Card>\n );\n }\n\n return (\n <Card>\n <CardBody>\n <div className=\"presto-card__title\">\n {__(\"Audience Retention\", \"presto-player\")}\n </div>\n <Chart\n options={chart.options}\n series={series}\n type=\"area\"\n height={280}\n />\n </CardBody>\n </Card>\n );\n};\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { video_id, startDate, endDate, stat, fetchData, loading } = props;\n\n // fetch data when page changes\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/video/${video_id}/views`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseInt(stat)}\n title={__(\"Unique Views\", \"presto-player\")}\n />\n );\n});\n","export const dashToPascalCase = (str) => str\n .toLowerCase()\n .split('-')\n .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))\n .join('');\nexport const camelToDashCase = (str) => str.replace(/([A-Z])/g, (m) => `-${m[0].toLowerCase()}`);\n//# sourceMappingURL=case.js.map","import { camelToDashCase } from './case';\nexport const attachProps = (node, newProps, oldProps = {}) => {\n // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first\n if (node instanceof Element) {\n // add any classes in className to the class list\n const className = getClassName(node.classList, newProps, oldProps);\n if (className !== '') {\n node.className = className;\n }\n Object.keys(newProps).forEach((name) => {\n if (name === 'children' ||\n name === 'style' ||\n name === 'ref' ||\n name === 'class' ||\n name === 'className' ||\n name === 'forwardedRef') {\n return;\n }\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n if (!isCoveredByReact(eventNameLc)) {\n syncEvent(node, eventNameLc, newProps[name]);\n }\n }\n else {\n node[name] = newProps[name];\n const propType = typeof newProps[name];\n if (propType === 'string') {\n node.setAttribute(camelToDashCase(name), newProps[name]);\n }\n }\n });\n }\n};\nexport const getClassName = (classList, newProps, oldProps) => {\n const newClassProp = newProps.className || newProps.class;\n const oldClassProp = oldProps.className || oldProps.class;\n // map the classes to Maps for performance\n const currentClasses = arrayToMap(classList);\n const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []);\n const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []);\n const finalClassNames = [];\n // loop through each of the current classes on the component\n // to see if it should be a part of the classNames added\n currentClasses.forEach((currentClass) => {\n if (incomingPropClasses.has(currentClass)) {\n // add it as its already included in classnames coming in from newProps\n finalClassNames.push(currentClass);\n incomingPropClasses.delete(currentClass);\n }\n else if (!oldPropClasses.has(currentClass)) {\n // add it as it has NOT been removed by user\n finalClassNames.push(currentClass);\n }\n });\n incomingPropClasses.forEach((s) => finalClassNames.push(s));\n return finalClassNames.join(' ');\n};\n/**\n * Checks if an event is supported in the current execution environment.\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nexport const isCoveredByReact = (eventNameSuffix) => {\n if (typeof document === 'undefined') {\n return true;\n }\n else {\n const eventName = 'on' + eventNameSuffix;\n let isSupported = eventName in document;\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n return isSupported;\n }\n};\nexport const syncEvent = (node, eventName, newEventHandler) => {\n const eventStore = node.__events || (node.__events = {});\n const oldEventHandler = eventStore[eventName];\n // Remove old listener so they don't double up.\n if (oldEventHandler) {\n node.removeEventListener(eventName, oldEventHandler);\n }\n // Bind new listener.\n node.addEventListener(eventName, (eventStore[eventName] = function handler(e) {\n if (newEventHandler) {\n newEventHandler.call(this, e);\n }\n }));\n};\nconst arrayToMap = (arr) => {\n const map = new Map();\n arr.forEach((s) => map.set(s, s));\n return map;\n};\n//# sourceMappingURL=attachProps.js.map","import React from 'react';\nexport const setRef = (ref, value) => {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref != null) {\n // Cast as a MutableRef so we can assign current\n ref.current = value;\n }\n};\nexport const mergeRefs = (...refs) => {\n return (value) => {\n refs.forEach(ref => {\n setRef(ref, value);\n });\n };\n};\nexport const createForwardRef = (ReactComponent, displayName) => {\n const forwardRef = (props, ref) => {\n return React.createElement(ReactComponent, Object.assign({}, props, { forwardedRef: ref }));\n };\n forwardRef.displayName = displayName;\n return React.forwardRef(forwardRef);\n};\nexport const defineCustomElement = (tagName, customElement) => {\n if (customElement !== undefined &&\n typeof customElements !== 'undefined' &&\n !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\nexport * from './attachProps';\nexport * from './case';\n//# sourceMappingURL=index.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { attachProps, createForwardRef, dashToPascalCase, isCoveredByReact, mergeRefs, } from './utils';\nexport const createReactComponent = (tagName, ReactComponentContext, manipulatePropsFunction, defineCustomElement) => {\n if (defineCustomElement !== undefined) {\n defineCustomElement();\n }\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component {\n constructor(props) {\n super(props);\n this.setComponentElRef = (element) => {\n this.componentEl = element;\n };\n }\n componentDidMount() {\n this.componentDidUpdate(this.props);\n }\n componentDidUpdate(prevProps) {\n attachProps(this.componentEl, this.props, prevProps);\n }\n render() {\n const _a = this.props, { children, forwardedRef, style, className, ref } = _a, cProps = __rest(_a, [\"children\", \"forwardedRef\", \"style\", \"className\", \"ref\"]);\n let propsToPass = Object.keys(cProps).reduce((acc, name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {\n acc[name] = cProps[name];\n }\n }\n else {\n acc[name] = cProps[name];\n }\n return acc;\n }, {});\n if (manipulatePropsFunction) {\n propsToPass = manipulatePropsFunction(this.props, propsToPass);\n }\n const newProps = Object.assign(Object.assign({}, propsToPass), { ref: mergeRefs(forwardedRef, this.setComponentElRef), style });\n return React.createElement(tagName, newProps, children);\n }\n static get displayName() {\n return displayName;\n }\n };\n // If context was passed to createReactComponent then conditionally add it to the Component Class\n if (ReactComponentContext) {\n ReactComponent.contextType = ReactComponentContext;\n }\n return createForwardRef(ReactComponent, displayName);\n};\n//# sourceMappingURL=createComponent.js.map","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated react proxies */\nimport { createReactComponent } from './react-component-lib';\nexport const PrestoActionBar = /*@__PURE__*/ createReactComponent('presto-action-bar');\nexport const PrestoActionBarController = /*@__PURE__*/ createReactComponent('presto-action-bar-controller');\nexport const PrestoActionBarUi = /*@__PURE__*/ createReactComponent('presto-action-bar-ui');\nexport const PrestoAudio = /*@__PURE__*/ createReactComponent('presto-audio');\nexport const PrestoBunny = /*@__PURE__*/ createReactComponent('presto-bunny');\nexport const PrestoCtaOverlay = /*@__PURE__*/ createReactComponent('presto-cta-overlay');\nexport const PrestoCtaOverlayController = /*@__PURE__*/ createReactComponent('presto-cta-overlay-controller');\nexport const PrestoCtaOverlayUi = /*@__PURE__*/ createReactComponent('presto-cta-overlay-ui');\nexport const PrestoDynamicOverlayUi = /*@__PURE__*/ createReactComponent('presto-dynamic-overlay-ui');\nexport const PrestoDynamicOverlays = /*@__PURE__*/ createReactComponent('presto-dynamic-overlays');\nexport const PrestoEmailOverlay = /*@__PURE__*/ createReactComponent('presto-email-overlay');\nexport const PrestoEmailOverlayController = /*@__PURE__*/ createReactComponent('presto-email-overlay-controller');\nexport const PrestoEmailOverlayUi = /*@__PURE__*/ createReactComponent('presto-email-overlay-ui');\nexport const PrestoMutedOverlay = /*@__PURE__*/ createReactComponent('presto-muted-overlay');\nexport const PrestoPlayer = /*@__PURE__*/ createReactComponent('presto-player');\nexport const PrestoPlayerButton = /*@__PURE__*/ createReactComponent('presto-player-button');\nexport const PrestoPlayerSkeleton = /*@__PURE__*/ createReactComponent('presto-player-skeleton');\nexport const PrestoPlayerSpinner = /*@__PURE__*/ createReactComponent('presto-player-spinner');\nexport const PrestoTimestamp = /*@__PURE__*/ createReactComponent('presto-timestamp');\nexport const PrestoVideo = /*@__PURE__*/ createReactComponent('presto-video');\nexport const PrestoVideoCurtainUi = /*@__PURE__*/ createReactComponent('presto-video-curtain-ui');\nexport const PrestoVimeo = /*@__PURE__*/ createReactComponent('presto-vimeo');\nexport const PrestoYoutube = /*@__PURE__*/ createReactComponent('presto-youtube');\nexport const PrestoYoutubeSubscribeButton = /*@__PURE__*/ createReactComponent('presto-youtube-subscribe-button');\n//# sourceMappingURL=index.js.map","const { useRef, useEffect } = wp.element;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function snackbarNotice({ status = \"success\", message }) {\n wp.data.dispatch(\"core/notices\").createNotice(\n status, // Can be one of: success, info, warning, error.\n message, // Text string to display.\n { type: \"snackbar\" }\n );\n}\n\nexport const bytesToSize = (bytes) => {\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes == 0) return \"0 Byte\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return Math.round(bytes / Math.pow(1024, i), 2) + \" \" + sizes[i];\n};\n\nexport const toDate = (d) => {\n d = new Date(d);\n var hours = d.getHours();\n var minutes = d.getMinutes();\n var ampm = hours >= 12 ? \"pm\" : \"am\";\n hours = hours % 12;\n hours = hours ? hours : 12;\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n\n return (\n d.getDate() +\n \"-\" +\n (d.getMonth() + 1) +\n \"-\" +\n d.getFullYear() +\n \" at \" +\n hours +\n \":\" +\n minutes +\n ampm\n );\n};\n\nexport function timeToSeconds(time) {\n let pieces = time.split(\":\");\n let seconds;\n if (pieces.length > 1) {\n seconds = parseInt(pieces[0]) * 60;\n }\n return parseInt(pieces[1]) + parseInt(seconds);\n}\n\nexport function secondsToTime(number) {\n let seconds = parseInt(number, 10);\n let minutes = Math.floor(seconds / 60);\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n return minutes + \":\" + seconds;\n}\n\nexport function sanitizeTime(time) {\n let draft = time;\n // remove any letters\n draft = draft.replace(/[^\\d\\d:\\d\\d.-]/g, \"\");\n // make sure we have :\n if (!draft.includes(\":\")) {\n return `${draft}:00`;\n }\n\n // must have something before :00\n if (draft.substr(0, draft.indexOf(\":\")).length === 0) {\n draft = `0${draft}`;\n }\n\n // only allow 2 characters after :\n let index = draft.indexOf(\":\");\n draft = draft.substring(0, index + 3);\n return draft;\n}\n\nexport function getProvider(src) {\n const provider = \"self-hosted\";\n\n if (src) {\n const yt_rx = /^(?:https?:\\/\\/)?(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n const has_match_youtube = src.match(yt_rx);\n\n if (has_match_youtube) {\n return \"youtube\";\n }\n\n const vm_rx = /(https?:\\/\\/)?(www\\.)?(player\\.)?vimeo\\.com\\/([a-z]*\\/)*([‌​0-9]{6,11})[?]?.*/;\n const has_match_vimeo = src.match(vm_rx);\n\n if (has_match_vimeo) {\n return \"vimeo\";\n }\n\n if (src.indexOf(\"https://vz-\") > -1 && src.indexOf(\"b-cdn.net\") > -1) {\n return \"bunny\";\n }\n\n if (src.indexOf(\".mp3\") > -1) {\n return \"audio\";\n }\n }\n return provider;\n}\n","import { PrestoPlayer } from \"@presto-player/react\";\nimport { getProvider } from \"../util\";\nconst { useSelect } = wp.data;\n\nexport default ({\n src,\n classes,\n preset,\n branding,\n attributes,\n adminPreview,\n currentTime,\n preload = \"metadata\",\n overlays,\n type,\n}) => {\n const { chapters, mutedOverlay, mutedPreview } = attributes;\n\n const youtube = useSelect((select) => {\n return select(\"presto-player/player\")?.youtube();\n });\n\n const css = useSelect((select) => {\n return select(\"presto-player/player\")?.playerCSS();\n });\n\n const convertHex = (hexCode, opacity = 1) => {\n var hex = hexCode.replace(\"#\", \"\");\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n\n var r = parseInt(hex.substring(0, 2), 16),\n g = parseInt(hex.substring(2, 4), 16),\n b = parseInt(hex.substring(4, 6), 16);\n\n /* Backward compatibility for whole number based opacity values. */\n if (opacity > 1 && opacity <= 100) {\n opacity = opacity / 100;\n }\n\n return \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + opacity + \")\";\n };\n\n const mutedOverlayContent = () => {\n return (\n <div\n className=\"presto-player__overlay is-image\"\n style={{\n position: \"absolute\",\n width: `${mutedOverlay?.width || 100}%`,\n left: `${(mutedOverlay?.focalPoint?.x || 0.5) * 100}%`,\n top: `${(mutedOverlay?.focalPoint?.y || 0.5) * 100}%`,\n }}\n >\n <img\n src={mutedOverlay?.src}\n style={{\n transform: \"translateX(-50%) translateY(-50%)\",\n }}\n />\n </div>\n );\n };\n\n return (\n <div\n className={\"wp-block-video presto-block-video\"}\n style={\n type === \"audio\"\n ? {\n \"--presto-player-border-radius\": `${preset?.border_radius}px`,\n ...(preset?.background_color\n ? {\n \"--plyr-audio-controls-background\": preset.background_color,\n }\n : { \"--plyr-audio-controls-background\": branding?.color }),\n ...(preset?.control_color\n ? {\n \"--plyr-audio-control-color\": preset.control_color,\n \"--plyr-range-thumb-background\": preset.control_color,\n \"--plyr-range-fill-background\": preset.control_color,\n \"--plyr-audio-progress-buffered-background\": convertHex(\n preset.control_color || branding?.color || \"#00b3ff\",\n 0.5\n ),\n }\n : {\n \"--plyr-audio-control-color\": \"#ffffff\",\n \"--plyr-range-thumb-background\": \"#ffffff\",\n \"--plyr-range-fill-background\": \"#ffffff\",\n }),\n \"--plyr-range-thumb-shadow\": `0px`,\n }\n : {\n \"--presto-player-border-radius\": `${preset?.border_radius}px`,\n ...(preset?.caption_background\n ? { \"--plyr-captions-background\": preset.caption_background }\n : {}),\n ...(branding?.color\n ? { \"--plyr-color-main\": branding.color }\n : {}),\n \"--presto-player-email-border-radius\": `${\n preset?.email_collection?.border_radius || 0\n }px`,\n \"--presto-player-logo-width\": `${branding?.logo_width || 75}px`,\n }\n }\n >\n <PrestoPlayer\n src={src}\n css={css}\n classes={classes}\n currentTime={currentTime}\n overlays={overlays}\n isAdmin={true}\n preload={preload}\n preset={preset}\n bunny={{\n thumbnail: attributes?.previewThumbnail,\n preview: attributes?.preview,\n }}\n youtube={{\n channelId: youtube?.channel_id,\n }}\n tracks={\n !!preset?.captions && [\n {\n kind: \"captions\",\n label: \"English\",\n srclang: \"en\",\n src: \"/path/to/captions.en.vtt\",\n default: true,\n },\n ]\n }\n branding={branding}\n chapters={chapters}\n blockAttributes={attributes}\n poster={attributes.poster}\n provider={type === \"audio\" ? \"audio\" : getProvider(src)}\n mediaTitle={attributes.title}\n >\n <div slot=\"player-end\">\n {mutedPreview?.enabled &&\n mutedOverlay?.enabled &&\n mutedOverlayContent()}\n {adminPreview}\n </div>\n </PrestoPlayer>\n </div>\n );\n};\n","const { __ } = wp.i18n;\n\nconst {\n Flex,\n FlexBlock,\n FlexItem,\n Spinner,\n Button,\n TextControl,\n} = wp.components;\n\nimport { history } from \"@/router/context\";\nimport DatePicker from \"../components/DatePicker\";\nimport VideoAverageWatchTime from \"../components/VideoAverageWatchTime\";\nimport VideoTimeline from \"../components/VideoTimeline\";\nimport VideoViews from \"../components/VideoViews\";\nimport Player from \"../../blocks/shared/Player\";\nimport { getProvider } from \"../../blocks/util\";\n\nconst { useEffect, useState } = wp.element;\nconst { apiFetch } = wp;\n\nconst Video = ({ route, startDate, endDate, setStartDate, setEndDate }) => {\n const [loading, setLoading] = useState(true);\n const [video, setVideo] = useState({});\n const [error, setError] = useState(\"\");\n const [thisName, setThisName] = useState(null);\n const [editing, setEditing] = useState(false);\n\n const back = () => {\n history.push(`#/`);\n };\n\n const getVideo = async () => {\n setLoading(true);\n try {\n let video = await apiFetch({\n url: `${prestoPlayer?.root}${prestoPlayer?.prestoVersionString}videos/${route?.params?.id}`,\n });\n setVideo(video);\n setThisName(video?.title);\n } catch (e) {\n if (e.code === \"rest_no_route\") {\n setError(\"Video Not Found\");\n }\n } finally {\n setLoading(false);\n }\n };\n\n const putVideo = async () => {\n console.log(`New Video title ${thisName}`);\n setLoading(true);\n try {\n const data = {\n ...video,\n ...{ title: thisName },\n };\n let saved = await wp.apiFetch({\n method: \"POST\",\n url: wp.url.addQueryArgs(\n `${prestoPlayer.root}${prestoPlayer.prestoVersionString}videos/${video.id}`,\n { _method: \"PUT\" }\n ),\n data,\n });\n\n if (!saved) {\n throw genericError;\n }\n setEditing(false);\n setVideo(saved);\n } catch (e) {\n setError(e?.message ? e.message : genericError);\n } finally {\n setLoading(false);\n }\n };\n\n const cancelEditing = () => {\n setThisName(video?.title);\n setEditing(false);\n };\n\n const renderVideoEditableTitle = () => {\n if (loading) {\n return <Spinner />;\n } else if (editing) {\n return (\n <div className=\"presto-inline-edit presto-inline-edit--editing\">\n <TextControl\n className=\"presto-inline-edit__input\"\n type=\"text\"\n value={thisName}\n onChange={(title) => setThisName(title)}\n />\n <Button\n className=\"presto-inline-edit__button\"\n isPrimary\n onClick={putVideo}\n >\n {\" \"}\n Save{\" \"}\n </Button>\n <Button\n className=\"presto-inline-edit__button\"\n isSecondary\n onClick={cancelEditing}\n >\n {\" \"}\n Cancel{\" \"}\n </Button>\n </div>\n );\n } else {\n return (\n <div className=\"presto-inline-edit\">\n <h1 className=\"presto-dashboard__title presto-inline-edit__text\">\n {video?.title}\n </h1>\n\n <button\n className=\"presto-inline-edit__edit\"\n onClick={() => setEditing(true)}\n >\n <span className=\"dashicon dashicons dashicons-edit\"></span>\n </button>\n </div>\n );\n }\n };\n\n useEffect(() => {\n getVideo();\n }, []);\n\n if (error) {\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <h2>{error}</h2>\n </FlexBlock>\n </Flex>\n </div>\n );\n }\n\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <Button isSecondary onClick={back}>\n &larr; {__(\"Back to Dashboard\", \"presto-player\")}\n </Button>\n </FlexBlock>\n </Flex>\n <Flex wrap>\n <FlexBlock>{renderVideoEditableTitle()}</FlexBlock>\n <FlexItem>\n <DatePicker\n startDate={startDate}\n setStartDate={setStartDate}\n endDate={endDate}\n setEndDate={setEndDate}\n />\n </FlexItem>\n </Flex>\n\n <div className=\"presto-dashboard presto-flow\">\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <VideoViews\n video_id={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n <div className=\"presto-dashboard__item\">\n {!!Object.keys(video || {}).length && (\n <Player\n src={video?.src}\n attributes={{\n title: video.title,\n }}\n type={getProvider(video.src)}\n preset={{\n \"play-large\": true,\n play: true,\n progress: true,\n rewind: true,\n \"fast-forward\": true,\n \"current-time\": true,\n background_color: \"#8421cb\",\n volume: true,\n mute: true,\n i18n: window.prestoPlayer.i18n,\n }}\n />\n )}\n </div>\n <div className=\"presto-dashboard__item\">\n <VideoAverageWatchTime\n video_id={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n </div>\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <VideoTimeline\n video_id={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Video;\n","export const routes = {\n dashboard: {\n path: \"/\",\n },\n video: {\n path: \"/video/:id\",\n },\n user: {\n path: \"/user/:id\",\n },\n};\n","const { useState } = wp.element;\n\nimport { Route, Router } from \"@/router\";\n\nimport AnalyticsUpgrade from \"./pages/AnalyticsUpgrade\";\nimport Dashboard from \"./pages/Dashboard\";\n\nimport User from \"./pages/User\";\nimport Video from \"./pages/Video\";\nimport { routes } from \"./routes\";\n\nexport default () => {\n const scrollToTop = () => {\n window.scrollTo(0, 0);\n };\n\n const [startDate, setStartDate] = useState(\n new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)\n );\n const [endDate, setEndDate] = useState(new Date());\n\n if (!prestoPlayer?.isPremium) {\n return (\n <div className=\"presto-dashboard__content\">\n <AnalyticsUpgrade />\n </div>\n );\n }\n\n return (\n <div className=\"presto-dashboard__content\">\n <Router routes={routes}>\n <Route path={routes.dashboard.path} onRoute={scrollToTop}>\n <Dashboard\n startDate={startDate}\n endDate={endDate}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n />\n </Route>\n <Route path={routes.video.path} onRoute={scrollToTop}>\n <Video\n startDate={startDate}\n endDate={endDate}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n />\n </Route>\n <Route path={routes.user.path} onRoute={scrollToTop}>\n <User\n startDate={startDate}\n endDate={endDate}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n />\n </Route>\n </Router>\n </div>\n );\n};\n","const { render } = wp.element;\n\n/**\n * App\n */\nimport App from \"./App\";\n\n/**\n * styles\n */\nimport \"./analytics.scss\";\n\n/**\n * Render\n */\nrender(<App />, document.getElementById(\"presto-analytics-page\"));\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///external [\"wp\",\"apiFetch\"]","webpack:///external [\"wp\",\"components\"]","webpack:///./src/router/utils.js","webpack:///./src/router/context.js","webpack:///./src/router/route.js","webpack:///./src/router/link.js","webpack:///./src/router/index.js","webpack:///./src/admin/analytics/pages/illustration.js","webpack:///./src/admin/analytics/pages/AnalyticsUpgrade.js","webpack:///./src/admin/analytics/hocs/withDataList.js","webpack:///./src/admin/analytics/util.js","webpack:///./src/admin/settings/components/Loading.js","webpack:///./src/admin/ui/Pagination.js","webpack:///./src/admin/ui/Table.js","webpack:///./src/admin/analytics/components/DataTable.js","webpack:///./src/admin/analytics/components/TopUsers.js","webpack:///./src/admin/analytics/components/TopVideos.js","webpack:///./src/shared/services/fetch.js","webpack:///./src/admin/analytics/components/TotalViewsGraph.js","webpack:///./src/admin/analytics/components/TotalWatchGraph.js","webpack:///./src/admin/analytics/components/OverviewPanel.js","webpack:///./src/admin/analytics/components/DatePicker.js","webpack:///./src/admin/analytics/pages/Dashboard.js","webpack:///./src/admin/ui/StatCard.js","webpack:///./src/admin/analytics/hocs/withStat.js","webpack:///./src/admin/analytics/components/TotalVideoViewsByUser.js","webpack:///./src/admin/analytics/components/VideoAverageWatchTimeByUser.js","webpack:///./src/admin/analytics/components/VideoTotalWatchTimeByUser.js","webpack:///./src/admin/analytics/pages/User.js","webpack:///./src/admin/analytics/components/VideoAverageWatchTime.js","webpack:///./src/admin/analytics/components/VideoTimeline.js","webpack:///./src/admin/analytics/components/VideoViews.js","webpack:///../../../src/components/react-component-lib/utils/case.ts","webpack:///../../../src/components/react-component-lib/utils/attachProps.ts","webpack:///../../../src/components/react-component-lib/utils/index.tsx","webpack:///../../src/components/react-component-lib/createComponent.tsx","webpack:///../src/components/index.ts","webpack:///./src/admin/blocks/util.js","webpack:///./src/admin/blocks/shared/Player.js","webpack:///./src/admin/analytics/pages/Video.js","webpack:///./src/admin/analytics/routes.js","webpack:///./src/admin/analytics/App.js","webpack:///./src/admin/analytics/index.js"],"names":["module","exports","window","locationToRoute","location","path","pathname","hash","query","qs","parse","search","history","createBrowserHistory","RouterContext","wp","element","createContext","route","useContext","prev","Route","onRoute","children","matched","match","checkMatch","substr","cloneElement","Router","props","setState","routes","Object","keys","map","key","unlisten","listen","handleRouteChange","state","defaultRoute","this","NotFound","push","forEach","name","isMatched","data","routerContextValue","is404","Provider","value","Component","width","height","id","data-name","xmlns","xmlnsXlink","viewBox","x1","y1","x2","y2","gradientUnits","offset","stop-color","stop-opacity","xlinkHref","transform","x","y","fill","gradientTransform","opacity","clip-path","points","cx","cy","r","d","__","i18n","components","Flex","FlexItem","FlexBlock","style","padding","background","marginLeft","href","target","className","apiFetch","useState","createHigherOrderComponent","compose","WrappedComponent","loading","setLoading","page","setPage","total","setTotal","totalPages","setTotalPages","setData","error","setError","fetchData","a","endpoint","params","url","addQueryArgs","per_page","then","res","headers","parseInt","get","json","responseData","console","message","sprintf","convertDateTimeToAbsoluteDate","dateTime","Date","getTimezoneOffset","getTime","toISOString","split","Spinner","align","justify","Card","CardBody","Button","ButtonGroup","useEffect","perPage","hasPrevious","setHasPrevious","hasNext","setHasNext","end","setEnd","start","setStart","Math","min","size","isSecondary","disabled","onClick","max","useRef","columns","onRowClick","title","length","role","classNames","column","label","row","rowIndex","columnIndex","data-title","aria-label","render","onSelect","Loading","Table","Pagination","withDataList","startDate","endDate","user","stats","DataTable","userId","user_id","marginBottom","wordBreak","video","color","use","createNonceMiddleware","prestoPlayer","nonce","createRootURLMiddleware","root","prestoVersionString","totalViews","setTotalViews","series","setSeries","chart","options","toolbar","show","yaxis","labels","formatter","num","abs","sign","toFixed","colors","xaxis","type","setHours","dataLabels","enabled","stroke","curve","gradient","shadeIntensity","opacityFrom","opacityTo","stops","fetchViews","jQuery","param","item","date_time","catch","e","finally","averageTime","setAverageTime","fetchMinutes","savedSeconds","hours","minutes","seconds","out","average","parseFloat","floor","Panel","TabPanel","tabs","tab","TotalViewsGraph","TotalWatchGraph","setStartDate","setEndDate","dateRef","inputSize","setInputSize","Litepicker","current","singleMode","format","autoApply","plugins","maxDate","numberOfMonths","buttonText","apply","cancel","dropdowns","minYear","maxYear","months","years","setup","picker","setDateRange","on","dateInstance","ref","noticeStatus","setNoticeStatus","post","presto_player_analytics","enable","DatePicker","OverviewPanel","TopUsers","TopVideos","MyNotice","css","status","isDismissible","stat","setStat","withStat","StatCard","view","User","setUser","getUser","code","wrap","email","isSmall","TotalVideoViewsByUser","VideoAverageWatchTimeByUser","VideoTotalWatchTimeByUser","video_id","watch_time","tickAmount","eventNameSuffix","getProvider","src","indexOf","useSelect","classes","preset","branding","attributes","adminPreview","currentTime","preload","overlays","chapters","mutedOverlay","mutedPreview","youtube","select","playerCSS","border_radius","background_color","control_color","hexCode","hex","replace","substring","g","b","convertHex","caption_background","email_collection","logo_width","PrestoPlayer","isAdmin","bunny","thumbnail","previewThumbnail","preview","channelId","channel_id","tracks","captions","kind","srclang","default","blockAttributes","poster","provider","mediaTitle","slot","position","left","focalPoint","top","TextControl","Video","setVideo","thisName","setThisName","editing","setEditing","getVideo","putVideo","log","method","_method","saved","genericError","cancelEditing","onChange","isPrimary","VideoViews","Player","play","progress","rewind","volume","mute","VideoAverageWatchTime","VideoTimeline","dashboard","scrollToTop","scrollTo","now","isPremium","Dashboard","AnalyticsUpgrade","App","document","getElementById"],"mappings":"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","file":"analytics/admin-1deea871.js","sourcesContent":["(function() { module.exports = window[\"wp\"][\"apiFetch\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","import qs from \"querystringify\";\nexport function locationToRoute(location) {\n // location comes from the history package\n return {\n path: location.pathname,\n hash: location.hash,\n query: qs.parse(location.search),\n };\n}\n","import { createBrowserHistory } from \"history\";\nimport { locationToRoute } from \"./utils\";\n\nexport const history = createBrowserHistory();\nexport const RouterContext = wp.element.createContext({\n route: locationToRoute(history.location),\n});\n","import { RouterContext } from \"./context\";\nconst { useContext } = wp.element;\nimport { match } from \"path-to-regexp\";\nlet prev = \"\";\n\nexport function Route({ path, onRoute, children }) {\n // Extract route from RouterContext\n const { route } = useContext(RouterContext);\n\n const checkMatch = match(`${path}`);\n const matched = checkMatch(`${route.hash.substr(1)}`);\n\n if (!matched) {\n return null;\n }\n\n if (onRoute) {\n if (prev !== matched.path) {\n onRoute();\n }\n prev = matched.path;\n }\n\n return <div>{wp.element.cloneElement(children, { route: matched })}</div>;\n}\n","const { useContext } = wp.element;\nimport { RouterContext, history } from \"./context\";\nimport classNames from \"classnames\";\nimport { match } from \"path-to-regexp\";\n\nexport function Link(props) {\n const { to, onClick, children, activeClassName } = props;\n const { route } = useContext(RouterContext);\n\n let state = { ...props };\n delete state.activeClassName;\n\n const isActive = () => {\n const checkMatch = match(`${to}`);\n return checkMatch(`${route.hash.substr(1)}`);\n };\n\n const handleClick = (e) => {\n e.preventDefault();\n // Dont' navigate if current path\n if (route.path === to) {\n return;\n }\n // Trigger onClick prop manually\n if (onClick) {\n onClick(e);\n }\n // Use history API to navigate page\n history.push(`#${to}`);\n };\n\n return (\n <a\n {...state}\n className={classNames({ [activeClassName]: isActive() }, props.className)}\n onClick={handleClick}\n >\n {children}\n </a>\n );\n}\n","const { Component } = wp.element;\nimport { locationToRoute } from \"./utils\";\nimport { history, RouterContext } from \"./context\";\nimport { Route } from \"./route\";\nimport { Link } from \"./link\";\nimport { match } from \"path-to-regexp\";\n\nclass Router extends Component {\n constructor(props) {\n super(props);\n\n // Convert our routes into an array for easy 404 checking\n this.routes = Object.keys(props.routes).map(\n (key) => props.routes[key].path\n );\n\n // Listen for path changes from the history API\n this.unlisten = history.listen(this.handleRouteChange);\n\n const route = locationToRoute(history.location);\n\n // Define the initial RouterContext value\n this.state = {\n route,\n defaultRoute: props?.defaultRoute ? `#${props?.defaultRoute}` : \"#/\",\n };\n }\n\n componentWillUnmount() {\n // Stop listening for changes if the Router component unmounts\n this.unlisten();\n }\n\n handleRouteChange = (location) => {\n const route = locationToRoute(location?.location);\n this.setState({ route: route });\n };\n\n render() {\n // Define our variables\n const { children, NotFound } = this.props;\n const { route, defaultRoute } = this.state;\n\n if (!route.hash) {\n history.push(defaultRoute);\n return <div></div>;\n }\n\n let matched = false;\n // match route\n (this.routes || []).forEach((name) => {\n const checkMatch = match(route.hash.substr(1));\n const isMatched = checkMatch(`${route.hash.substr(1)}`);\n if (!isMatched) {\n return;\n }\n matched = {\n name,\n data: isMatched,\n };\n });\n\n const routerContextValue = { route, matched };\n\n // Check if 404 if no route matched\n const is404 = !matched;\n\n return (\n <RouterContext.Provider value={routerContextValue}>\n {is404 ? <div>Not found</div> : children}\n </RouterContext.Provider>\n );\n }\n}\nexport { history, RouterContext, Router, Route, Link };\n","export default ({ width, height }) => {\n return (\n <svg\n id=\"e8f68bdd-4984-4f2e-95b7-7fc8ec281257\"\n data-name=\"Layer 1\"\n width={width}\n height={height}\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 918.14 765.54\"\n >\n <defs>\n <linearGradient\n id=\"27aa7b70-b106-4a00-be67-693c8380e41d\"\n x1=\"397.74\"\n y1=\"717.25\"\n x2=\"397.74\"\n y2=\"86.11\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" stop-color=\"gray\" stop-opacity=\"0.25\" />\n <stop offset=\"0.54\" stop-color=\"gray\" stop-opacity=\"0.12\" />\n <stop offset=\"1\" stop-color=\"gray\" stop-opacity=\"0.1\" />\n </linearGradient>\n <linearGradient\n id=\"46a816da-c484-41ec-8a6f-fbf14454d910\"\n x1=\"288.88\"\n y1=\"378.44\"\n x2=\"288.88\"\n y2=\"209.65\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"32b634d8-28f1-48d9-a868-f602a2cad942\"\n x1=\"288.88\"\n y1=\"328.29\"\n x2=\"288.88\"\n y2=\"223.1\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <clipPath\n id=\"7a4c6aff-0be0-461b-a111-b3ae1b8fbf73\"\n transform=\"translate(-140.93 -67.23)\"\n >\n <rect\n id=\"8cc91f6d-19b0-43cc-9c18-2faa83ac34ba\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"354.51\"\n y=\"291.55\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n </clipPath>\n <linearGradient\n id=\"38f1cb81-8fac-4205-a0ff-a33ac00d354c\"\n x1=\"288.88\"\n y1=\"594.94\"\n x2=\"288.88\"\n y2=\"426.14\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"6fc01aaf-135e-403e-a209-43b2a4fe59f1\"\n x1=\"288.88\"\n y1=\"544.79\"\n x2=\"288.88\"\n y2=\"439.6\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <clipPath\n id=\"79ce363a-d134-40e4-9f82-b96d04a36978\"\n transform=\"translate(-140.93 -67.23)\"\n >\n <rect\n id=\"5b44e697-61fe-43bd-9a58-5f3e41301748\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"354.51\"\n y=\"508.05\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n </clipPath>\n <linearGradient\n id=\"54803c44-522d-4b9e-9a34-f1f7b43e8483\"\n x1=\"671.57\"\n y1=\"760.34\"\n x2=\"671.57\"\n y2=\"129.2\"\n gradientTransform=\"translate(1109.43 -194.1) rotate(90)\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"089a6a47-adaa-499b-aefb-cd6464b62fb8\"\n x1=\"670.96\"\n y1=\"553.63\"\n x2=\"670.96\"\n y2=\"387.28\"\n gradientTransform=\"translate(1129.51 -168.41) rotate(90)\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"fd8d88e0-7826-450d-9e0b-001d1be709c2\"\n x1=\"637.66\"\n y1=\"754.12\"\n x2=\"637.66\"\n y2=\"601.05\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"8d1793c5-b76e-44e2-a52e-569460402331\"\n x1=\"778.37\"\n y1=\"673.86\"\n x2=\"778.37\"\n y2=\"569.13\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n <linearGradient\n id=\"4745700d-8097-45ff-9f71-625443fc4ad8\"\n x1=\"778.37\"\n y1=\"774.41\"\n x2=\"778.37\"\n y2=\"713.66\"\n xlinkHref=\"#27aa7b70-b106-4a00-be67-693c8380e41d\"\n />\n </defs>\n <title>secure data</title>\n <g opacity=\"0.5\">\n <rect\n x=\"162.9\"\n y=\"86.11\"\n width=\"469.69\"\n height=\"631.14\"\n fill=\"url(#27aa7b70-b106-4a00-be67-693c8380e41d)\"\n />\n </g>\n <rect\n x=\"169.02\"\n y=\"94.67\"\n width=\"455.01\"\n height=\"609.12\"\n fill=\"#f2f2f2\"\n />\n <rect x=\"204.49\" y=\"120.36\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect\n x=\"204.49\"\n y=\"142.37\"\n width=\"156.56\"\n height=\"4.89\"\n fill=\"#6c63ff\"\n opacity=\"0.7\"\n />\n <rect x=\"384.29\" y=\"120.36\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"408.75\" y=\"259.8\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"412.42\" y=\"273.25\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"419.76\" y=\"286.7\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"408.75\" y=\"476.29\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"412.42\" y=\"489.75\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <rect x=\"419.76\" y=\"503.2\" width=\"156.56\" height=\"4.89\" fill=\"#e0e0e0\" />\n <g opacity=\"0.5\">\n <rect\n x=\"205.71\"\n y=\"209.65\"\n width=\"166.35\"\n height=\"168.79\"\n fill=\"url(#46a816da-c484-41ec-8a6f-fbf14454d910)\"\n />\n </g>\n <rect\n x=\"206.76\"\n y=\"213.32\"\n width=\"163.72\"\n height=\"161.45\"\n fill=\"#f5f5f5\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"212.53\"\n y=\"223.1\"\n width=\"152.7\"\n height=\"105.19\"\n fill=\"url(#32b634d8-28f1-48d9-a868-f602a2cad942)\"\n />\n </g>\n <rect\n id=\"689f37f3-cc41-448d-b172-63ec123bc985\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"213.58\"\n y=\"224.32\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n <g clip-path=\"url(#7a4c6aff-0be0-461b-a111-b3ae1b8fbf73)\">\n <polygon\n points=\"200.82 322.18 238.74 263.46 254.64 289.15 288.88 253.68 318.24 289.15 343.93 236.56 409.98 341.75 195.93 334.41 200.82 322.18\"\n fill=\"#6c63ff\"\n opacity=\"0.4\"\n />\n <circle cx=\"230.17\" cy=\"239\" r=\"11.01\" fill=\"#6c63ff\" opacity=\"0.4\" />\n </g>\n <g opacity=\"0.5\">\n <rect\n x=\"205.71\"\n y=\"426.14\"\n width=\"166.35\"\n height=\"168.79\"\n fill=\"url(#38f1cb81-8fac-4205-a0ff-a33ac00d354c)\"\n />\n </g>\n <rect\n x=\"206.76\"\n y=\"429.81\"\n width=\"163.72\"\n height=\"161.45\"\n fill=\"#f5f5f5\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"212.53\"\n y=\"439.6\"\n width=\"152.7\"\n height=\"105.19\"\n fill=\"url(#6fc01aaf-135e-403e-a209-43b2a4fe59f1)\"\n />\n </g>\n <rect\n id=\"b429ac3a-f8a8-4171-bcce-5b6c002c0714\"\n data-name=\"&lt;Rectangle&gt;\"\n x=\"213.58\"\n y=\"440.82\"\n width=\"150.6\"\n height=\"101.52\"\n fill=\"#fff\"\n />\n <g clip-path=\"url(#79ce363a-d134-40e4-9f82-b96d04a36978)\">\n <polygon\n points=\"200.82 538.67 238.74 479.96 254.64 505.65 288.88 470.18 318.24 505.65 343.93 453.05 409.98 558.24 195.93 550.9 200.82 538.67\"\n fill=\"#bdbdbd\"\n opacity=\"0.4\"\n />\n <circle cx=\"230.17\" cy=\"455.5\" r=\"11.01\" fill=\"#bdbdbd\" opacity=\"0.4\" />\n </g>\n <g opacity=\"0.5\">\n <rect\n x=\"349.09\"\n y=\"242.63\"\n width=\"631.14\"\n height=\"469.69\"\n transform=\"translate(-74.16 969.06) rotate(-78.76)\"\n fill=\"url(#54803c44-522d-4b9e-9a34-f1f7b43e8483)\"\n />\n </g>\n <rect\n x=\"359.37\"\n y=\"247.33\"\n width=\"609.12\"\n height=\"455.01\"\n transform=\"translate(-72.16 966.22) rotate(-78.76)\"\n fill=\"#fff\"\n />\n <rect\n x=\"523.5\"\n y=\"197.22\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-88.86 -196.94) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"433.36\"\n y=\"650.7\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-2.18 -170.66) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"428.58\"\n y=\"671.14\"\n width=\"249.52\"\n height=\"4.89\"\n transform=\"translate(1.01 -162.18) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"424.6\"\n y=\"683.47\"\n width=\"92.96\"\n height=\"4.89\"\n transform=\"translate(1.84 -145.91) rotate(11.24)\"\n fill=\"#6c63ff\"\n opacity=\"0.7\"\n />\n <rect\n x=\"519.57\"\n y=\"209.08\"\n width=\"161.45\"\n height=\"4.89\"\n transform=\"translate(-88.17 -180.2) rotate(11.24)\"\n fill=\"#6c63ff\"\n opacity=\"0.7\"\n />\n <rect\n x=\"512.84\"\n y=\"249.31\"\n width=\"291.11\"\n height=\"4.89\"\n transform=\"translate(-79.21 -190.76) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"509.47\"\n y=\"255.44\"\n width=\"70.94\"\n height=\"4.89\"\n transform=\"translate(-80.19 -168.52) rotate(11.24)\"\n fill=\"#3ad29f\"\n opacity=\"0.7\"\n />\n <rect\n x=\"501.56\"\n y=\"307.59\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-67.76 -190.54) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"575.87\"\n y=\"357.6\"\n width=\"166.35\"\n height=\"289.88\"\n transform=\"translate(-103.27 983.74) rotate(-78.76)\"\n fill=\"url(#089a6a47-adaa-499b-aefb-cd6464b62fb8)\"\n />\n </g>\n <rect\n x=\"516.06\"\n y=\"420.61\"\n width=\"286.22\"\n height=\"162.68\"\n transform=\"translate(-30.42 -186.11) rotate(11.24)\"\n fill=\"#fff\"\n />\n <rect\n x=\"496.08\"\n y=\"335.18\"\n width=\"322.91\"\n height=\"4.89\"\n transform=\"translate(-62.49 -188.94) rotate(11.24)\"\n fill=\"#e0e0e0\"\n />\n <rect\n x=\"547.86\"\n y=\"424.02\"\n width=\"35.47\"\n height=\"118.64\"\n transform=\"translate(-35.84 -168.22) rotate(11.24)\"\n fill=\"#6c63ff\"\n />\n <rect\n x=\"606.43\"\n y=\"475.19\"\n width=\"35.47\"\n height=\"79.5\"\n transform=\"translate(-28.56 -179.03) rotate(11.24)\"\n fill=\"#3ad29f\"\n />\n <rect\n x=\"665.23\"\n y=\"523.93\"\n width=\"35.47\"\n height=\"42.81\"\n transform=\"translate(-21.5 -189.92) rotate(11.24)\"\n fill=\"#f55f44\"\n />\n <rect\n x=\"731.91\"\n y=\"492.72\"\n width=\"35.47\"\n height=\"86.84\"\n transform=\"translate(-22.02 -203.09) rotate(11.24)\"\n fill=\"#fdd835\"\n />\n <g opacity=\"0.5\">\n <rect\n x=\"128.65\"\n y=\"645.09\"\n width=\"3.67\"\n height=\"20.79\"\n fill=\"#47e6b1\"\n />\n <rect\n x=\"269.58\"\n y=\"712.31\"\n width=\"3.67\"\n height=\"20.79\"\n transform=\"translate(853.2 384.07) rotate(90)\"\n fill=\"#47e6b1\"\n />\n </g>\n <path\n d=\"M699.44,75.56a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,699.44,75.56Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#4d8af0\"\n opacity=\"0.5\"\n />\n <path\n d=\"M286.33,179.4a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,286.33,179.4Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#fdd835\"\n opacity=\"0.5\"\n />\n <path\n d=\"M253.63,484.46a4.49,4.49,0,0,1-2.5-5.43,2.16,2.16,0,0,0,.1-.5h0a2.25,2.25,0,0,0-4-1.49h0a2.16,2.16,0,0,0-.25.44,4.49,4.49,0,0,1-5.43,2.5,2.16,2.16,0,0,0-.5-.1h0a2.25,2.25,0,0,0-1.49,4h0a2.16,2.16,0,0,0,.44.25,4.49,4.49,0,0,1,2.5,5.43,2.16,2.16,0,0,0-.1.5h0a2.25,2.25,0,0,0,4,1.49h0a2.16,2.16,0,0,0,.25-.44,4.49,4.49,0,0,1,5.43-2.5,2.16,2.16,0,0,0,.5.1h0a2.25,2.25,0,0,0,1.49-4h0A2.16,2.16,0,0,0,253.63,484.46Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#fdd835\"\n opacity=\"0.5\"\n />\n <circle cx=\"337.81\" cy=\"28.62\" r=\"7.34\" fill=\"#f55f44\" opacity=\"0.5\" />\n <circle cx=\"7.34\" cy=\"317.46\" r=\"7.34\" fill=\"#f55f44\" opacity=\"0.5\" />\n <circle cx=\"863.76\" cy=\"120.36\" r=\"7.34\" fill=\"#f55f44\" opacity=\"0.5\" />\n <circle cx=\"822.17\" cy=\"339.3\" r=\"7.34\" fill=\"#4d8af0\" opacity=\"0.5\" />\n <circle cx=\"37.68\" cy=\"145.22\" r=\"7.34\" fill=\"#47e6b1\" opacity=\"0.5\" />\n <circle cx=\"853.29\" cy=\"647.34\" r=\"7.34\" fill=\"#47e6b1\" opacity=\"0.5\" />\n <circle cx=\"910.8\" cy=\"430.97\" r=\"7.34\" fill=\"#47e6b1\" opacity=\"0.5\" />\n <rect\n x=\"544.42\"\n y=\"601.05\"\n width=\"186.48\"\n height=\"153.07\"\n fill=\"url(#fd8d88e0-7826-450d-9e0b-001d1be709c2)\"\n />\n <path\n d=\"M723.82,639a54.55,54.55,0,0,1,109.1,0v34.91h15.27V639a69.82,69.82,0,0,0-139.65,0v34.91h15.27Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"url(#8d1793c5-b76e-44e2-a52e-569460402331)\"\n />\n <path\n d=\"M726,638.25a52.37,52.37,0,1,1,104.74,0v33.52H845.4V638.25a67,67,0,0,0-134.06,0v33.52H726Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"#f5f5f5\"\n />\n <rect\n x=\"546.32\"\n y=\"602.45\"\n width=\"182.24\"\n height=\"148.73\"\n fill=\"#6c63ff\"\n />\n <rect\n x=\"546.32\"\n y=\"602.45\"\n width=\"182.24\"\n height=\"148.73\"\n fill=\"#f5f5f5\"\n />\n <rect\n x=\"546.32\"\n y=\"631.77\"\n width=\"182.24\"\n height=\"90.07\"\n fill=\"#6c63ff\"\n />\n <path\n d=\"M791.73,727a13.36,13.36,0,1,0-23.08,9.15v28.51a9.72,9.72,0,0,0,19.44,0V736.18A13.3,13.3,0,0,0,791.73,727Z\"\n transform=\"translate(-140.93 -67.23)\"\n fill=\"url(#4745700d-8097-45ff-9f71-625443fc4ad8)\"\n />\n <path\n d=\"M789.89,729.38a11.52,11.52,0,1,0-19.9,7.89v24.58a8.38,8.38,0,1,0,16.76,0V737.27A11.47,11.47,0,0,0,789.89,729.38Z\"\n transform=\"translate(-140.93 -67.23)\"\n opacity=\"0.2\"\n />\n </svg>\n );\n};\n","const { __ } = wp.i18n;\n\nimport Illustration from \"./illustration\";\nconst { Flex, FlexItem, FlexBlock } = wp.components;\n\nexport default () => {\n return (\n <Flex style={{ padding: \"30px\", background: \"#fff\" }}>\n <FlexItem>\n <Illustration width=\"250px\" />\n </FlexItem>\n <FlexBlock style={{ marginLeft: \"20px\" }}>\n <h1>{__(\"Get detailed video insights.\", \"presto-player\")}</h1>\n <p>\n {__(\n \"Upgrade to Pro and get video insights like plays, watch-time, and drop off numbers.\",\n \"presto-player\"\n )}\n </p>\n <a\n href=\"https://prestoplayer.com\"\n target=\"_blank\"\n className=\"button button-primary\"\n >\n {__(\"Learn More\", \"presto-player\")}\n </a>\n </FlexBlock>\n </Flex>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { apiFetch } = wp;\nconst { useState } = wp.element;\nconst { createHigherOrderComponent } = wp.compose;\n\n/**\n * Higher order component factory\n *\n * @return {Function} The higher order component.\n */\nexport default () =>\n createHigherOrderComponent(\n (WrappedComponent) => (props) => {\n const [loading, setLoading] = useState(false);\n const [page, setPage] = useState(1);\n const [total, setTotal] = useState(0);\n const [totalPages, setTotalPages] = useState(0);\n const [data, setData] = useState([]);\n const [error, setError] = useState(\"\");\n\n // fetch data\n // we could also abstract this function to make it reusable\n // or do a higher order component\n const fetchData = async ({ endpoint, params = {} }) => {\n setLoading(true);\n\n let responseData;\n try {\n responseData = await apiFetch({\n path: wp.url.addQueryArgs(endpoint, {\n page,\n per_page: 5,\n ...params,\n }),\n parse: false,\n }).then((res) => {\n const total = res.headers\n ? parseInt(res.headers.get(\"X-WP-Total\"))\n : 0;\n const totalPages = res.headers\n ? parseInt(res.headers.get(\"X-WP-TotalPages\"))\n : 0;\n setTotal(total);\n setTotalPages(totalPages);\n return res.json();\n });\n\n setData(responseData);\n } catch (e) {\n console.error(e);\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <WrappedComponent\n loading={loading}\n setLoading={setLoading}\n fetchData={fetchData}\n page={page}\n setPage={setPage}\n total={total}\n setTotal={setTotal}\n totalPages={totalPages}\n setTotalPages={setTotalPages}\n data={data}\n setData={setData}\n error={error}\n setError={setError}\n {...props}\n />\n );\n },\n \"withDataList\"\n );\n","const { __, sprintf } = wp.i18n;\n\nexport const humanSeconds = (savedSeconds) => {\n const hours = Math.floor(savedSeconds / 60 / 60);\n const minutes = Math.floor(savedSeconds / 60) - hours * 60;\n const seconds = savedSeconds % 60;\n\n let out = \"\";\n if (hours) {\n out += sprintf(__(\"%d hours\", \"presto-player\"), hours) + \", \";\n }\n if (minutes) {\n out += sprintf(__(\"%d minutes\", \"presto-player\"), minutes) + \" \";\n }\n if ((hours || minutes) && seconds) {\n out += __(\"and\", \"presto-player\") + \" \";\n }\n\n out += sprintf(__(\"%d seconds\", \"presto-player\"), seconds);\n\n return out;\n};\n\nexport const timestamp = (seconds) => {\n seconds = parseInt(seconds || 0) * 1000;\n return new Date(seconds).toISOString().substr(11, 8);\n};\n\n/*\n * This function remove the user timezone from new Date()\n * https://stackoverflow.com/a/29774197/1972413\n */\nexport const convertDateTimeToAbsoluteDate = (dateTime) => {\n const offset = new Date().getTimezoneOffset();\n var date = new Date(dateTime.getTime() - offset * 60 * 1000);\n return date.toISOString().split(\"T\")[0] + \"T00:00:00.000Z\";\n};\n","const { Spinner, Flex, FlexItem } = wp.components;\nexport default ({ height = 100 }) => {\n return (\n <Flex style={{ height: `${height}px` }} align=\"center\" justify=\"center\">\n <FlexItem>\n <Spinner />\n </FlexItem>\n </Flex>\n );\n};\n","const { __ } = wp.i18n;\nconst { Card, CardBody, Flex, FlexBlock, Button, ButtonGroup } = wp.components;\nconst { useState, useEffect } = wp.element;\n\nexport default ({ page, setPage, perPage, total, totalPages }) => {\n // do we have prev/next\n const [hasPrevious, setHasPrevious] = useState(false);\n const [hasNext, setHasNext] = useState(false);\n\n // end and start cursors\n const [end, setEnd] = useState(0);\n const [start, setStart] = useState(0);\n\n // set end and start\n useEffect(() => {\n setEnd(Math.min(perPage * page, total));\n setStart(perPage * (page - 1) + 1);\n }, [perPage, page, total]);\n\n // update page when pagination is clicked\n const nextPage = () => {\n setPage(Math.min(totalPages, page + 1));\n };\n const prevPage = () => {\n setPage(Math.max(page - 1, 0));\n };\n\n // set prev/next\n useEffect(() => {\n setHasPrevious(page - 1 > 0);\n setHasNext(totalPages >= page + 1);\n }, [page, totalPages]);\n\n return (\n <Card size=\"large\" className=\"presto-card pagination\">\n <CardBody className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n {sprintf(\n __(\"Showing %1s to %2s of %3s\", \"presto-player\"),\n start,\n end,\n total\n )}\n </FlexBlock>\n <FlexBlock>\n <Flex justify=\"flex-end\">\n {\n <ButtonGroup>\n <Button\n isSecondary\n disabled={!hasPrevious}\n onClick={prevPage}\n >\n {__(\"Previous\", \"presto-player\")}\n </Button>\n <Button isSecondary disabled={!hasNext} onClick={nextPage}>\n {__(\"Next\", \"presto-player\")}\n </Button>\n </ButtonGroup>\n }\n </Flex>\n </FlexBlock>\n </Flex>\n </CardBody>\n </Card>\n );\n};\n","const { __ } = wp.i18n;\nconst { useRef, useEffect, useState } = wp.element;\nconst { Card, CardBody, Flex, FlexBlock, Button, ButtonGroup } = wp.components;\n\nimport classNames from \"classnames\";\n\nexport default ({ columns, data, onRowClick, title }) => {\n if (!data.length) {\n return (\n <Card size=\"large\" className=\"presto-card table-card\">\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">{title}</div>\n <div style={{ opacity: 0.65 }}>\n {__(\"No data available.\", \"presto-player\")}\n </div>\n </CardBody>\n </Card>\n );\n }\n\n return (\n <Card size=\"large\" className=\"presto-card table-card\">\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">{title}</div>\n <table\n role=\"table\"\n className={classNames(\"presto-table\", { \"is-clickable\": onRowClick })}\n >\n <thead role=\"rowgroup\">\n <tr role=\"row\">\n {columns &&\n columns.map((column) => {\n return (\n <th key={column.key} role=\"columnheader\">\n {column.label}\n </th>\n );\n })}\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n {data.map((row, rowIndex) => {\n return (\n <tr\n role=\"row\"\n key={`row-${rowIndex}`}\n onClick={() => onRowClick && onRowClick(row)}\n >\n {columns.map((column, columnIndex) => {\n return (\n <td\n role=\"cell\"\n data-title={column.label}\n key={`row-${rowIndex}-${columnIndex}`}\n aria-label={column.label}\n >\n {column.render ? (\n column.render(row)\n ) : (\n <div>{column.value(row)}</div>\n )}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </CardBody>\n </Card>\n );\n};\n","const { __ } = wp.i18n;\nconst { useEffect, useState } = wp.element;\nconst { Card, CardBody } = wp.components;\nimport Loading from \"@/admin/settings/components/Loading\";\nimport Pagination from \"@/admin/ui/Pagination\";\nimport Table from \"@/admin/ui/Table\";\n\nexport default ({\n perPage = 10,\n title,\n page,\n setPage,\n loading,\n total,\n totalPages,\n columns,\n data,\n onSelect,\n}) => {\n if (loading) {\n return (\n <Card>\n <Loading />\n </Card>\n );\n }\n\n if (!data?.length) {\n return (\n <Card size=\"large\" className=\"presto-card\">\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">{title}</div>\n <div style={{ opacity: 0.65 }}>\n {__(\"No data available.\", \"presto-player\")}\n </div>\n </CardBody>\n </Card>\n );\n }\n\n return (\n <div className=\"datatable\">\n <Table\n data={data}\n columns={columns}\n perPage={perPage}\n onRowClick={onSelect}\n title={title}\n />\n\n {!!total && (\n <Pagination\n page={page}\n setPage={setPage}\n perPage={perPage}\n total={total}\n totalPages={totalPages}\n />\n )}\n </div>\n );\n};\n","const { __ } = wp.i18n;\nconst { useEffect } = wp.element;\nconst { compose } = wp.compose;\n\nimport { history } from \"@/router/context\";\nimport withDataList from \"../hocs/withDataList\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\nimport DataTable from \"./DataTable\";\n\nexport default compose([withDataList()])(\n ({\n loading,\n page,\n setPage,\n total,\n totalPages,\n data,\n error,\n fetchData,\n startDate,\n endDate,\n }) => {\n // 10 per page\n const per_page = 5;\n\n // fetch data when page changes\n useEffect(() => {\n fetchData({\n endpoint: \"/presto-player/v1/analytics/top-users\",\n params: {\n per_page,\n ...(startDate\n ? { start: convertDateTimeToAbsoluteDate(startDate) }\n : {}),\n ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),\n },\n });\n }, [page, startDate, endDate]);\n\n // navigate to user screen here\n const navigate = (id) => {\n history.push(`#/user/${id}`);\n };\n\n const columns = [\n {\n key: \"name\",\n label: __(\"Name\", \"presto-player\"),\n value: (row) => row?.user?.name,\n },\n {\n key: \"total_view\",\n label: __(\"Total View\", \"presto-player\"),\n value: (row) => row?.stats?.[0]?.data,\n },\n {\n key: \"avg_view_time\",\n label: __(\"Avg View Time\", \"presto-player\"),\n render: (row) => (\n <div className=\"presto-badge\">{row?.stats?.[1]?.data}</div>\n ),\n },\n ];\n\n if (error) {\n return { error };\n }\n\n return (\n <DataTable\n title={__(\"Top Users\", \"presto-player\")}\n page={page}\n perPage={per_page}\n setPage={setPage}\n loading={loading}\n total={total}\n totalPages={totalPages}\n columns={columns}\n data={data}\n onSelect={(row) => navigate(row?.user?.id)}\n />\n );\n }\n);\n","const { __ } = wp.i18n;\nconst { useEffect } = wp.element;\nconst { compose } = wp.compose;\n\nimport { history } from \"@/router/context\";\nimport withDataList from \"../hocs/withDataList\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\nimport DataTable from \"./DataTable\";\n\nexport default compose([withDataList()])(\n ({\n loading,\n page,\n setPage,\n total,\n totalPages,\n data,\n error,\n fetchData,\n startDate,\n endDate,\n userId,\n }) => {\n // 10 per page\n const per_page = 10;\n\n // fetch data when page changes\n useEffect(() => {\n fetchData({\n endpoint: \"/presto-player/v1/analytics/top-videos\",\n params: {\n per_page,\n ...(startDate\n ? { start: convertDateTimeToAbsoluteDate(startDate) }\n : {}),\n ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),\n ...(userId ? { user_id: userId } : {}),\n },\n });\n }, [page, startDate, endDate]);\n\n const navigate = (id) => {\n history.push(`#/video/${id}`);\n };\n\n const columns = [\n {\n key: \"name\",\n label: __(\"Name\", \"presto-player\"),\n render(row) {\n return (\n <h3 style={{ marginBottom: 0, wordBreak: \"break-all\" }}>\n {row.video.title\n ? row.video.title\n : __(\"Untitled\", \"presto-player\")}\n </h3>\n );\n },\n },\n {\n key: \"total_view\",\n label: __(\"Total View\", \"presto-player\"),\n value(row) {\n return row.stats[0].data;\n },\n },\n {\n key: \"avg_view_time\",\n label: __(\"Avg View Time\", \"presto-player\"),\n render(row) {\n return <div className=\"presto-badge\">{row.stats[1].data}</div>;\n },\n },\n {\n key: \"view_more\",\n label: \"\",\n render(row) {\n return (\n <span\n style={{\n color: \"var(--wp-admin-theme-color, #007cba)\",\n }}\n >\n {__(\"View Details\", \"presto-player\")} &rarr;\n </span>\n );\n },\n },\n ];\n\n if (error) {\n return { error };\n }\n\n return (\n <DataTable\n title={__(\"Top Media\", \"presto-player\")}\n perPage={per_page}\n page={page}\n setPage={setPage}\n loading={loading}\n total={total}\n totalPages={totalPages}\n columns={columns}\n data={data}\n onSelect={(row) => {\n navigate(row?.video?.id);\n }}\n />\n );\n }\n);\n","// import apiFetch from \"@wordpress/api-fetch\";\nconst { apiFetch } = wp;\n\n// nonce and root\napiFetch.use(apiFetch.createNonceMiddleware(prestoPlayer.nonce));\napiFetch.use(\n apiFetch.createRootURLMiddleware(\n prestoPlayer.root + prestoPlayer.prestoVersionString\n )\n);\n\nexport default apiFetch;\n","const { __, sprintf } = wp.i18n;\nconst { Card, CardBody } = wp.components;\nconst { useState, useEffect, useRef } = wp.element;\n\nimport Loading from \"@/admin/settings/components/Loading\";\nimport apiFetch from \"@/shared/services/fetch\";\nimport Chart from \"react-apexcharts\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default (props) => {\n const [loading, setLoading] = useState(true);\n const [totalViews, setTotalViews] = useState(0);\n const { startDate, endDate } = props;\n const [series, setSeries] = useState([\n {\n name: \"Views\",\n data: [],\n },\n ]);\n\n const chart = {\n options: {\n chart: {\n toolbar: {\n show: false,\n },\n },\n yaxis: {\n min: 0,\n labels: {\n formatter: function (num) {\n if (num < 1) {\n return 0;\n }\n return Math.abs(num) > 999\n ? Math.sign(num) * (Math.abs(num) / 1000).toFixed(1) + \"k\"\n : Math.sign(num) * Math.abs(num).toFixed(0);\n },\n },\n },\n colors: [\"#7c3aed\"],\n xaxis: {\n type: \"datetime\",\n min: new Date(startDate).setHours(0, 0, 0, 0),\n max: new Date(endDate).setHours(23, 59, 59, 999),\n },\n dataLabels: {\n enabled: false,\n },\n stroke: { curve: \"smooth\" },\n fill: {\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 90, 100],\n },\n },\n },\n };\n\n // fetch only if we already mounted\n useEffect(() => {\n fetchViews();\n }, [props]);\n\n const fetchViews = () => {\n setLoading(true);\n apiFetch({\n path:\n \"/presto-player/v1/analytics/views?\" +\n jQuery.param({\n ...(startDate\n ? { start: convertDateTimeToAbsoluteDate(startDate) }\n : {}),\n ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),\n }),\n parse: false,\n })\n .then(async (res) => {\n setTotalViews(res.headers && res.headers.get(\"X-WP-Total\"));\n const data = await res.json();\n\n let series = [];\n if (data.length) {\n data.forEach((item) => {\n series.push({\n x: item.date_time,\n y: item.total,\n });\n });\n }\n setSeries([\n {\n name: \"Views\",\n data: series,\n },\n ]);\n })\n .catch((e) => {\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n if (loading) {\n return (\n <CardBody>\n <Loading />\n </CardBody>\n );\n }\n\n return (\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">\n {sprintf(__(\"%d Unique Views\", \"presto-player\"), totalViews)}\n </div>\n <Chart options={chart.options} series={series} type=\"area\" height={280} />\n </CardBody>\n );\n};\n","const { __, sprintf } = wp.i18n;\nconst { Card, CardBody } = wp.components;\nconst { useState, useEffect, useRef } = wp.element;\n\nimport Loading from \"@/admin/settings/components/Loading\";\nimport apiFetch from \"@/shared/services/fetch\";\nimport Chart from \"react-apexcharts\";\nimport { convertDateTimeToAbsoluteDate, humanSeconds } from \"../util\";\n\nexport default (props) => {\n const [loading, setLoading] = useState(true);\n const [averageTime, setAverageTime] = useState(0);\n const { startDate, endDate } = props;\n const [series, setSeries] = useState([\n {\n name: \"Views\",\n data: [],\n },\n ]);\n\n const chart = {\n options: {\n chart: {\n toolbar: {\n show: false,\n },\n },\n yaxis: {\n labels: {\n formatter: function (num) {\n return Math.abs(num) > 999\n ? Math.sign(num) * (Math.abs(num) / 1000).toFixed(1) + \"k min\"\n : (Math.sign(num) * Math.abs(num)).toFixed(1) + \"min\";\n },\n },\n },\n colors: [\"#7c3aed\"],\n xaxis: {\n type: \"datetime\",\n min: new Date(startDate).setHours(0, 0, 0, 0),\n max: new Date(endDate).setHours(23, 59, 59, 999),\n },\n dataLabels: {\n enabled: false,\n },\n stroke: { curve: \"smooth\" },\n fill: {\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 90, 100],\n },\n },\n },\n };\n\n // fetch only if we already mounted\n useEffect(() => {\n fetchMinutes();\n }, [props]);\n\n const fetchMinutes = () => {\n setLoading(true);\n apiFetch({\n path:\n \"/presto-player/v1/analytics/watch-time?\" +\n jQuery.param({\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n }),\n parse: false,\n })\n .then(async (res) => {\n const { data, average } = await res.json();\n\n setAverageTime(parseFloat(average));\n\n let series = [];\n if (data.length) {\n data.forEach((item) => {\n series.push({\n x: item.date_time,\n y: (item.total / 60).toFixed(2),\n });\n });\n }\n setSeries([\n {\n name: \"Watch Time\",\n data: series,\n },\n ]);\n })\n .catch((e) => {\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n if (loading) {\n return (\n <CardBody>\n <Loading />\n </CardBody>\n );\n }\n\n return (\n <CardBody className=\"presto-flow\">\n <div className=\"presto-card__title\">\n {sprintf(\n __(\"%s average watch time\", \"presto-player\"),\n humanSeconds(averageTime)\n )}\n </div>\n <Chart options={chart.options} series={series} type=\"area\" height={280} />\n </CardBody>\n );\n};\n","const { __ } = wp.i18n;\nconst { Panel, TabPanel } = wp.components;\n\nimport TotalViewsGraph from \"./TotalViewsGraph\";\nimport TotalWatchGraph from \"./TotalWatchGraph\";\n\nexport default ({ startDate, endDate }) => {\n return (\n <Panel>\n <TabPanel\n className=\"presto-module-tabs\"\n onSelect={() => {}}\n tabs={[\n {\n name: \"views\",\n title: __(\"Views\", \"presto-player\"),\n },\n {\n name: \"watch\",\n title: __(\"Watch Time\", \"presto-player\"),\n },\n ]}\n >\n {(tab) => {\n switch (tab.name) {\n case \"views\":\n return (\n <TotalViewsGraph startDate={startDate} endDate={endDate} />\n );\n case \"watch\":\n return (\n <TotalWatchGraph startDate={startDate} endDate={endDate} />\n );\n default:\n return <>Not Found</>;\n }\n }}\n </TabPanel>\n </Panel>\n );\n};\n","const { __ } = wp.i18n;\nconst { useRef, useEffect, useState } = wp.element;\n\nimport Litepicker from \"litepicker\";\nimport \"litepicker/dist/plugins/ranges\";\n\nexport default ({ startDate, setStartDate, endDate, setEndDate }) => {\n const dateRef = useRef();\n const [inputSize, setInputSize] = useState(25);\n\n let datepicker;\n useEffect(() => {\n datepicker = new Litepicker({\n element: dateRef?.current,\n singleMode: false,\n format: \"MMMM D YYYY\",\n autoApply: false,\n plugins: [\"ranges\"],\n maxDate: new Date(),\n numberOfMonths: 2,\n buttonText: {\n apply: __(\"Apply\", \"presto-player\"),\n cancel: __(\"Cancel\", \"presto-player\"),\n },\n dropdowns: {\n minYear: 1990,\n maxYear: null,\n months: true,\n years: true,\n },\n setup: (picker) => {\n picker.setDateRange(startDate, endDate);\n picker.on(\"button:apply\", (start, end) => {\n setStartDate(start.dateInstance);\n setEndDate(end.dateInstance);\n setInputSize(dateRef.current.value.length);\n });\n },\n });\n }, [dateRef]);\n\n return (\n <div className=\"component-base-control\">\n <div className=\"components-base-control__field\">\n <input\n className=\"components-text-control__input presto-settings__date-select\"\n ref={dateRef}\n size={inputSize}\n />\n </div>\n </div>\n );\n};\n","/** @jsx jsx */\n\nconst { __ } = wp.i18n;\nconst { Flex, FlexBlock, FlexItem } = wp.components;\nconst { useState, useEffect } = wp.element;\n\nimport TopUsers from \"../components/TopUsers\";\nimport TopVideos from \"../components/TopVideos\";\nimport OverviewPanel from \"../components/OverviewPanel\";\nimport DatePicker from \"../components/DatePicker\";\nimport apiFetch from \"@wordpress/api-fetch\";\nimport { Notice } from \"@wordpress/components\";\nimport { css, jsx } from \"@emotion/core\";\n\nexport default function ({ startDate, endDate, setStartDate, setEndDate }) {\n const [noticeStatus, setNoticeStatus] = useState(false);\n\n // run this only on mount.\n useEffect(() => {\n apiFetch({ path: \"/wp/v2/settings\" }).then((post) => {\n if (post?.presto_player_analytics?.enable === false) {\n setNoticeStatus(true);\n }\n });\n }, []);\n\n return (\n <>\n {/* Component decleared below this code */}\n {noticeStatus ? <MyNotice /> : \"\"}\n <Flex>\n <FlexBlock>\n <h1>{__(\"Analytics\", \"presto-player\")}</h1>\n </FlexBlock>\n <FlexItem>\n <DatePicker\n startDate={startDate}\n setStartDate={setStartDate}\n endDate={endDate}\n setEndDate={setEndDate}\n />\n </FlexItem>\n </Flex>\n\n <div className=\"presto-flow\">\n <div className=\"presto-dashboard\">\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <OverviewPanel startDate={startDate} endDate={endDate} />\n </div>\n <div className=\"presto-dashboard__item\">\n <TopUsers startDate={startDate} endDate={endDate} />\n </div>\n </div>\n\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <TopVideos startDate={startDate} endDate={endDate} />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n}\n\nconst MyNotice = () => (\n <Notice\n css={css`\n margin: 0 0 1em 0 !important;\n `}\n status=\"warning\"\n isDismissible={false}\n >\n <p>\n {__(\n \"Analytics are currently disabled. To collect analytics, turn them on in your settings page.\",\n \"presto-player\"\n )}\n </p>\n </Notice>\n);\n","const { Card, CardBody } = wp.components;\nimport Loading from \"@/admin/settings/components/Loading\";\n\nexport default ({ loading, title, value, label }) => {\n if (loading) {\n return (\n <Card>\n <CardBody>\n <Loading />\n </CardBody>\n </Card>\n );\n }\n\n return (\n <Card className=\"presto-player__stat-card\">\n <CardBody>\n <div className=\"presto-subtitle\">{title}</div>\n <h1>{value}</h1>\n <div>{label}</div>\n </CardBody>\n </Card>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { apiFetch } = wp;\nconst { useState } = wp.element;\nconst { createHigherOrderComponent } = wp.compose;\n\n/**\n * Higher order component factory\n *\n * @return {Function} The higher order component.\n */\nexport default () =>\n createHigherOrderComponent(\n (WrappedComponent) => (props) => {\n const [loading, setLoading] = useState(false);\n const [stat, setStat] = useState([]);\n const [error, setError] = useState(\"\");\n\n // fetch data\n // we could also abstract this function to make it reusable\n // or do a higher order component\n const fetchData = async ({ endpoint, params = {} }) => {\n setLoading(true);\n\n let responseData;\n try {\n responseData = await apiFetch({\n path: wp.url.addQueryArgs(endpoint, {\n ...params,\n }),\n });\n setStat(responseData);\n } catch (e) {\n console.error(e);\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <WrappedComponent\n loading={loading}\n setLoading={setLoading}\n fetchData={fetchData}\n stat={stat}\n setStat={setStat}\n error={error}\n setError={setError}\n {...props}\n />\n );\n },\n \"withStat\"\n );\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { userId, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/user/${userId}/total-views`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseInt(stat?.view)}\n title={__(\"Total Views\", \"presto-player\")}\n />\n );\n});\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { userId, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/user/${userId}/average-watchtime`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseFloat(stat?.view).toFixed(2)}\n title={__(\"Average Watch Time\", \"presto-player\")}\n label={__(\"seconds\", \"presto-player\")}\n />\n );\n});\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { userId, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/user/${userId}/total-watchtime`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseFloat(stat?.view).toFixed(2)}\n title={__(\"Total Watch Time\", \"presto-player\")}\n label={__(\"seconds\", \"presto-player\")}\n />\n );\n});\n","/** @jsx jsx */\n\nconst { __ } = wp.i18n;\n\nconst { Flex, FlexBlock, FlexItem, Spinner, Button } = wp.components;\n\nimport { history } from \"@/router/context\";\nimport DatePicker from \"../components/DatePicker\";\nimport TopVideos from \"../components/TopVideos\";\nimport TotalVideoViewsByUser from \"../components/TotalVideoViewsByUser\";\nimport VideoAverageWatchTimeByUser from \"../components/VideoAverageWatchTimeByUser\";\nimport VideoTotalWatchTimeByUser from \"../components/VideoTotalWatchTimeByUser\";\n\nconst { useEffect, useState } = wp.element;\nconst { apiFetch } = wp;\n\nimport { css, jsx } from \"@emotion/core\";\n\nconst User = ({ route, startDate, endDate, setStartDate, setEndDate }) => {\n const [loading, setLoading] = useState(true);\n const [user, setUser] = useState({});\n const [error, setError] = useState(\"\");\n\n const back = () => {\n history.push(`#/`);\n };\n\n const getUser = async () => {\n setLoading(true);\n try {\n let user = await apiFetch({\n url: `/wp-json/wp/v2/users/${route?.params?.id}?context=edit`,\n });\n setUser(user);\n } catch (e) {\n if (e.code === \"rest_no_route\") {\n setError(\"User Not Found\");\n }\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n getUser();\n }, []);\n\n if (error) {\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <h2>{error}</h2>\n </FlexBlock>\n </Flex>\n </div>\n );\n }\n\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <Button isSecondary onClick={back}>\n &larr; {__(\"Back to Dashboard\", \"presto-player\")}\n </Button>\n </FlexBlock>\n </Flex>\n <Flex wrap>\n <FlexBlock>\n {loading ? (\n <Spinner />\n ) : (\n <div\n css={css`\n display: flex;\n align-items: center;\n\n .presto__edit-user-button {\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s ease;\n }\n\n &:hover {\n .presto__edit-user-button {\n opacity: 1;\n visibility: visible;\n }\n }\n `}\n >\n <div>\n <h1 className=\"presto-dashboard__title\">{user?.name}</h1>\n <p\n css={css`\n margin-top: -10px;\n opacity: 0.65;\n `}\n >\n {user?.email}\n </p>\n </div>\n {!!user.id && (\n <div\n className=\"presto__edit-user-button\"\n css={css`\n margin: 0 20px;\n `}\n >\n <Button\n href={`/wp-admin/user-edit.php?user_id=${user?.id}`}\n isSecondary\n isSmall\n >\n {__(\"View Profile\", \"presto-player\")} &rarr;\n </Button>\n </div>\n )}\n </div>\n )}\n </FlexBlock>\n <FlexItem>\n <DatePicker\n startDate={startDate}\n setStartDate={setStartDate}\n endDate={endDate}\n setEndDate={setEndDate}\n />\n </FlexItem>\n </Flex>\n\n <div className=\"presto-dashboard presto-flow\">\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item\">\n <TotalVideoViewsByUser\n userId={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n <div className=\"presto-dashboard__item\">\n <VideoAverageWatchTimeByUser\n userId={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n <div className=\"presto-dashboard__item\">\n <VideoTotalWatchTimeByUser\n userId={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n </div>\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <TopVideos\n startDate={startDate}\n endDate={endDate}\n userId={route?.params?.id}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default User;\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { video_id, startDate, endDate, stat, fetchData, loading } = props;\n\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/video/${video_id}/average-watchtime`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseInt(stat)}\n title={__(\"Average Watch Time\", \"presto-player\")}\n label={__(\"seconds\", \"presto-player\")}\n />\n );\n});\n","const { __, sprintf } = wp.i18n;\nconst { Card, CardBody } = wp.components;\nconst { useState, useEffect, useRef } = wp.element;\n\nimport Loading from \"@/admin/settings/components/Loading\";\nimport apiFetch from \"@/shared/services/fetch\";\nimport Chart from \"react-apexcharts\";\nimport { convertDateTimeToAbsoluteDate, timestamp } from \"../util\";\n\nexport default (props) => {\n const { video_id, startDate, endDate } = props;\n const [loading, setLoading] = useState(true);\n\n const [series, setSeries] = useState([\n {\n name: \"Views\",\n data: [],\n },\n ]);\n\n const fetchTimeline = () => {\n setLoading(true);\n apiFetch({\n path: wp.url.addQueryArgs(\n `/presto-player/v1/analytics/video/${video_id}/timeline`,\n {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n }\n ),\n })\n .then((data) => {\n let series = [];\n if (data.length) {\n data.forEach((item) => {\n // add another to them\n series.push({\n x: item.watch_time,\n y: item.total,\n });\n });\n }\n setSeries([\n {\n name: \"Viewers\",\n data: series,\n },\n ]);\n })\n .catch((e) => {\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n useEffect(() => {\n fetchTimeline();\n }, [startDate, endDate]);\n\n const chart = {\n options: {\n chart: {\n toolbar: {\n show: false,\n },\n },\n tickAmount: 1,\n yaxis: {\n labels: {\n formatter: function (num) {\n return parseInt(num);\n },\n },\n },\n xaxis: {\n labels: {\n formatter: function (num) {\n return timestamp(num);\n },\n },\n },\n colors: [\"#7c3aed\"],\n dataLabels: {\n enabled: false,\n },\n stroke: { curve: \"smooth\" },\n fill: {\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 90, 100],\n },\n },\n },\n };\n\n if (loading) {\n return (\n <Card>\n <CardBody>\n <Loading />\n </CardBody>\n </Card>\n );\n }\n\n return (\n <Card>\n <CardBody>\n <div className=\"presto-card__title\">\n {__(\"Audience Retention\", \"presto-player\")}\n </div>\n <Chart\n options={chart.options}\n series={series}\n type=\"area\"\n height={280}\n />\n </CardBody>\n </Card>\n );\n};\n","const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect } = wp.element;\n\nimport StatCard from \"@/admin/ui/StatCard\";\nimport withStat from \"../hocs/withStat\";\nimport { convertDateTimeToAbsoluteDate } from \"../util\";\n\nexport default compose([withStat()])((props) => {\n const { video_id, startDate, endDate, stat, fetchData, loading } = props;\n\n // fetch data when page changes\n useEffect(() => {\n fetchData({\n endpoint: `/presto-player/v1/analytics/video/${video_id}/views`,\n params: {\n start: convertDateTimeToAbsoluteDate(startDate),\n end: convertDateTimeToAbsoluteDate(endDate),\n },\n });\n }, [startDate, endDate]);\n\n return (\n <StatCard\n loading={loading}\n value={parseInt(stat)}\n title={__(\"Unique Views\", \"presto-player\")}\n />\n );\n});\n","export const dashToPascalCase = (str) => str\n .toLowerCase()\n .split('-')\n .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))\n .join('');\nexport const camelToDashCase = (str) => str.replace(/([A-Z])/g, (m) => `-${m[0].toLowerCase()}`);\n//# sourceMappingURL=case.js.map","import { camelToDashCase } from './case';\nexport const attachProps = (node, newProps, oldProps = {}) => {\n // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first\n if (node instanceof Element) {\n // add any classes in className to the class list\n const className = getClassName(node.classList, newProps, oldProps);\n if (className !== '') {\n node.className = className;\n }\n Object.keys(newProps).forEach((name) => {\n if (name === 'children' ||\n name === 'style' ||\n name === 'ref' ||\n name === 'class' ||\n name === 'className' ||\n name === 'forwardedRef') {\n return;\n }\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n if (!isCoveredByReact(eventNameLc)) {\n syncEvent(node, eventNameLc, newProps[name]);\n }\n }\n else {\n node[name] = newProps[name];\n const propType = typeof newProps[name];\n if (propType === 'string') {\n node.setAttribute(camelToDashCase(name), newProps[name]);\n }\n }\n });\n }\n};\nexport const getClassName = (classList, newProps, oldProps) => {\n const newClassProp = newProps.className || newProps.class;\n const oldClassProp = oldProps.className || oldProps.class;\n // map the classes to Maps for performance\n const currentClasses = arrayToMap(classList);\n const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []);\n const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []);\n const finalClassNames = [];\n // loop through each of the current classes on the component\n // to see if it should be a part of the classNames added\n currentClasses.forEach((currentClass) => {\n if (incomingPropClasses.has(currentClass)) {\n // add it as its already included in classnames coming in from newProps\n finalClassNames.push(currentClass);\n incomingPropClasses.delete(currentClass);\n }\n else if (!oldPropClasses.has(currentClass)) {\n // add it as it has NOT been removed by user\n finalClassNames.push(currentClass);\n }\n });\n incomingPropClasses.forEach((s) => finalClassNames.push(s));\n return finalClassNames.join(' ');\n};\n/**\n * Checks if an event is supported in the current execution environment.\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nexport const isCoveredByReact = (eventNameSuffix) => {\n if (typeof document === 'undefined') {\n return true;\n }\n else {\n const eventName = 'on' + eventNameSuffix;\n let isSupported = eventName in document;\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n return isSupported;\n }\n};\nexport const syncEvent = (node, eventName, newEventHandler) => {\n const eventStore = node.__events || (node.__events = {});\n const oldEventHandler = eventStore[eventName];\n // Remove old listener so they don't double up.\n if (oldEventHandler) {\n node.removeEventListener(eventName, oldEventHandler);\n }\n // Bind new listener.\n node.addEventListener(eventName, (eventStore[eventName] = function handler(e) {\n if (newEventHandler) {\n newEventHandler.call(this, e);\n }\n }));\n};\nconst arrayToMap = (arr) => {\n const map = new Map();\n arr.forEach((s) => map.set(s, s));\n return map;\n};\n//# sourceMappingURL=attachProps.js.map","import React from 'react';\nexport const setRef = (ref, value) => {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref != null) {\n // Cast as a MutableRef so we can assign current\n ref.current = value;\n }\n};\nexport const mergeRefs = (...refs) => {\n return (value) => {\n refs.forEach(ref => {\n setRef(ref, value);\n });\n };\n};\nexport const createForwardRef = (ReactComponent, displayName) => {\n const forwardRef = (props, ref) => {\n return React.createElement(ReactComponent, Object.assign({}, props, { forwardedRef: ref }));\n };\n forwardRef.displayName = displayName;\n return React.forwardRef(forwardRef);\n};\nexport const defineCustomElement = (tagName, customElement) => {\n if (customElement !== undefined &&\n typeof customElements !== 'undefined' &&\n !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\nexport * from './attachProps';\nexport * from './case';\n//# sourceMappingURL=index.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { attachProps, createForwardRef, dashToPascalCase, isCoveredByReact, mergeRefs, } from './utils';\nexport const createReactComponent = (tagName, ReactComponentContext, manipulatePropsFunction, defineCustomElement) => {\n if (defineCustomElement !== undefined) {\n defineCustomElement();\n }\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component {\n constructor(props) {\n super(props);\n this.setComponentElRef = (element) => {\n this.componentEl = element;\n };\n }\n componentDidMount() {\n this.componentDidUpdate(this.props);\n }\n componentDidUpdate(prevProps) {\n attachProps(this.componentEl, this.props, prevProps);\n }\n render() {\n const _a = this.props, { children, forwardedRef, style, className, ref } = _a, cProps = __rest(_a, [\"children\", \"forwardedRef\", \"style\", \"className\", \"ref\"]);\n let propsToPass = Object.keys(cProps).reduce((acc, name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {\n acc[name] = cProps[name];\n }\n }\n else {\n acc[name] = cProps[name];\n }\n return acc;\n }, {});\n if (manipulatePropsFunction) {\n propsToPass = manipulatePropsFunction(this.props, propsToPass);\n }\n const newProps = Object.assign(Object.assign({}, propsToPass), { ref: mergeRefs(forwardedRef, this.setComponentElRef), style });\n return React.createElement(tagName, newProps, children);\n }\n static get displayName() {\n return displayName;\n }\n };\n // If context was passed to createReactComponent then conditionally add it to the Component Class\n if (ReactComponentContext) {\n ReactComponent.contextType = ReactComponentContext;\n }\n return createForwardRef(ReactComponent, displayName);\n};\n//# sourceMappingURL=createComponent.js.map","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated react proxies */\nimport { createReactComponent } from './react-component-lib';\nexport const PrestoActionBar = /*@__PURE__*/ createReactComponent('presto-action-bar');\nexport const PrestoActionBarController = /*@__PURE__*/ createReactComponent('presto-action-bar-controller');\nexport const PrestoActionBarUi = /*@__PURE__*/ createReactComponent('presto-action-bar-ui');\nexport const PrestoAudio = /*@__PURE__*/ createReactComponent('presto-audio');\nexport const PrestoBunny = /*@__PURE__*/ createReactComponent('presto-bunny');\nexport const PrestoBusinessSkin = /*@__PURE__*/ createReactComponent('presto-business-skin');\nexport const PrestoCtaOverlay = /*@__PURE__*/ createReactComponent('presto-cta-overlay');\nexport const PrestoCtaOverlayController = /*@__PURE__*/ createReactComponent('presto-cta-overlay-controller');\nexport const PrestoCtaOverlayUi = /*@__PURE__*/ createReactComponent('presto-cta-overlay-ui');\nexport const PrestoDynamicOverlayUi = /*@__PURE__*/ createReactComponent('presto-dynamic-overlay-ui');\nexport const PrestoDynamicOverlays = /*@__PURE__*/ createReactComponent('presto-dynamic-overlays');\nexport const PrestoEmailOverlay = /*@__PURE__*/ createReactComponent('presto-email-overlay');\nexport const PrestoEmailOverlayController = /*@__PURE__*/ createReactComponent('presto-email-overlay-controller');\nexport const PrestoEmailOverlayUi = /*@__PURE__*/ createReactComponent('presto-email-overlay-ui');\nexport const PrestoModernSkin = /*@__PURE__*/ createReactComponent('presto-modern-skin');\nexport const PrestoMutedOverlay = /*@__PURE__*/ createReactComponent('presto-muted-overlay');\nexport const PrestoPlayer = /*@__PURE__*/ createReactComponent('presto-player');\nexport const PrestoPlayerButton = /*@__PURE__*/ createReactComponent('presto-player-button');\nexport const PrestoPlayerSkeleton = /*@__PURE__*/ createReactComponent('presto-player-skeleton');\nexport const PrestoPlayerSpinner = /*@__PURE__*/ createReactComponent('presto-player-spinner');\nexport const PrestoStackedSkin = /*@__PURE__*/ createReactComponent('presto-stacked-skin');\nexport const PrestoTimestamp = /*@__PURE__*/ createReactComponent('presto-timestamp');\nexport const PrestoVideo = /*@__PURE__*/ createReactComponent('presto-video');\nexport const PrestoVideoCurtainUi = /*@__PURE__*/ createReactComponent('presto-video-curtain-ui');\nexport const PrestoVimeo = /*@__PURE__*/ createReactComponent('presto-vimeo');\nexport const PrestoYoutube = /*@__PURE__*/ createReactComponent('presto-youtube');\nexport const PrestoYoutubeSubscribeButton = /*@__PURE__*/ createReactComponent('presto-youtube-subscribe-button');\n//# sourceMappingURL=index.js.map","const { useRef, useEffect } = wp.element;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function snackbarNotice({ status = \"success\", message }) {\n wp.data.dispatch(\"core/notices\").createNotice(\n status, // Can be one of: success, info, warning, error.\n message, // Text string to display.\n { type: \"snackbar\" }\n );\n}\n\nexport const bytesToSize = (bytes) => {\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes == 0) return \"0 Byte\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return Math.round(bytes / Math.pow(1024, i), 2) + \" \" + sizes[i];\n};\n\nexport const toDate = (d) => {\n d = new Date(d);\n var hours = d.getHours();\n var minutes = d.getMinutes();\n var ampm = hours >= 12 ? \"pm\" : \"am\";\n hours = hours % 12;\n hours = hours ? hours : 12;\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n\n return (\n d.getDate() +\n \"-\" +\n (d.getMonth() + 1) +\n \"-\" +\n d.getFullYear() +\n \" at \" +\n hours +\n \":\" +\n minutes +\n ampm\n );\n};\n\nexport function timeToSeconds(time) {\n let pieces = time.split(\":\");\n let seconds;\n if (pieces.length > 1) {\n seconds = parseInt(pieces[0]) * 60;\n }\n return parseInt(pieces[1]) + parseInt(seconds);\n}\n\nexport function secondsToTime(number) {\n let seconds = parseInt(number, 10);\n let minutes = Math.floor(seconds / 60);\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n return minutes + \":\" + seconds;\n}\n\nexport function sanitizeTime(time) {\n let draft = time;\n // remove any letters\n draft = draft.replace(/[^\\d\\d:\\d\\d.-]/g, \"\");\n // make sure we have :\n if (!draft.includes(\":\")) {\n return `${draft}:00`;\n }\n\n // must have something before :00\n if (draft.substr(0, draft.indexOf(\":\")).length === 0) {\n draft = `0${draft}`;\n }\n\n // only allow 2 characters after :\n let index = draft.indexOf(\":\");\n draft = draft.substring(0, index + 3);\n return draft;\n}\n\nexport function getProvider(src) {\n const provider = \"self-hosted\";\n\n if (src) {\n const yt_rx = /^(?:https?:\\/\\/)?(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n const has_match_youtube = src.match(yt_rx);\n\n if (has_match_youtube) {\n return \"youtube\";\n }\n\n const vm_rx = /(https?:\\/\\/)?(www\\.)?(player\\.)?vimeo\\.com\\/([a-z]*\\/)*([‌​0-9]{6,11})[?]?.*/;\n const has_match_vimeo = src.match(vm_rx);\n\n if (has_match_vimeo) {\n return \"vimeo\";\n }\n\n if (src.indexOf(\"https://vz-\") > -1 && src.indexOf(\"b-cdn.net\") > -1) {\n return \"bunny\";\n }\n\n if (src.indexOf(\".mp3\") > -1) {\n return \"audio\";\n }\n }\n return provider;\n}\n","import { PrestoPlayer } from \"@presto-player/react\";\nimport { getProvider } from \"../util\";\nconst { useSelect } = wp.data;\n\nexport default ({\n src,\n classes,\n preset,\n branding,\n attributes,\n adminPreview,\n currentTime,\n preload = \"metadata\",\n overlays,\n type,\n}) => {\n const { chapters, mutedOverlay, mutedPreview } = attributes;\n\n const youtube = useSelect((select) => {\n return select(\"presto-player/player\")?.youtube();\n });\n\n const css = useSelect((select) => {\n return select(\"presto-player/player\")?.playerCSS();\n });\n\n const convertHex = (hexCode, opacity = 1) => {\n var hex = hexCode.replace(\"#\", \"\");\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n\n var r = parseInt(hex.substring(0, 2), 16),\n g = parseInt(hex.substring(2, 4), 16),\n b = parseInt(hex.substring(4, 6), 16);\n\n /* Backward compatibility for whole number based opacity values. */\n if (opacity > 1 && opacity <= 100) {\n opacity = opacity / 100;\n }\n\n return \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + opacity + \")\";\n };\n\n const mutedOverlayContent = () => {\n return (\n <div\n className=\"presto-player__overlay is-image\"\n style={{\n position: \"absolute\",\n width: `${mutedOverlay?.width || 100}%`,\n left: `${(mutedOverlay?.focalPoint?.x || 0.5) * 100}%`,\n top: `${(mutedOverlay?.focalPoint?.y || 0.5) * 100}%`,\n }}\n >\n <img\n src={mutedOverlay?.src}\n style={{\n transform: \"translateX(-50%) translateY(-50%)\",\n }}\n />\n </div>\n );\n };\n\n return (\n <div\n className={\"wp-block-video presto-block-video\"}\n style={\n type === \"audio\"\n ? {\n \"--presto-player-border-radius\": `${preset?.border_radius}px`,\n ...(preset?.background_color\n ? {\n \"--plyr-audio-controls-background\": preset.background_color,\n }\n : { \"--plyr-audio-controls-background\": branding?.color }),\n ...(preset?.control_color\n ? {\n \"--plyr-audio-control-color\": preset.control_color,\n \"--plyr-range-thumb-background\": preset.control_color,\n \"--plyr-range-fill-background\": preset.control_color,\n \"--plyr-audio-progress-buffered-background\": convertHex(\n preset.control_color || branding?.color || \"#00b3ff\",\n 0.5\n ),\n }\n : {\n \"--plyr-audio-control-color\": \"#ffffff\",\n \"--plyr-range-thumb-background\": \"#ffffff\",\n \"--plyr-range-fill-background\": \"#ffffff\",\n }),\n \"--plyr-range-thumb-shadow\": `0px`,\n }\n : {\n \"--presto-player-border-radius\": `${preset?.border_radius}px`,\n ...(preset?.caption_background\n ? { \"--plyr-captions-background\": preset.caption_background }\n : {}),\n ...(branding?.color\n ? { \"--plyr-color-main\": branding.color }\n : {}),\n \"--presto-player-email-border-radius\": `${\n preset?.email_collection?.border_radius || 0\n }px`,\n \"--presto-player-logo-width\": `${branding?.logo_width || 75}px`,\n }\n }\n >\n <PrestoPlayer\n src={src}\n css={css}\n classes={classes}\n currentTime={currentTime}\n overlays={overlays}\n isAdmin={true}\n preload={preload}\n preset={preset}\n bunny={{\n thumbnail: attributes?.previewThumbnail,\n preview: attributes?.preview,\n }}\n youtube={{\n channelId: youtube?.channel_id,\n }}\n tracks={\n !!preset?.captions && [\n {\n kind: \"captions\",\n label: \"English\",\n srclang: \"en\",\n src: \"/path/to/captions.en.vtt\",\n default: true,\n },\n ]\n }\n branding={branding}\n chapters={chapters}\n blockAttributes={attributes}\n poster={attributes.poster}\n provider={type === \"audio\" ? \"audio\" : getProvider(src)}\n mediaTitle={attributes.title}\n >\n <div slot=\"player-end\">\n {mutedPreview?.enabled &&\n mutedOverlay?.enabled &&\n mutedOverlayContent()}\n {adminPreview}\n </div>\n </PrestoPlayer>\n </div>\n );\n};\n","const { __ } = wp.i18n;\n\nconst {\n Flex,\n FlexBlock,\n FlexItem,\n Spinner,\n Button,\n TextControl,\n} = wp.components;\n\nimport { history } from \"@/router/context\";\nimport DatePicker from \"../components/DatePicker\";\nimport VideoAverageWatchTime from \"../components/VideoAverageWatchTime\";\nimport VideoTimeline from \"../components/VideoTimeline\";\nimport VideoViews from \"../components/VideoViews\";\nimport Player from \"../../blocks/shared/Player\";\nimport { getProvider } from \"../../blocks/util\";\n\nconst { useEffect, useState } = wp.element;\nconst { apiFetch } = wp;\n\nconst Video = ({ route, startDate, endDate, setStartDate, setEndDate }) => {\n const [loading, setLoading] = useState(true);\n const [video, setVideo] = useState({});\n const [error, setError] = useState(\"\");\n const [thisName, setThisName] = useState(null);\n const [editing, setEditing] = useState(false);\n\n const back = () => {\n history.push(`#/`);\n };\n\n const getVideo = async () => {\n setLoading(true);\n try {\n let video = await apiFetch({\n url: `${prestoPlayer?.root}${prestoPlayer?.prestoVersionString}videos/${route?.params?.id}`,\n });\n setVideo(video);\n setThisName(video?.title);\n } catch (e) {\n if (e.code === \"rest_no_route\") {\n setError(\"Video Not Found\");\n }\n } finally {\n setLoading(false);\n }\n };\n\n const putVideo = async () => {\n console.log(`New Video title ${thisName}`);\n setLoading(true);\n try {\n const data = {\n ...video,\n ...{ title: thisName },\n };\n let saved = await wp.apiFetch({\n method: \"POST\",\n url: wp.url.addQueryArgs(\n `${prestoPlayer.root}${prestoPlayer.prestoVersionString}videos/${video.id}`,\n { _method: \"PUT\" }\n ),\n data,\n });\n\n if (!saved) {\n throw genericError;\n }\n setEditing(false);\n setVideo(saved);\n } catch (e) {\n setError(e?.message ? e.message : genericError);\n } finally {\n setLoading(false);\n }\n };\n\n const cancelEditing = () => {\n setThisName(video?.title);\n setEditing(false);\n };\n\n const renderVideoEditableTitle = () => {\n if (loading) {\n return <Spinner />;\n } else if (editing) {\n return (\n <div className=\"presto-inline-edit presto-inline-edit--editing\">\n <TextControl\n className=\"presto-inline-edit__input\"\n type=\"text\"\n value={thisName}\n onChange={(title) => setThisName(title)}\n />\n <Button\n className=\"presto-inline-edit__button\"\n isPrimary\n onClick={putVideo}\n >\n {\" \"}\n Save{\" \"}\n </Button>\n <Button\n className=\"presto-inline-edit__button\"\n isSecondary\n onClick={cancelEditing}\n >\n {\" \"}\n Cancel{\" \"}\n </Button>\n </div>\n );\n } else {\n return (\n <div className=\"presto-inline-edit\">\n <h1 className=\"presto-dashboard__title presto-inline-edit__text\">\n {video?.title}\n </h1>\n\n <button\n className=\"presto-inline-edit__edit\"\n onClick={() => setEditing(true)}\n >\n <span className=\"dashicon dashicons dashicons-edit\"></span>\n </button>\n </div>\n );\n }\n };\n\n useEffect(() => {\n getVideo();\n }, []);\n\n if (error) {\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <h2>{error}</h2>\n </FlexBlock>\n </Flex>\n </div>\n );\n }\n\n return (\n <div className=\"presto-flow\">\n <Flex>\n <FlexBlock>\n <Button isSecondary onClick={back}>\n &larr; {__(\"Back to Dashboard\", \"presto-player\")}\n </Button>\n </FlexBlock>\n </Flex>\n <Flex wrap>\n <FlexBlock>{renderVideoEditableTitle()}</FlexBlock>\n <FlexItem>\n <DatePicker\n startDate={startDate}\n setStartDate={setStartDate}\n endDate={endDate}\n setEndDate={setEndDate}\n />\n </FlexItem>\n </Flex>\n\n <div className=\"presto-dashboard presto-flow\">\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <VideoViews\n video_id={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n <div className=\"presto-dashboard__item\">\n {!!Object.keys(video || {}).length && (\n <Player\n src={video?.src}\n attributes={{\n title: video.title,\n }}\n type={getProvider(video.src)}\n preset={{\n \"play-large\": true,\n play: true,\n progress: true,\n rewind: true,\n \"fast-forward\": true,\n \"current-time\": true,\n background_color: \"#8421cb\",\n volume: true,\n mute: true,\n i18n: window.prestoPlayer.i18n,\n }}\n />\n )}\n </div>\n <div className=\"presto-dashboard__item\">\n <VideoAverageWatchTime\n video_id={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n </div>\n <div className=\"presto-dashboard__row\">\n <div className=\"presto-dashboard__item is-large\">\n <VideoTimeline\n video_id={route?.params?.id}\n startDate={startDate}\n endDate={endDate}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Video;\n","export const routes = {\n dashboard: {\n path: \"/\",\n },\n video: {\n path: \"/video/:id\",\n },\n user: {\n path: \"/user/:id\",\n },\n};\n","const { useState } = wp.element;\n\nimport { Route, Router } from \"@/router\";\n\nimport AnalyticsUpgrade from \"./pages/AnalyticsUpgrade\";\nimport Dashboard from \"./pages/Dashboard\";\n\nimport User from \"./pages/User\";\nimport Video from \"./pages/Video\";\nimport { routes } from \"./routes\";\n\nexport default () => {\n const scrollToTop = () => {\n window.scrollTo(0, 0);\n };\n\n const [startDate, setStartDate] = useState(\n new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)\n );\n const [endDate, setEndDate] = useState(new Date());\n\n if (!prestoPlayer?.isPremium) {\n return (\n <div className=\"presto-dashboard__content\">\n <AnalyticsUpgrade />\n </div>\n );\n }\n\n return (\n <div className=\"presto-dashboard__content\">\n <Router routes={routes}>\n <Route path={routes.dashboard.path} onRoute={scrollToTop}>\n <Dashboard\n startDate={startDate}\n endDate={endDate}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n />\n </Route>\n <Route path={routes.video.path} onRoute={scrollToTop}>\n <Video\n startDate={startDate}\n endDate={endDate}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n />\n </Route>\n <Route path={routes.user.path} onRoute={scrollToTop}>\n <User\n startDate={startDate}\n endDate={endDate}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n />\n </Route>\n </Router>\n </div>\n );\n};\n","const { render } = wp.element;\n\n/**\n * App\n */\nimport App from \"./App\";\n\n/**\n * styles\n */\nimport \"./analytics.scss\";\n\n/**\n * Render\n */\nrender(<App />, document.getElementById(\"presto-analytics-page\"));\n"],"sourceRoot":""}
dist/analytics/manifest.json CHANGED
@@ -1,8 +1,8 @@
1
  {
2
  "admin.css": "analytics/admin-7f8d2917.css",
3
  "admin.css.map": "analytics/admin-7f8d2917.css.map",
4
- "admin.js": "analytics/admin-5a5a1db1.js",
5
- "admin.js.map": "analytics/admin-5a5a1db1.js.map",
6
  "runtime.js": "analytics/runtime-42c36a43.js",
7
  "runtime.js.map": "analytics/runtime-42c36a43.js.map",
8
  "vendors--presto-player--admin.js": "analytics/vendors--presto-player--admin-fc89ef13.js",
@@ -13,12 +13,12 @@
13
  "js": [
14
  "analytics/runtime-42c36a43.js",
15
  "analytics/vendors--presto-player--admin-fc89ef13.js",
16
- "analytics/admin-5a5a1db1.js"
17
  ],
18
  "js.map": [
19
  "analytics/runtime-42c36a43.js.map",
20
  "analytics/vendors--presto-player--admin-fc89ef13.js.map",
21
- "analytics/admin-5a5a1db1.js.map"
22
  ],
23
  "css": [
24
  "analytics/admin-7f8d2917.css"
1
  {
2
  "admin.css": "analytics/admin-7f8d2917.css",
3
  "admin.css.map": "analytics/admin-7f8d2917.css.map",
4
+ "admin.js": "analytics/admin-1deea871.js",
5
+ "admin.js.map": "analytics/admin-1deea871.js.map",
6
  "runtime.js": "analytics/runtime-42c36a43.js",
7
  "runtime.js.map": "analytics/runtime-42c36a43.js.map",
8
  "vendors--presto-player--admin.js": "analytics/vendors--presto-player--admin-fc89ef13.js",
13
  "js": [
14
  "analytics/runtime-42c36a43.js",
15
  "analytics/vendors--presto-player--admin-fc89ef13.js",
16
+ "analytics/admin-1deea871.js"
17
  ],
18
  "js.map": [
19
  "analytics/runtime-42c36a43.js.map",
20
  "analytics/vendors--presto-player--admin-fc89ef13.js.map",
21
+ "analytics/admin-1deea871.js.map"
22
  ],
23
  "css": [
24
  "analytics/admin-7f8d2917.css"
dist/blocks/admin-54e2cae1.js DELETED
@@ -1,19 +0,0 @@
1
- /*!
2
- *
3
- * Presto Player
4
- *
5
- * @author Presto Made, Inc
6
- * @version 0.1.0
7
- * @link undefined
8
- * @license GPL
9
- *
10
- * Copyright (c) 2022 Presto Made, Inc
11
- *
12
- * This software is released under the GPL License
13
- * https://opensource.org/licenses/GPL
14
- *
15
- * Compiled with the help of https://wpack.io
16
- * A zero setup Webpack Bundler Script for WordPress
17
- */
18
- (window.wpackioprestoPlayerblocksJsonp=window.wpackioprestoPlayerblocksJsonp||[]).push([[0],[,,,function(e,t){e.exports=window.wp.i18n},function(e,t){e.exports=window.wp.components},,,,,function(e,t,r){"use strict";r.d(t,"f",(function(){return l})),r.d(t,"d",(function(){return c})),r.d(t,"e",(function(){return i})),r.d(t,"c",(function(){return s})),r.d(t,"b",(function(){return p})),r.d(t,"a",(function(){return u}));var n=wp.element,a=n.useRef,o=n.useEffect;function l(e){var t=a();return o((function(){t.current=e})),t.current}function c(e){var t=e.status,r=void 0===t?"success":t,n=e.message;wp.data.dispatch("core/notices").createNotice(r,n,{type:"snackbar"})}function i(e){var t,r=e.split(":");return r.length>1&&(t=60*parseInt(r[0])),parseInt(r[1])+parseInt(t)}function s(e){var t=parseInt(e,10),r=Math.floor(t/60);return t<10&&(t="0"+t),r+":"+t}function p(e){var t=e;if(!(t=t.replace(/[^\d\d:\d\d.-]/g,"")).includes(":"))return"".concat(t,":00");0===t.substr(0,t.indexOf(":")).length&&(t="0".concat(t));var r=t.indexOf(":");return t=t.substring(0,r+3)}function u(e){if(e){if(e.match(/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/))return"youtube";if(e.match(/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/([a-z]*\/)*([‌​0-9]{6,11})[?]?.*/))return"vimeo";if(e.indexOf("https://vz-")>-1&&e.indexOf("b-cdn.net")>-1)return"bunny";if(e.indexOf(".mp3")>-1)return"audio"}return"self-hosted"}},,function(e,t,r){"use strict";var n=wp.i18n.__;t.a=function(){return React.createElement("div",{className:"presto-player__pro-badge"},n("Pro","presto-player"))}},function(e,t,r){"use strict";var n=r(1),a=r(0),o=wp.components,l=o.ColorPicker,c=o.ColorIndicator,i=o.Popover,s=o.Button,p=(o.Flex,wp.element),u=p.useState,d=p.useEffect,b=wp.i18n.__;t.a=function(e){var t=e.color,r=e.setColor,o=e.onFocus,p=u(!1),m=Object(n.a)(p,2),y=m[0],v=m[1],f=u(t),h=Object(n.a)(f,2),O=h[0],g=h[1];return d((function(){y&&t&&g(t)}),[y]),Object(a.b)("span",null,Object(a.b)(c,{css:{width:"25px",height:"25px",borderRadius:"9999px"},colorValue:t,onClick:function(){v(!y),o&&o()}}),!!y&&Object(a.b)(i,{position:"bottom left",focusOnMount:!0,onFocusOutside:function(e){v(!1)}},Object(a.b)(l,{color:t||"",onChangeComplete:function(e){return(null==e?void 0:e.hex)&&r(e)},disableAlpha:!0}),Object(a.b)("div",{css:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px"}},Object(a.b)(s,{css:{margin:"0 5px"},isTertiary:!0,onClick:function(){r({hex:null}),v(!1)}},b("Reset","presto-player")),Object(a.b)("div",{css:{display:"flex",justifyContent:"flex-end",padding:"10px"}},Object(a.b)(s,{css:{margin:"0 5px"},isTertiary:!0,onClick:function(){r({hex:O}),v(!1)}},b("Cancel","presto-player")),Object(a.b)(s,{isPrimary:!0,onClick:function(){return v(!1)}},b("Apply","presto-player"))))))}},function(e,t){e.exports=window.wp.element},function(e,t,r){"use strict";var n=r(5),a=r(24),o=r(9);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){Object(n.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var i=wp.data.useSelect;t.a=function(e){var t,r,n,l=e.src,s=e.classes,p=e.preset,u=e.branding,d=e.attributes,b=e.adminPreview,m=e.currentTime,y=e.preload,v=void 0===y?"metadata":y,f=e.overlays,h=e.type,O=d.chapters,g=d.mutedOverlay,j=d.mutedPreview,w=i((function(e){var t;return null===(t=e("presto-player/player"))||void 0===t?void 0:t.youtube()})),_=i((function(e){var t;return null===(t=e("presto-player/player"))||void 0===t?void 0:t.playerCSS()}));return React.createElement("div",{className:"wp-block-video presto-block-video",style:"audio"===h?c(c(c({"--presto-player-border-radius":"".concat(null==p?void 0:p.border_radius,"px")},null!=p&&p.background_color?{"--plyr-audio-controls-background":p.background_color}:{"--plyr-audio-controls-background":null==u?void 0:u.color}),null!=p&&p.control_color?{"--plyr-audio-control-color":p.control_color,"--plyr-range-thumb-background":p.control_color,"--plyr-range-fill-background":p.control_color,"--plyr-audio-progress-buffered-background":function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=e.replace("#","");3===r.length&&(r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var n=parseInt(r.substring(0,2),16),a=parseInt(r.substring(2,4),16),o=parseInt(r.substring(4,6),16);return t>1&&t<=100&&(t/=100),"rgba("+n+","+a+","+o+","+t+")"}(p.control_color||(null==u?void 0:u.color)||"#00b3ff",.5)}:{"--plyr-audio-control-color":"#ffffff","--plyr-range-thumb-background":"#ffffff","--plyr-range-fill-background":"#ffffff"}),{},{"--plyr-range-thumb-shadow":"0px"}):c(c(c({"--presto-player-border-radius":"".concat(null==p?void 0:p.border_radius,"px")},null!=p&&p.caption_background?{"--plyr-captions-background":p.caption_background}:{}),null!=u&&u.color?{"--plyr-color-main":u.color}:{}),{},{"--presto-player-email-border-radius":"".concat((null==p||null===(t=p.email_collection)||void 0===t?void 0:t.border_radius)||0,"px"),"--presto-player-logo-width":"".concat((null==u?void 0:u.logo_width)||75,"px")})},React.createElement(a.c,{src:l,css:_,classes:s,currentTime:m,overlays:f,isAdmin:!0,preload:v,preset:p,bunny:{thumbnail:null==d?void 0:d.previewThumbnail,preview:null==d?void 0:d.preview},youtube:{channelId:null==w?void 0:w.channel_id},tracks:!(null==p||!p.captions)&&[{kind:"captions",label:"English",srclang:"en",src:"/path/to/captions.en.vtt",default:!0}],branding:u,chapters:O,blockAttributes:d,poster:d.poster,provider:"audio"===h?"audio":Object(o.a)(l),mediaTitle:d.title},React.createElement("div",{slot:"player-end"},(null==j?void 0:j.enabled)&&(null==g?void 0:g.enabled)&&React.createElement("div",{className:"presto-player__overlay is-image",style:{position:"absolute",width:"".concat((null==g?void 0:g.width)||100,"%"),left:"".concat(100*((null==g||null===(r=g.focalPoint)||void 0===r?void 0:r.x)||.5),"%"),top:"".concat(100*((null==g||null===(n=g.focalPoint)||void 0===n?void 0:n.y)||.5),"%")}},React.createElement("img",{src:null==g?void 0:g.src,style:{transform:"translateX(-50%) translateY(-50%)"}})),b)))}},function(e,t){e.exports=window.wp.data},function(e,t,r){"use strict";var n={setUrlPrivate:function(){var e=-1===window.location.href.indexOf("?")?"?":"&",t=window.location.href+e+"presto_video_type=private";window.history.pushState({path:t},"",t)},setUrlPublic:function(){var e=-1===window.location.href.indexOf("?")?"?":"&",t=window.location.href+e+"presto_video_type=public";window.history.pushState({path:t},"",t)},unsetUrlParams:function(){var e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=new URL(e);return t.forEach((function(e){r.searchParams.delete(e)})),r.href}(window.location.href,["presto_video_type"]);window.history.pushState({path:e},"",e)}};t.a=n},function(e,t,r){"use strict";var n,a=r(5),o=(n={visibility:{type:String,default:"public"},color:{type:String,default:"#00b3ff"},blockAlignment:{type:String},mutedPreview:{type:Object,default:{enabled:!1,captions:!1}},mutedOverlay:{type:Object,default:{enabled:!1,src:"",width:200,focalPoint:{x:.5,y:.5}}},mutedPreviewCaptions:{type:Boolean},mutedOverlayType:{type:String,default:"text"},mutedOverlayText:{type:String,default:"Click to play"},mutedOverlaySrc:{type:String},mutedOverlayImageWidth:{type:Number,default:200},mutedOverlayFocalPoint:{type:Object}},Object(a.a)(n,"mutedOverlay",{type:Object,default:{enabled:!1,type:"text",text:"",src:"",width:200,focalPoint:{x:.5,y:.5}}}),Object(a.a)(n,"autoplay",{type:Boolean}),Object(a.a)(n,"preload",{type:String}),Object(a.a)(n,"playsInline",{type:Boolean}),Object(a.a)(n,"id",{type:Number}),Object(a.a)(n,"attachment_id",{type:Number}),Object(a.a)(n,"src",{type:String}),Object(a.a)(n,"imageID",{type:Number}),Object(a.a)(n,"poster",{type:String}),Object(a.a)(n,"content",{type:Boolean}),Object(a.a)(n,"preset",{type:Number}),Object(a.a)(n,"chapters",{type:Array,default:[]}),Object(a.a)(n,"overlays",{type:Array,default:[]}),Object(a.a)(n,"tracks",{type:"array",items:{type:"object"},default:[]}),n);t.a={attributes:o,category:"presto",supports:{align:!0},save:function(){return null}}},function(e,t,r){"use strict";function n(e){var t,r=(e||"").match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/);return r&&11===(null==r||null===(t=r[2])||void 0===t?void 0:t.length)?r[2]:null}function a(e){var t=/^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/.exec(e||"");return(null==t?void 0:t[5])||""}function o(e){var t=a(e);if(t)return{video_id:t,type:"vimeo"};var r=n(e);return r?{video_id:r,type:"youtube"}:{$video_id:0,$type:"none"}}function l(e){return"string"==typeof e&&e.includes(".m3u8")}r.d(t,"c",(function(){return n})),r.d(t,"b",(function(){return a})),r.d(t,"a",(function(){return o})),r.d(t,"d",(function(){return l}))},,,function(e,t,r){"use strict";var n=r(5),a=r(7),o=r(1),l=r(2),c=r.n(l),i=r(9),s=r(35);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){Object(n.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var d=wp.compose.createHigherOrderComponent,b=wp.element,m=b.useEffect,y=b.useState;t.a=function(){return d((function(e){return function(t){var r=t.presets,n=t.attributes,l=t.setAttributes,p=t.defaultPreset,d=t.isSelected,b=t.branding,v=y({}),f=Object(o.a)(v,2),h=f[0],O=f[1],g=y(1),j=Object(o.a)(g,2),w=j[0],E=j[1],R=n.poster,k=n.chapters;m((function(){d&&null!=n&&n.id&&wp.data.dispatch("core/edit-post").openGeneralSidebar("edit-post/block")}),[d]),m((function(){d&&null!=n&&n.selectionOverrideClientId&&wp.data.dispatch("core/block-editor").selectBlock(null==n?void 0:n.selectionOverrideClientId)}),[d]),m((function(){if(r&&r.length){var e=r.find((function(e){return e.id===(null==n?void 0:n.preset)}));e?O(e):(O(p),l({preset:null==p?void 0:p.id}))}}),[r,null==n?void 0:n.preset]),m((function(){P()}),[R,h,k,b.logo]);var P=function(){E(w+1)},C=Object(i.f)(k);m((function(){var e=null==k?void 0:k.map((function(e){return e.time})),t=null==C?void 0:C.map((function(e){return e.time}));_.difference(e,t).length&&P()}),[k]);var x=function(){var e=Object(a.a)(c.a.mark((function e(t){var r,n,a,o,i,p,d;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.src,n=t.external_id,a=t.attachment_id,o=t.type,i=t.title,r||n||a){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Object(s.a)({method:"POST",path:"/presto-player/v1/videos",data:u(u({attachment_id:a,post_id:wp.data.select("core/editor").getCurrentPostId(),external_id:n},i?{title:i}:{}),{},{src:r,type:o})});case 5:p=e.sent,d=p.id,l({id:d});case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return null!=n&&n.preset||l({preset:null==p?void 0:p.id}),React.createElement(e,Object.assign({},t,{lockSave:function(){return wp.data.dispatch("core/editor").lockPostSaving("presto-player")},unlockSave:function(){return wp.data.dispatch("core/editor").unlockPostSaving("presto-player")},createVideo:x,onUpdate:P,onRemoveSrc:function(){confirm("Remove this video?")&&l(u(u(u(u({src:"",id:void 0},null!=n&&n.thumbnail?{thumbnail:null}:{}),null!=n&&n.preview?{preview:null}:{}),null!=n&&n.previewSrc?{previewSrc:null}:{}),null!=n&&n.previewThumbnail?{previewThumbnail:null}:{}))},presetData:h,setPresetData:O,renderKey:w}))}}),"withPlayerEdit")}},function(e,t,r){"use strict";var n=wp.data.withSelect;t.a=function(e){return n((function(e){return{branding:e("presto-player/player").branding(),loading:e("presto-player/player").isResolving("getPresets"),presets:e("presto-player/player").getPresets(),defaultPreset:e("presto-player/player").getDefaultPreset()}}))}},function(e,t,r){"use strict";var n,a=r(30),o=r(41),l=r(11),c=r(6),i=r(1),s=r(50),p=r(0),u=wp.i18n.__,d=wp.element.useState,b=wp.data,m=(b.useSelect,b.dispatch),y=wp.components,v=(y.withNotices,y.BaseControl),f=(y.Spinner,y.Button),h=function(e){var t,r=e.setAttributes,a=e.attributes,o=a.overlays,b=d(!1),y=Object(i.a)(b,2),h=y[0],O=y[1];return Object(p.b)(React.Fragment,null,Object(p.b)(v,null,Object(p.b)(f,{isPrimary:!0,onClick:function(){var e;null!==(e=prestoPlayer)&&void 0!==e&&e.isPremium?O(!0):m("presto-player/player").setProModal(!0)}},o.length?u("Update Overlays","presto-player"):u("Add Overlay","presto-player"),!!o.length&&Object(p.b)("div",{css:Object(p.a)(n||(n=Object(c.a)(["\n font-size: 10px;\n background: #fff;\n color: var(--wp-admin-theme-color);\n font-weight: bold;\n display: inline-block;\n line-height: 6px;\n padding: 5px;\n border-radius: 9999px;\n margin-left: 10px;\n "])))},o.length)),!(null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium)&&Object(p.b)(l.a,null)),h&&Object(p.b)(s.a,{closeModal:function(){return O(!1)},attributes:a,setAttributes:r,updateOverlayAttribute:function(e){r({overlays:e})}}))},O=r(7),g=r(5),j=r(2),w=r.n(j),_=r(9),E=r(32),R=r(37),k=r(42),P=wp.i18n.__,C=wp.components,x=C.ToggleControl,S=C.BaseControl,N=C.HorizontalRule,T=C.__experimentalAlignmentMatrixControl,D=C.SelectControl,B=function(e){var t=e.state,r=e.updateState,n=e.className;return React.createElement("div",{className:n},React.createElement(S,null,React.createElement("h3",null,P("Behavior","presto-player"))),React.createElement(S,null,React.createElement(x,{label:P("Auto-Hide Controls","presto-player"),help:P("Hide video controls automatically after 2 seconds of no mouse movement.","presto-player"),onChange:function(e){r({auto_hide:e})},checked:t.auto_hide})),React.createElement(S,null,React.createElement(x,{label:P("Save Play Position","presto-player"),help:P("Saves the user's play position so when they come back to the page they can continue the video from where they left off.","presto-player"),onChange:function(e){r({save_player_position:e})},checked:t.save_player_position})),React.createElement(S,null,React.createElement(x,{label:P("Captions On By Default","presto-player"),help:P("Toggles if captions should be active by default.","presto-player"),onChange:function(e){r({captions_enabled:e})},checked:t.captions_enabled})),React.createElement(S,null,React.createElement(x,{label:P("Focus Mode","presto-player"),help:P("Play only when tab is visible and video is in viewport.","presto-player"),onChange:function(e){r({play_video_viewport:e})},checked:t.play_video_viewport})),React.createElement(S,null,React.createElement(x,{label:P("Sticky On Scroll","presto-player"),help:P("Stick videos to the side of the screen when the page is scrolled and the video is playing.","presto-player"),onChange:function(e){r({sticky_scroll:e})},checked:t.sticky_scroll})),!!t.sticky_scroll&&React.createElement(React.Fragment,null,React.createElement(S,{label:P("Choose a position for your sticky player.","presto-player")},React.createElement(T,{value:t.sticky_scroll_position,onChange:function(e){r({sticky_scroll_position:e})}}))),React.createElement(S,null,React.createElement(D,{label:P("On Video End","presto-player"),value:t.on_video_end,options:[{value:"select",label:P("Select","presto-player")},{value:"loop",label:P("Loop","presto-player")},{value:"go-to-start",label:P("Go to start","presto-player")}],onChange:function(e){r({on_video_end:e})}})),React.createElement(N,null),React.createElement(S,null),React.createElement(S,null,React.createElement("h3",null,P("Youtube","presto-player"))),React.createElement(S,null,React.createElement(x,{label:P("Hide Youtube UI (Experimental)","presto-player"),help:P("Hides the Youtube logo and related videos.","presto-player"),onChange:function(e){r({hide_youtube:e})},checked:t.hide_youtube})),React.createElement(S,null,React.createElement(x,{label:P("Lazy Load Videos","presto-player"),help:P("Improves page loading performance by only loading the video when clicked.","presto-player"),onChange:function(e){r({lazy_load_youtube:e})},checked:t.lazy_load_youtube})))},A=wp.i18n.__,L=wp.components,I=L.ToggleControl,F=L.BaseControl,V=function(e){var t=e.state,r=e.updateState,n=e.className;return React.createElement("div",{className:n},React.createElement(F,null,React.createElement("h3",null,A("Controls","presto-player"))),React.createElement(F,{className:"presto-player__control--large-play"},React.createElement(I,{label:A("Large Play Button","presto-player"),help:A("Adds a large play button over the top of the player.","presto-player"),onChange:function(e){r({"play-large":e})},checked:t["play-large"]})),React.createElement(F,{className:"presto-player__control--rewind"},React.createElement(I,{label:A("Rewind","presto-player"),help:A("Adds a 10 second rewind button to the player.","presto-player"),onChange:function(e){r({rewind:e})},checked:t.rewind})),React.createElement(F,{className:"presto-player__control--play"},React.createElement(I,{label:A("Small Play Button","presto-player"),help:A("Adds a small play button to the bottom of the player.","presto-player"),onChange:function(e){r({play:e})},checked:t.play})),React.createElement(F,{className:"presto-player__control--fast-forward"},React.createElement(I,{label:A("Fast Forward","presto-player"),help:A("Adds a 10 second rewind button to the player.","presto-player"),onChange:function(e){r({"fast-forward":e})},checked:t["fast-forward"]})),React.createElement(F,{className:"presto-player__control--progress"},React.createElement(I,{label:A("Progress Bar","presto-player"),help:A("Shows a seekable progress bar.","presto-player"),onChange:function(e){r({progress:e})},checked:t.progress})),React.createElement(F,{className:"presto-player__control--current-time"},React.createElement(I,{label:A("Current Time","presto-player"),help:A("Shows the video timestamp.","presto-player"),onChange:function(e){r({"current-time":e})},checked:t["current-time"]})),React.createElement(F,{className:"presto-player__control--volume"},React.createElement(I,{label:A("Volume","presto-player"),help:A("Shows a volume bar.","presto-player"),onChange:function(e){r({volume:e,mute:e})},checked:t.volume})),React.createElement(F,{className:"presto-player__control--speed"},React.createElement(I,{label:A("Speed","presto-player"),help:A("Shows playback speed controls.","presto-player"),onChange:function(e){r({speed:e})},checked:t.speed})),React.createElement(F,{className:"presto-player__control--pip"},React.createElement(I,{label:A("Picture In Picture (HTML5 only)","presto-player"),help:A("Allows users to dock the player on their screen and watch when using other app on their computer.","presto-player"),onChange:function(e){r({pip:e})},checked:t.pip})),React.createElement(F,{className:"presto-player__control--fullscreen"},React.createElement(I,{label:A("Fullscreen","presto-player"),help:A("Adds a button to allow the player to be fullscreen.","presto-player"),onChange:function(e){r({fullscreen:e})},checked:t.fullscreen})),React.createElement(F,{className:"presto-player__control--captions"},React.createElement(I,{label:A("Captions","presto-player"),help:A("Shows a dedicated caption toggle button.","presto-player"),onChange:function(e){r({captions:e})},checked:t.captions})))},U=r(38),M=r(12);function z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function W(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?z(Object(r),!0).forEach((function(t){Object(g.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var H,Y,G=wp.i18n.__,q=wp.components,Z=q.ToggleControl,K=q.BaseControl,Q=q.RadioControl,X=q.Flex,$=q.RangeControl,J=wp.element.useEffect,ee=function(e){var t=e.state,r=e.updateState,n=e.className,a=t.watermark,o={text:G("Enter your watermark text.","presto-player"),position:"top-right",color:"#fff",backgroundColor:"#333",opacity:80};J((function(){Object.keys(o).forEach((function(e){var r;void 0===(null==t||null===(r=t.watermark)||void 0===r?void 0:r[e])&&l(Object(g.a)({},e,o[e]))}))}),[t]);var l=function(e){r(W(W({},t),{},{watermark:W(W({},a),e)}))};return React.createElement("div",{className:n},React.createElement(K,null,React.createElement("h3",null,G("Dynamic Watermark Text","presto-player"))),React.createElement(K,{className:"presto-player__control--watermark"},React.createElement(Z,{label:G("Enable","presto-player"),help:G("Add a simulated dynamic watermark over your video.","presto-player"),onChange:function(e){l({enabled:e})},checked:null==a?void 0:a.enabled})),(null==a?void 0:a.enabled)&&React.createElement("div",null,React.createElement(U.a,{text:null==a?void 0:a.text,update:function(e){var t=e.text;l({text:t})}}),React.createElement(K,{className:n},React.createElement(Q,{label:G("Position","presto-player"),options:[{label:"Top Right",value:"top-right"},{label:"Top Left",value:"top-left"},{label:"Change Every 10 Seconds",value:"randomize"}],selected:(null==a?void 0:a.position)||"top-right",onChange:function(e){return l({position:e})}})),React.createElement(K,{className:"presto-player__control-text-color"},React.createElement(X,null,React.createElement(K.VisualLabel,null,G("Text Color","presto-player")),React.createElement(M.a,{color:(null==a?void 0:a.color)||"#fff",setColor:function(e){return l({color:e&&e.hex})}}))),React.createElement(K,{className:"presto-player__control-text-color"},React.createElement(X,null,React.createElement(K.VisualLabel,null,G("Background Color","presto-player")),React.createElement(M.a,{color:(null==a?void 0:a.backgroundColor)||"#333",setColor:function(e){return l({backgroundColor:e&&e.hex})}}))),React.createElement(K,null,React.createElement($,{label:G("Opacity","presto-player"),help:G("Opacity percentage of the watermark.","presto-player"),value:(null==a?void 0:a.opacity)||100,onChange:function(e){return l({opacity:e})},min:0,max:100}))))},te=r(34),re=r(40),ne=wp.i18n.__,ae=wp.components,oe=ae.ToggleControl,le=ae.BaseControl,ce=ae.RangeControl,ie=ae.SelectControl,se=ae.ColorPicker,pe=function(e){var t=e.state,r=e.updateState,n=e.className;return React.createElement("div",{className:n},React.createElement(le,null,React.createElement("h3",null,ne("Style","presto-player"))),React.createElement(le,null,React.createElement(oe,{label:ne("Hide Logo","presto-player"),help:ne("Hides the logo on this video.","presto-player"),onChange:function(e){r({hide_logo:e})},checked:t.hide_logo})),React.createElement(le,null,React.createElement(ce,{label:ne("Round Corners","presto-player"),help:ne("Player border radius size.","presto-player"),value:(null==t?void 0:t.border_radius)||0,onChange:function(e){return r({border_radius:e})},min:0,max:25})),React.createElement(le,null,React.createElement(ie,{label:ne("Caption Style","presto-player"),labelPosition:"top",value:null==t?void 0:t.caption_style,options:[{label:ne("Default","presto-player"),value:"default"},{label:ne("Full","presto-player"),value:"full"}],onChange:function(e){r({caption_style:e})}})),React.createElement(le,null,React.createElement(le.VisualLabel,null,React.createElement("p",null,ne("Caption Background","presto-player"))),React.createElement(se,{color:(null==t?void 0:t.caption_background)||"#000000",onChangeComplete:function(e){r({caption_background:e.hex})},disableAlpha:!0})))};function ue(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function de(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(r),!0).forEach((function(t){Object(g.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ue(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var be=wp.i18n.__,me=wp.components,ye=me.TextControl,ve=me.BaseControl,fe=me.Icon,he=me.Notice,Oe=me.Button,ge=me.Flex,je=me.FlexItem,we=me.SelectControl,_e=me.FlexBlock,Ee=me.Modal,Re=wp.element,ke=Re.useState,Pe=Re.useEffect,Ce=wp.data,xe=Ce.useSelect,Se=Ce.dispatch;var Ne=function(e){var t=e.type,r=void 0===t?"new":t,n=e.closeModal,a=e.addPreset,o=e.onSave,l=e.updatePreset,s=e.name,u=void 0===s?"":s,d=e.preset,b=void 0===d?{"play-large":!0,rewind:!0,play:!0,"fast-forward":!0,progress:!0,"current-time":!0,mute:!0,volume:!0,speed:!1,pip:!1,fullscreen:!0,captions:!1,save_player_position:!1,reset_on_end:!1,auto_hide:!0,sticky_scroll:!1,hide_logo:!1,border_radius:0,skin:"default",caption_style:"default",caption_background:"#000000",hide_youtube:!1,lazy_load_youtube:!1,cta:{},email_collection:{},action_bar:{}}:d,m=ke(!1),y=Object(i.a)(m,2),v=y[0],f=y[1],h=ke(""),g=Object(i.a)(h,2),j=g[0],P=g[1],C=ke(""),x=Object(i.a)(C,2),S=x[0],N=x[1],T=ke(u),D=Object(i.a)(T,2),A=D[0],L=D[1],I=ke(b),F=Object(i.a)(I,2),U=F[0],M=F[1],z=xe((function(e){return e("presto-player/player").branding()})),W=ke(""),G=Object(i.a)(W,2),q=G[0],Z=G[1],K={message:be("The preset could not be saved. Please reload the page and try again.","presto-player")},Q=xe((function(e){return e("presto-player/player").youtube()}));Pe((function(){Z(Q.channel_id)}),[null==Q?void 0:Q.channel_id]);var X=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};M(de(de({},U),e))},$=function(){var e=Object(O.a)(w.a.mark((function e(){var t,r,a,c;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,t=de(de({},U),{name:A}),e.next=5,wp.apiFetch({method:"POST",url:wp.url.addQueryArgs("".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"preset/").concat(b.id),{_method:"PUT"}),data:t});case 5:if(r=e.sent){e.next=8;break}throw K;case 8:l(r),n(),o&&o(r),Object(_.d)({message:be("Preset updated!","presto-player")}),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(1),P(null!==e.t0&&void 0!==e.t0&&e.t0.message?e.t0.message:K);case 17:return e.prev=17,f(!1),e.finish(17);case 20:return Se("presto-player/player").updateYoutube({channel_id:q}),a=de(de({},Q),{channel_id:q}),e.prev=22,e.next=25,wp.apiFetch({path:"wp/v2/settings",method:"POST",data:{presto_player_youtube:a}});case 25:null!=(c=e.sent)&&c.presto_player_youtube&&(Se("presto-player/player").setYoutube(null==c?void 0:c.presto_player_youtube),onClose()),e.next=32;break;case 29:e.prev=29,e.t1=e.catch(22),console.log(e.t1);case 32:case"end":return e.stop()}}),e,null,[[1,14,17,20],[22,29]])})));return function(){return e.apply(this,arguments)}}(),J=function(){var e=Object(O.a)(w.a.mark((function e(){var t;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,e.next=4,wp.apiFetch({method:"POST",url:prestoPlayer.root+prestoPlayer.prestoVersionString+"preset",data:de(de({},{name:A}),U)});case 4:if(t=e.sent){e.next=7;break}throw K;case 7:a(t),n(),o&&o(t),Object(_.d)({message:be("Preset created!","presto-player")}),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),P(null!==e.t0&&void 0!==e.t0&&e.t0.message?e.t0.message:K);case 16:return e.prev=16,f(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[1,13,16,19]])})));return function(){return e.apply(this,arguments)}}(),ne=[{name:"controls",title:be("Controls","presto-player"),icon:Object(p.b)(fe,{icon:"admin-settings"}),component:Object(p.b)(V,{updateState:X,state:U})},{name:"behavior",title:be("Behavior","presto-player"),icon:Object(p.b)(fe,{icon:"admin-generic"}),component:Object(p.b)(B,{updateState:X,state:U})},{name:"style",title:be("Style","presto-player"),icon:Object(p.b)(fe,{icon:"admin-customizer"}),component:Object(p.b)(pe,{updateState:X,state:U})},{name:"email",title:be("Email Capture","presto-player"),icon:Object(p.b)(fe,{icon:"email"}),component:Object(p.b)(re.a,{updateState:X,state:U})},{name:"cta",title:be("Call To Action","presto-player"),icon:Object(p.b)(fe,{icon:"megaphone"}),component:Object(p.b)(te.a,{updateState:X,state:U})},{name:"action_bar",title:be("Action Bar","presto-player"),icon:Object(p.b)(fe,{icon:"cover-image"}),component:Object(p.b)(k.a,{updateState:X,state:U,value:q,setValue:Z})},{name:"watermark",title:be("Dynamic Watermark","presto-player"),icon:Object(p.b)(fe,{icon:"lock"}),component:Object(p.b)(ee,{updateState:X,state:U})}];return Object(p.b)(Ee,{title:be("edit"==r?"Edit A Video Preset":"Create A New Video Preset","presto-player"),onRequestClose:n,className:"presto-player__modal-presets",overlayClassName:"presto-player__modal-presets-overlay"},Object(p.b)("div",{className:"presto-player__preset-options","data-cy":"preset-modal"},Object(p.b)(ye,{value:A,hideLabelFromVision:!0,label:be("Preset Name","presto-player"),onChange:function(e){return L(e)},placeholder:be("Enter a preset name...","presto-player"),className:"presto-player__modal--style-name",autoFocus:!0}),Object(p.b)(ge,{align:"stretch",className:"presto-player__style-preview-area"},Object(p.b)(je,{className:"presto-player__style-sidebar"},Object(p.b)("div",null,Object(p.b)(E.a,{items:ne,title:be("Customize","presto-player"),onSelect:N},(function(e){return e.component})))),Object(p.b)(_e,{className:"presto-player__style-preview-panel"},Object(p.b)("div",{style:{position:"absolute",top:0,left:0,padding:"20px"}},Object(p.b)(we,{label:be("Skin","presto-player"),labelPosition:"side",value:null==U?void 0:U.skin,hideLabelFromVision:!0,options:[{label:be("Basic","presto-player"),value:"default"},{label:be("Stacked","presto-player"),value:"stacked"}],onChange:function(e){X({skin:e})}})),Object(p.b)(R.a,{poster:"https://source.unsplash.com/daily",state:U,branding:z,menu:S}))),Object(p.b)("br",null),j&&Object(p.b)(ve,null,Object(p.b)(he,{className:"presto-player__modal--error-notice",status:"error",isDismissible:!1,style:{margin:0}},j.replace(/(<([^>]+)>)/gi,""))),Object(p.b)("div",{css:Object(p.a)(H||(H=Object(c.a)(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n "])))},Object(p.b)("div",{css:Object(p.a)(Y||(Y=Object(c.a)(["\n opacity: 0.5;\n font-size: 12px;\n "])))},"Preset ID: ",b.id),Object(p.b)("div",null,Object(p.b)(Oe,{isTertiary:!0,onClick:n,style:{margin:"0 6px"}},be("Cancel","presto-player")),Object(p.b)(Oe,{isPrimary:!0,isBusy:v,disabled:v,onClick:function(){if(A)return"edit"===r?$():J();P(be("You must enter a name for the preset.","presto-player"))},"data-cy":"submit-preset"},be("edit"==r?"Update Preset":"Create Preset","presto-player"))))))},Te=wp.i18n.__,De=wp.components,Be=De.Icon,Ae=De.Spinner,Le=De.Modal,Ie=De.Button,Fe=De.ButtonGroup,Ve=wp.element.useState,Ue=function(e){var t,r,n=e.preset,a=e.index,o=e.isActive,l=e.remove,c=e.setPreset,s=e.onEdit,p=Ve(!1),u=Object(i.a)(p,2),d=u[0],b=u[1],m=Ve(!1),y=Object(i.a)(m,2),v=y[0],f=y[1],h=function(){return f(!1)},g=function(){var e=Object(O.a)(w.a.mark((function e(){return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.id){e.next=3;break}return l(n),e.abrupt("return");case 3:return e.prev=3,b(!0),e.next=7,wp.apiFetch({method:"POST",url:wp.url.addQueryArgs("".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"preset/").concat(n.id),{_method:"DELETE"})});case 7:e.sent&&(l(n),wp.data.dispatch("core/notices").createNotice("success",Te("Preset trashed.","presto-player"),{type:"snackbar",isDismissible:!0})),e.next=15;break;case 11:e.prev=11,e.t0=e.catch(3),console.error(e.t0),null!==e.t0&&void 0!==e.t0&&e.t0.message&&wp.data.dispatch("core/notices").createNotice("error",e.t0.message,{type:"snackbar",isDismissible:!0});case 15:return e.prev=15,f(!1),b(!1),e.finish(15);case 19:case"end":return e.stop()}}),e,null,[[3,11,15,19]])})));return function(){return e.apply(this,arguments)}}();return d?React.createElement("div",{className:"block-editor-block-styles__item",role:"button",tabIndex:a,"aria-label":"Fill",style:{color:o?"var(--wp-admin-theme-color)":"inherit"}},React.createElement("div",{className:"block-editor-block-styles__item-preview",style:{border:o?"2px solid var(--wp-admin-theme-color)":"2px solid #e3e3e3",margin:0,display:"flex","align-items":"center","justify-content":"center"}},React.createElement(Ae,null))):React.createElement("div",{className:"block-editor-block-styles__item presto-preset-".concat(n.slug),onClick:function(){c(n)},role:"button",tabIndex:a,"aria-label":"Fill",style:{color:o?"var(--wp-admin-theme-color)":"inherit"}},React.createElement("div",{className:"block-editor-block-styles__item-preview",style:{border:o?"2px solid var(--wp-admin-theme-color)":"2px solid #e3e3e3",margin:0}},React.createElement("div",{style:{textAlign:"center",width:"100%",color:o?"var(--wp-admin-theme-color)":"inherit",opacity:o?1:.75}},null!=n&&n.icon?React.createElement(Be,{icon:null==n?void 0:n.icon,style:{fontSize:"30px",width:"30px",height:"30px"}}):React.createElement("h1",{style:{opacity:.75}},(null==n||null===(t=n.name)||void 0===t||null===(r=t.charAt(0))||void 0===r?void 0:r.toUpperCase())||"Untitled"))),React.createElement("div",{className:"block-editor-block-styles__item-label",style:{fontWeight:"bold",textTransform:"capitalize"}},(null==n?void 0:n.name)||"Untitled"),!(null!=n&&n.is_locked)&&React.createElement("div",{className:"block-editor-block-styles__item-edit"},React.createElement("div",{className:"block-editor-block-styles__item-edit-icon",onClick:s},React.createElement(Be,{icon:"edit"})),React.createElement("div",{className:"block-editor-block-styles__item-edit-icon",onClick:function(){return f(!0)}},React.createElement(Be,{icon:"trash"}))),v&&React.createElement(Le,{title:Te("Trash Preset?","presto-player"),onRequestClose:h,style:{maxWidth:"250px"}},React.createElement("p",null,React.createElement("strong",null,Te("Warning!","presto-player")," "),Te("Any videos assigned to this preset will automatically use the default preset.","presto-player")),React.createElement(Fe,null,React.createElement(Ie,{isDestructive:!0,onClick:g,style:{margin:"0 4px"}},Te("Trash","presto-player")),React.createElement(Ie,{isTertiary:!0,onClick:h,style:{margin:"0 4px",boxShadow:"none"}},Te("Cancel","presto-player")))))},Me=wp.i18n.__,ze=wp.components,We=ze.withNotices,He=ze.BaseControl,Ye=ze.Spinner,Ge=ze.Button,qe=wp.element,Ze=qe.useState,Ke=(qe.useEffect,wp.data),Qe=Ke.useSelect,Xe=Ke.dispatch;var $e=We((function(e){var t,r=e.attributes,n=e.setAttributes,a=Ze(!1),o=Object(i.a)(a,2),c=o[0],s=o[1],p=function(){return s(!1)},u=Ze(null),d=Object(i.a)(u,2),b=d[0],m=d[1],y=Ze(null),v=Object(i.a)(y,2),f=v[0],h=v[1],O=Qe((function(e){return{presets:e("presto-player/player").getPresets(),loading:e("presto-player/player").isResolving("getPresets")}})),g=O.presets,j=O.loading,w=function(e){Xe("presto-player/player").addPreset(e)},_=function(e){Xe("presto-player/player").removePreset(e)},E=function(e){n({preset:e.id})};return j?React.createElement("div",{className:"presto-settings__loading"},React.createElement(Ye,null)):React.createElement(React.Fragment,null,g.length?React.createElement("p",null,Me("Select a video configuration preset, or add your own.","presto-player")):"",React.createElement(He,null,React.createElement("div",{className:"block-editor-block-styles"},(g||[]).length?g.map((function(e,t){return React.createElement(Ue,{setPreset:E,index:t,isActive:(null==r?void 0:r.preset)===e.id,preset:e,key:e.id,onEdit:function(){h(e.name),m(e),s("edit")},remove:_})})):Me("No style presets. You can create a new style by clicking 'Add New Style'.","presto-plugin"))),React.createElement(He,null,React.createElement(Ge,{isPrimary:!0,"data-cy":"add-new-preset",onClick:function(){var e;null!==(e=prestoPlayer)&&void 0!==e&&e.isPremium?s("new"):Xe("presto-player/player").setProModal(!0)}},Me("Add New Preset","presto-player")),!(null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium)&&React.createElement(l.a,null)),"new"==c&&React.createElement(Ne,{closeModal:p,addPreset:w,type:"new",onSave:E}),"edit"==c&&React.createElement(Ne,{closeModal:p,addPreset:w,updatePreset:function(e){Xe("presto-player/player").updatePreset(e)},type:"edit",preset:b,name:f}))})),Je=r(18);function et(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function tt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?et(Object(r),!0).forEach((function(t){Object(g.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):et(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var rt=wp.i18n.__,nt=wp.components,at=(nt.PanelRow,nt.TextControl,nt.SelectControl,nt.BaseControl),ot=nt.Button,lt=nt.FocalPointPicker,ct=nt.RangeControl,it=wp.blockEditor,st=it.MediaUpload,pt=it.MediaUploadCheck,ut=(wp.element.useState,["image"]),dt=function(e){var t=e.attributes,r=e.setAttributes,n=e.instanceId,a=t.mutedOverlay,o="video-block__overlay-image-description-".concat(n);return React.createElement(React.Fragment,null,React.createElement(pt,null,React.createElement(at,{className:"editor-video-overlay-control"},React.createElement(at.VisualLabel,null,React.createElement("p",null,rt("Overlay Image","presto-player"))),React.createElement(st,{title:rt("Select overlay image","presto-player"),onSelect:function(e){r({mutedOverlay:tt(tt({},a),{src:e.url})})},allowedTypes:ut,render:function(e){var t=e.open;return React.createElement(ot,{className:"presto-setting__poster",isPrimary:!0,onClick:t},null!=a&&a.src?rt("Replace","presto-player"):rt("Select","presto-player"))}}),React.createElement("p",{id:o,hidden:!0},null!=a&&a.src?sprintf(rt("The current overlay image url is %s","presto-player"),null==a?void 0:a.src):rt("There is no overlay image currently selected","presto-player")),!(null==a||!a.src)&&React.createElement(ot,{onClick:function(){r({mutedOverlay:tt(tt({},a),{src:""})})},className:"presto-setting__remove-poster",isTertiary:!0},rt("Remove","presto-player")))),!(null==a||!a.src)&&React.createElement(lt,{url:"",dimensions:{width:160,height:90},value:null==a?void 0:a.focalPoint,onChange:function(e){return r({mutedOverlay:tt(tt({},a),{focalPoint:e})})}}),!(null==a||!a.src)&&React.createElement(ct,{label:rt("Max Width (%)","presto-player"),value:null==a?void 0:a.width,onChange:function(e){return r({mutedOverlay:tt(tt({},a),{width:e})})},min:1,max:100}))};function bt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function mt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?bt(Object(r),!0).forEach((function(t){Object(g.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):bt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var yt=wp.i18n.__,vt=wp.components,ft=vt.ToggleControl,ht=vt.SelectControl,Ot=vt.BaseControl,gt=vt.Button,jt=vt.PanelRow,wt=vt.Icon,_t=vt.Flex,Et=wp.data.dispatch,Rt=wp.blockEditor,kt=Rt.MediaUpload,Pt=Rt.MediaUploadCheck,Ct=["image"],xt=wp.compose.useInstanceId,St=function e(t){var r=t.setAttributes,n=t.attributes,a=n.mutedPreview,o=n.autoplay,c=n.playsInline,i=n.preload,s=n.poster,p=n.mutedOverlay,u=xt(e),d="video-block__poster-image-description-".concat(u),b=function(e){return function(t){r(Object(g.a)({},e,t))}};var m,y;return React.createElement(React.Fragment,null,!o&&React.createElement(React.Fragment,null,React.createElement(ft,{label:React.createElement(React.Fragment,null,yt("Muted Autoplay Preview","presto-player")," ",!(null!==(m=prestoPlayer)&&void 0!==m&&m.isPremium)&&React.createElement(l.a,null)),onChange:function(e){var t;null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium?r({mutedPreview:mt(mt({},a),{enabled:e})}):Et("presto-player/player").setProModal(!0)},checked:null==a?void 0:a.enabled,className:"presto-setting__mutedPreview",help:yt("Shows a muted preview of the video.","presto-player")}),!(null==a||!a.enabled)&&!(null!=n&&n.video_id)&&React.createElement(jt,null,React.createElement(ft,{label:yt("Muted Preview Captions","presto-player"),onChange:function(e){r({mutedPreview:mt(mt({},a),{captions:e})})},checked:null==a?void 0:a.captions,className:"presto-setting__mutedPreviewCaptions",help:yt("Play captions during muted autoplay","presto-player")})),!!a.enabled&&React.createElement(jt,null,React.createElement(ft,{label:React.createElement(React.Fragment,null,yt("Muted Preview Overlay","presto-player")," ",!(null!==(y=prestoPlayer)&&void 0!==y&&y.isPremium)&&React.createElement(l.a,null)),onChange:function(e){var t;null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium?r({mutedOverlay:mt(mt({},p),{enabled:e})}):Et("presto-player/player").setProModal(!0)},checked:null==p?void 0:p.enabled,className:"presto-setting__mutedOverlay",help:yt("Show an image over the top of the video either before or after the video.","presto-player")})),(null==p?void 0:p.enabled)&&(null==a?void 0:a.enabled)&&React.createElement(dt,{attributes:n,setAttributes:r})),!(null!=a&&a.enabled)&&React.createElement(ft,{label:yt("Autoplay","presto-player"),className:"presto-setting__autoplay",onChange:b("autoplay"),checked:o,help:function(e){return e?yt("Note: Autoplaying videos may cause usability issues for some visitors.","presto-player"):null}}),React.createElement(jt,null,React.createElement(ft,{label:yt("Play inline","presto-player"),className:"presto-setting__playsInline","data-cy":"playsInline",onChange:b("playsInline"),checked:c,help:yt("On mobile browsers, play the video on the page instead of opening it up fullscreen.","presto-player")})),!(null!=n&&n.video_id)&&React.createElement(jt,null,React.createElement(ht,{label:React.createElement(_t,null,React.createElement("div",null,yt("Performance Preference","presto-player")),React.createElement("a",{href:"https://prestoplayer.com/docs/performance-preferences-explained",target:"_blank",style:{textDecoration:"none"}},React.createElement(wt,{icon:"editor-help"}))),className:"presto-setting__preload",value:i,onChange:function(e){return r({preload:e})},help:(!!(null!=n&&n.src&&Object(Je.d)(null==n?void 0:n.src)&&["metadata","none"].includes(i))||"none"===i&&!s)&&yt("A poster image is recommended for this setting.","presto-player"),options:[{value:"auto",label:yt("Video Playback Speed","presto-player")},{value:"metadata",label:yt("Page Load Speed","presto-player")},{value:"none",label:yt("Page Load Speed (Extreme)","presto-player")}]})),React.createElement(Pt,null,React.createElement(Ot,{className:"editor-video-poster-control"},React.createElement(Ot.VisualLabel,null,React.createElement("p",null,yt("Poster image","presto-player"))),React.createElement(kt,{title:yt("Select poster image","presto-player"),onSelect:function(e){r({poster:e.url})},allowedTypes:Ct,render:function(e){var t=e.open;return React.createElement(gt,{className:"presto-setting__poster",isPrimary:!0,onClick:t,"aria-describedby":d},yt(s?"Replace":"Select","presto-player"))}}),React.createElement("p",{id:d,hidden:!0},s?sprintf(yt("The current poster image url is %s","presto-player"),s):yt("There is no poster image currently selected","presto-player")),!!s&&React.createElement(gt,{onClick:function(){r({poster:""})},className:"presto-setting__remove-poster",isTertiary:!0},yt("Remove","presto-player")))))},Nt=wp.components.PanelBody,Tt=wp.i18n.__;t.a=function(e){var t,r,n,c,i=e.attributes,s=e.setAttributes;return React.createElement(React.Fragment,null,React.createElement(Nt,{title:React.createElement(React.Fragment,null,Tt("Chapters","presto-player")," ",!(null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium)&&React.createElement(l.a,null)),initialOpen:null===(r=prestoPlayer)||void 0===r?void 0:r.isPremium},React.createElement(o.a,{setAttributes:s,attributes:i})),React.createElement(Nt,{title:React.createElement(React.Fragment,null,Tt("Overlays","presto-player")," ",!(null!==(n=prestoPlayer)&&void 0!==n&&n.isPremium)&&React.createElement(l.a,null)),initialOpen:null===(c=prestoPlayer)||void 0===c?void 0:c.isPremium},React.createElement(h,{setAttributes:s,attributes:i})),React.createElement(Nt,{title:Tt("Video settings","presto-player")},React.createElement(St,{setAttributes:s,attributes:i})),React.createElement(Nt,{title:Tt("Video Preset","presto-player")},React.createElement($e,{setAttributes:s,attributes:i})),React.createElement(Nt,{title:Tt("Global Player Branding","presto-player"),initialOpen:!1},React.createElement(a.a,{setAttributes:s,attributes:i})))}},function(e,t,r){"use strict";r.d(t,"a",(function(){return j})),r.d(t,"b",(function(){return w})),r.d(t,"c",(function(){return _}));var n=r(46),a=r(47),o=r(48),l=r(53),c=r(44),i=r(10),s=r.n(i),p=function(e){return e.replace(/([A-Z])/g,(function(e){return"-".concat(e[0].toLowerCase())}))},u=r(20),d=function(e,t,r){var n=t.className||t.class,a=r.className||r.class,o=y(e),l=y(n?n.split(" "):[]),c=y(a?a.split(" "):[]),i=[];return o.forEach((function(e){l.has(e)?(i.push(e),l.delete(e)):c.has(e)||i.push(e)})),l.forEach((function(e){return i.push(e)})),i.join(" ")},b=function(e){if("undefined"==typeof document)return!0;var t="on"+e,r=t in document;if(!r){var n=document.createElement("div");n.setAttribute(t,"return;"),r="function"==typeof n[t]}return r},m=function(e,t,r){var n=e.__events||(e.__events={}),a=n[t];a&&e.removeEventListener(t,a),e.addEventListener(t,n[t]=function(e){r&&r.call(this,e)})},y=function(e){var t=new Map;return e.forEach((function(e){return t.set(e,e)})),t},v=function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)},f=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){t.forEach((function(t){v(t,e)}))}};function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=Object(c.a)(e);if(t){var a=Object(c.a)(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return Object(l.a)(this,r)}}var O=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r},g=function(e,t,r,l){void 0!==l&&l();var c=e.toLowerCase().split("-").map((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})).join(""),i=function(t){Object(o.a)(i,t);var l=h(i);function i(e){var t;return Object(n.a)(this,i),(t=l.call(this,e)).setComponentElRef=function(e){t.componentEl=e},t}return Object(a.a)(i,[{key:"componentDidMount",value:function(){this.componentDidUpdate(this.props)}},{key:"componentDidUpdate",value:function(e){!function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e instanceof Element){var n=d(e.classList,t,r);""!==n&&(e.className=n),Object.keys(t).forEach((function(r){if("children"!==r&&"style"!==r&&"ref"!==r&&"class"!==r&&"className"!==r&&"forwardedRef"!==r)if(0===r.indexOf("on")&&r[2]===r[2].toUpperCase()){var n=r.substring(2),a=n[0].toLowerCase()+n.substring(1);b(a)||m(e,a,t[r])}else{e[r]=t[r],"string"===Object(u.a)(t[r])&&e.setAttribute(p(r),t[r])}}))}}(this.componentEl,this.props,e)}},{key:"render",value:function(){var t=this.props,n=t.children,a=t.forwardedRef,o=t.style,l=(t.className,t.ref,O(t,["children","forwardedRef","style","className","ref"])),c=Object.keys(l).reduce((function(e,t){if(0===t.indexOf("on")&&t[2]===t[2].toUpperCase()){var r=t.substring(2).toLowerCase();"undefined"!=typeof document&&b(r)&&(e[t]=l[t])}else e[t]=l[t];return e}),{});r&&(c=r(this.props,c));var i=Object.assign(Object.assign({},c),{ref:f(a,this.setComponentElRef),style:o});return s.a.createElement(e,i,n)}}],[{key:"displayName",get:function(){return c}}]),i}(s.a.Component);return t&&(i.contextType=t),function(e,t){var r=function(t,r){return s.a.createElement(e,Object.assign({},t,{forwardedRef:r}))};return r.displayName=t,s.a.forwardRef(r)}(i,c)},j=g("presto-cta-overlay-ui"),w=g("presto-email-overlay-ui"),_=g("presto-player")},function(e,t){e.exports=window.wp.blockEditor},function(e,t,r){"use strict";var n,a,o,l,c,i,s=r(6),p=r(5),u=r(1),d=r(0);function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){Object(p.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var y=wp.i18n.__,v=wp.components,f=v.Button,h=v.Popover,O=v.Icon,g=wp.blockEditor.__experimentalLinkControl,j=wp.element.useState,w=wp.url.prependHTTP;t.a=function(e){var t=e.setSettings,r=e.settings,p=j(!1),b=Object(u.a)(p,2),v=b[0],_=b[1],E=r.url,R=j(),k=Object(u.a)(R,2),P=k[0],C=k[1],x=m({url:null==r?void 0:r.url,type:null==r?void 0:r.type,id:null==r?void 0:r.id,opensInNewTab:null==r?void 0:r.opensInNewTab},P),S=function(e){e=m(m({},P),e);var r=x.opensInNewTab!==e.opensInNewTab&&x.url===e.url&&void 0===e.url;if(C(r?e:void 0),!r){var n=w(e.url);t({url:n,type:e.type,id:void 0!==e.id&&null!==e.id?String(e.id):void 0,opensInNewTab:e.opensInNewTab})}};return Object(d.b)("span",null,E?Object(d.b)("div",{css:Object(d.a)(n||(n=Object(s.a)(["\n display: flex;\n justify-content: space-between;\n "])))},Object(d.b)("div",{css:Object(d.a)(a||(a=Object(s.a)(["\n max-width: 85%;\n overflow: hidden;\n display: flex;\n align-items: center;\n "])))},Object(d.b)("a",{href:"#",css:Object(d.a)(o||(o=Object(s.a)(["\n padding: 10px;\n background: #f3f3f3;\n border-radius: 4px;\n width: 100%;\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-decoration: none;\n "]))),onClick:function(){return _(!v)}},Object(d.b)(O,{icon:"edit",css:Object(d.a)(l||(l=Object(s.a)(["\n cursor: pointer;\n opacity: 0.75;\n margin: 0 2px;\n font-size: 16px;\n width: 16px;\n height: 16px;\n text-decoration: none;\n "])))}),E),v&&Object(d.b)(h,{position:"bottom center",onClose:function(){return _(!1)}},Object(d.b)(g,{value:r,onChange:S}))),Object(d.b)("div",{css:Object(d.a)(c||(c=Object(s.a)(["\n display: flex;\n align-items: center;\n "])))},Object(d.b)(O,{onClick:function(){confirm(y("Are you sure you wish to remove this link?","presto-player"))&&t({})},icon:"trash",className:"presto-icon",css:Object(d.a)(i||(i=Object(s.a)(["\n cursor: pointer;\n opacity: 0.75;\n margin: 0 2px;\n fontsize: 18px;\n width: 18px;\n height: 18px;\n\n &:hover {\n color: #cc1818;\n }\n "])))}))):Object(d.b)("span",null,Object(d.b)(f,{isPrimary:!0,isSmall:!0,onClick:function(){return _(!v)}},y("Add Link","presto-player")),v&&Object(d.b)(h,{position:"bottom center",onClose:function(){return _(!1)}},Object(d.b)(g,{value:r,onChange:S}))))}},,,,function(e,t,r){"use strict";var n=r(7),a=r(1),o=r(2),l=r.n(o),c=r(11),i=wp.i18n.__,s=wp.components,p=s.ColorPicker,u=s.Button,d=s.withNotices,b=s.BaseControl,m=s.RangeControl,y=wp.blockEditor,v=y.MediaUpload,f=y.MediaUploadCheck,h=wp.compose.useInstanceId,O=wp.element.useState,g=wp.data,j=g.dispatch,w=g.useSelect,_=["image"];t.a=d((function e(t){t.setAttributes,t.attributes;var r,o=t.type,s=h(e),d=O(1),y=Object(a.a)(d,2),g=y[0],E=y[1],R=w((function(e){return e("presto-player/player").branding()})),k=function(){var e=Object(n.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,j("presto-player/player").saveOptions({branding:R});case 2:wp.data.dispatch("core/notices").createNotice("success","Player branding saved.",{type:"snackbar",isDismissible:!0});case 3:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return React.createElement("div",{className:"presto-player__panel--branding"},"audio"!==o&&React.createElement("p",null,i("Here you can select the global player branding This will apply to all players on the site.","presto-player")),React.createElement(f,null,React.createElement(b,{className:"editor-video-poster-control"},"audio"!==o&&React.createElement(React.Fragment,null,React.createElement(b.VisualLabel,null,React.createElement("p",null,i("Logo Overlay","presto-player")," ",!(null!==(r=prestoPlayer)&&void 0!==r&&r.isPremium)&&React.createElement(c.a,null))),React.createElement(v,{title:i("Select logo overlay image","presto-player"),onSelect:function(e){j("presto-player/player").updateBranding("logo",e.url)},allowedTypes:_,render:function(e){var t=e.open;return React.createElement(u,{className:"presto-setting__logo",isSecondary:!0,onClick:function(){var e;null!==(e=prestoPlayer)&&void 0!==e&&e.isPremium?t():j("presto-player/player").setProModal(!0)},"aria-describedby":"video-block__logo-image-description-".concat(s)},null!=R&&R.logo?i("Replace","presto-player"):i("Select","presto-player"))}})),React.createElement("p",{id:"video-block__logo-image-description-".concat(s),hidden:!0},null!=R&&R.logo?sprintf(i("The current logo image url is %s","presto-player"),null==R?void 0:R.logo):i("There is no logo image currently selected","presto-player")),!(null==R||!R.logo)&&React.createElement(u,{onClick:function(){j("presto-player/player").updateBranding("logo","")},isTertiary:!0},i("Remove","presto-player")))),!(null==R||!R.logo)&&React.createElement(m,{label:i("Logo Max Width","presto-player"),value:(null==R?void 0:R.logo_width)||150,onChange:function(e){return j("presto-player/player").updateBranding("logo_width",e)},min:1,max:400}),React.createElement(p,{color:null==R?void 0:R.color,onChangeComplete:function(e){j("presto-player/player").updateBranding("color",e.hex)},key:g,disableAlpha:!0}),(null==R?void 0:R.color)&&React.createElement(b,null,React.createElement(u,{isSecondary:!0,onClick:function(){var e,t;j("presto-player/player").updateBranding("color",(null===(e=prestoPlayer)||void 0===e||null===(t=e.defaults)||void 0===t?void 0:t.color)||"#00b3ff"),E(g+1)}},i("Reset Color","presto-player"))),React.createElement(u,{isPrimary:!0,onClick:k},i("Save Branding","presto-player")))}))},function(e,t){e.exports=window.wp.compose},function(e,t,r){"use strict";var n=r(5),a=r(1),o=r(19),l=r.n(o),c=wp.i18n.__,i=wp.element,s=i.useState,p=i.useEffect,u=lodash,d=u.partial,b=u.noop,m=u.find,y=wp.components,v=y.NavigableMenu,f=y.Animate;t.a=function(e){var t,r=e.className,o=e.children,i=e.items,u=e.title,y=e.orientation,h=void 0===y?"horizontal":y,O=e.activeClass,g=void 0===O?"is-active":O,j=e.onSelect,w=void 0===j?b:j,_=s(null),E=Object(a.a)(_,2),R=E[0],k=E[1],P=s("left"),C=Object(a.a)(P,2),x=(C[0],C[1]),S=function(e){k(e),w&&w(e)},N=function(e,t){t.click()},T=m(i,{name:R}),D="".concat(null!==(t=null==T?void 0:T.name)&&void 0!==t?t:"none");return p((function(){x(R?"right":"left")}),[R]),React.createElement("div",{className:r},React.createElement(f,{type:"slide-in",origin:T?"right":"left"},(function(e){var t=e.className;return T?React.createElement("div",{key:D,"aria-labelledby":D,role:"itempanel",id:"".concat(D,"-view"),className:l()(t,"presto-player__menu-content")},React.createElement("div",{className:"presto-player__menu-items"},React.createElement("div",{className:"presto-player__menu-item is-back-button",onClick:function(){return S("")}},React.createElement("svg",{class:"back-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24",role:"img","aria-hidden":"true",focusable:"false"},React.createElement("path",{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})),c("Back","presto-player"))),o(T)):React.createElement("div",{className:l()(t,"is-from-right")},!!u&&React.createElement("h2",null,u),React.createElement(v,{role:"itemlist",orientation:h,onNavigate:N,className:l()("presto-player__menu-items")},i.map((function(e){return React.createElement("div",{className:l()("presto-player__menu-item",e.className,Object(n.a)({},g,e.name===R)),itemId:"".concat(e.name),"aria-controls":"".concat(e.name,"-view"),selected:e.name===R,key:e.name,onClick:d(S,e.name)},!!e.icon&&React.createElement("div",{class:"presto-player__menu-icon"},e.icon),e.title,React.createElement("svg",{className:"submenu-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24",role:"img",ariaHidden:"true",focusable:"false"},React.createElement("path",{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})))}))))})))}},,function(e,t,r){"use strict";var n,a,o=r(6),l=r(5),c=r(3),i=r(4),s=r(13),p=r(15),u=r(26),d=r(12),b=r(0);function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){Object(l.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function v(e){var t=e.state,r=e.updateState,m=e.className,v=t.cta,f=t.email_collection,h=Object(p.useSelect)((function(e){return e("presto-player/player").branding()})),O={percentage:100,show_rewatch:!0,show_skip:!0,headline:Object(c.__)("Want to learn more?","presto-player"),show_button:!0,button_text:Object(c.__)("Click Here","presto-player"),button_link:{opensInNewTab:!0}};Object(s.useEffect)((function(){Object.keys(O).forEach((function(e){var r;void 0===(null==t||null===(r=t.cta)||void 0===r?void 0:r[e])&&g(Object(l.a)({},e,O[e]))}))}),[t]);var g=function(e){r(y(y({},t),{},{cta:y(y({},v),e)}))};return Object(b.b)("div",{className:m},Object(b.b)(i.BaseControl,null,Object(b.b)("h3",null,Object(c.__)("Call To Action","presto-player"))),Object(b.b)(i.BaseControl,{className:"presto-player__control--large-play"},Object(b.b)(i.ToggleControl,{label:Object(c.__)("Enable","presto-player"),help:Object(c.__)("Show an email collection form and message over your player.","presto-player"),onChange:function(e){g({enabled:e})},checked:null==v?void 0:v.enabled})),!(null==v||!v.enabled)&&Object(b.b)(React.Fragment,null,Object(b.b)(i.BaseControl,{className:"presto-player__control--percentage-watched"},Object(b.b)(i.RangeControl,{label:Object(c.__)("Display At (Percentage)","presto-player"),labelPosition:"top",onChange:function(e){g({percentage:e})},marks:[{value:0,label:Object(c.__)("Start","presto-player")},{value:50,label:Object(c.__)("50% Watched","presto-player")},{value:100,label:Object(c.__)("End","presto-player")}],shiftStep:5,value:null==v?void 0:v.percentage})),(null==f?void 0:f.enabled)&&(null==f?void 0:f.percentage)===(null==v?void 0:v.percentage)&&Object(b.b)(i.Notice,{css:Object(b.a)(n||(n=Object(o.a)(["\n margin: 0 0 30px 0 !important;\n "]))),status:"warning",isDismissible:!1},Object(c.__)("You already have an email capture set display at the same time.","presto-player"),Object(b.b)(i.Button,{onClick:function(){r(y(y({},t),{},{email_collection:y(y({},f),{enabled:!1})}))},isLink:!0,css:Object(b.a)(a||(a=Object(o.a)(["\n margin-top: 10px !important;\n "])))},Object(c.__)("Disable Email Capture","presto-player"))),100===(null==v?void 0:v.percentage)?Object(b.b)(i.BaseControl,{className:"presto-player__control--show-rewatch"},Object(b.b)(i.ToggleControl,{label:Object(c.__)("Show Rewatch Button","presto-player"),help:Object(c.__)("Show a rewatch button at the end of the player.","presto-player"),onChange:function(e){g({show_rewatch:e})},checked:null==v?void 0:v.show_rewatch})):Object(b.b)(i.BaseControl,{className:"presto-player__control--show-skip"},Object(b.b)(i.ToggleControl,{label:Object(c.__)("Allow Skipping","presto-player"),help:Object(c.__)("Let the user continue watching the player.","presto-player"),onChange:function(e){g({show_skip:e})},checked:null==v?void 0:v.show_skip})),Object(b.b)(i.BaseControl,{className:"presto-player__control--button-link"},Object(b.b)(i.BaseControl.VisualLabel,null,Object(b.b)("p",null," ",Object(c.__)("Link","presto-player"))),Object(b.b)(u.a,{setSettings:function(e){g({button_link:e})},settings:(null==v?void 0:v.button_link)||{}})),Object(b.b)(i.BaseControl,{className:"presto-player__control--headline"},Object(b.b)(i.TextareaControl,{label:Object(c.__)("Headline","presto-player"),help:Object(c.__)("The headline for your form.","presto-player"),value:null==v?void 0:v.headline,onChange:function(e){g({headline:e})}})),Object(b.b)(i.BaseControl,{className:"presto-player__control--bottom-text"},Object(b.b)(i.TextareaControl,{label:Object(c.__)("Bottom Text","presto-player"),help:Object(c.__)("Text displayed below the form. HTML allowed.","presto-player"),value:null==v?void 0:v.bottom_text,onChange:function(e){g({bottom_text:e})}})),Object(b.b)(i.BaseControl,{className:"presto-player__control--show-button"},Object(b.b)(i.ToggleControl,{label:Object(c.__)("Show Button","presto-player"),help:Object(c.__)("Show a call to action button.","presto-player"),onChange:function(e){g({show_button:e})},checked:null==v?void 0:v.show_button})),!(null==v||!v.show_button)&&Object(b.b)("div",null,Object(b.b)(i.BaseControl,{className:"presto-player__control--button-text"},Object(b.b)(i.TextControl,{label:Object(c.__)("Button Text","presto-player"),help:Object(b.b)("p",null,Object(c.__)("Button text for the Call To Action","presto-player")),value:null==v?void 0:v.button_text,onChange:function(e){return g({button_text:e})}})),Object(b.b)("h3",null,Object(c.__)("Style","presto-player")),Object(b.b)(i.BaseControl,null,Object(b.b)(i.RangeControl,{label:Object(c.__)("Round Corners","presto-player"),help:Object(c.__)("Border radius of form elements.","presto-player"),value:(null==v?void 0:v.button_radius)||0,onChange:function(e){return g({button_radius:e})},min:0,max:25})),Object(b.b)(i.BaseControl,{className:"presto-player__control--button-color"},Object(b.b)(i.Flex,null,Object(b.b)(i.BaseControl.VisualLabel,null,Object(c.__)("Button Color","presto-player")),Object(b.b)(d.a,{color:(null==v?void 0:v.button_color)||(null==h?void 0:h.color),setColor:function(e){return g({button_color:e&&e.hex})}}))),Object(b.b)(i.BaseControl,{className:"presto-player__control--button-text-color"},Object(b.b)(i.Flex,null,Object(b.b)(i.BaseControl.VisualLabel,null,Object(c.__)("Button Text Color","presto-player")),Object(b.b)(d.a,{color:(null==v?void 0:v.button_text_color)||"#ffffff",setColor:function(e){return g({button_text_color:e&&e.hex})}})))),Object(b.b)(i.BaseControl,null,Object(b.b)(i.RangeControl,{label:Object(c.__)("Background Opacity","presto-player"),help:Object(c.__)("Opacity percentage of the cover background.","presto-player"),value:(null==v?void 0:v.background_opacity)||75,onChange:function(e){return g({background_opacity:e})},min:0,max:100}))))}v.defaultProps={catName:"Sandy",eyeColor:"deepblue",age:"120"},t.a=v},function(e,t,r){"use strict";var n=wp.apiFetch;n.use(n.createNonceMiddleware(prestoPlayer.nonce)),n.use(n.createRootURLMiddleware(prestoPlayer.root+prestoPlayer.prestoVersionString)),t.a=n},function(e,t,r){"use strict";r.d(t,"a",(function(){return N}));var n=r(8),a=r(49),o=r(1),l=r(5);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){Object(l.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var s=wp.i18n,p=s.__,u=s.sprintf,d=wp.components,b=d.NavigableMenu,m=d.MenuItem,y=d.FormFileUpload,v=d.MenuGroup,f=d.ToolbarGroup,h=d.ToolbarButton,O=d.Dropdown,g=(d.SVG,d.Rect,d.Path,d.Button),j=d.TextControl,w=(d.SelectControl,wp.blockEditor),_=w.MediaUpload,E=w.MediaUploadCheck,R=wp.data.useSelect,k=wp.element.useState,P=["text/vtt"],C=React.createElement("svg",{viewBox:"0 0 29 25",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.5014 20.2854H28.6316V0.764648H0.110825V20.2854H11.241L14.3712 24.2854L17.5014 20.2854ZM14.3712 21.0401L16.5269 18.2854H26.6316V2.76465H2.11082V18.2854H12.2155L14.3712 21.0401Z"}),React.createElement("path",{d:"M10.4503 14.9446C9.56226 14.9446 8.76226 14.7606 8.05026 14.3926C7.33826 14.0166 6.77826 13.4966 6.37026 12.8326C5.97026 12.1606 5.77026 11.4006 5.77026 10.5526C5.77026 9.70464 5.97026 8.94864 6.37026 8.28464C6.77826 7.61264 7.33826 7.09264 8.05026 6.72464C8.76226 6.34864 9.56226 6.16064 10.4503 6.16064C11.2663 6.16064 11.9943 6.30464 12.6343 6.59264C13.2743 6.88064 13.8023 7.29664 14.2183 7.84064L12.4303 9.43664C11.9103 8.78064 11.2983 8.45264 10.5943 8.45264C10.0023 8.45264 9.52626 8.64464 9.16626 9.02864C8.80626 9.40464 8.62626 9.91264 8.62626 10.5526C8.62626 11.1926 8.80626 11.7046 9.16626 12.0886C9.52626 12.4646 10.0023 12.6526 10.5943 12.6526C11.2983 12.6526 11.9103 12.3246 12.4303 11.6686L14.2183 13.2646C13.8023 13.8086 13.2743 14.2246 12.6343 14.5126C11.9943 14.8006 11.2663 14.9446 10.4503 14.9446Z"}),React.createElement("path",{d:"M19.2042 14.9446C18.3162 14.9446 17.5162 14.7606 16.8042 14.3926C16.0922 14.0166 15.5322 13.4966 15.1242 12.8326C14.7242 12.1606 14.5242 11.4006 14.5242 10.5526C14.5242 9.70464 14.7242 8.94864 15.1242 8.28464C15.5322 7.61264 16.0922 7.09264 16.8042 6.72464C17.5162 6.34864 18.3162 6.16064 19.2042 6.16064C20.0202 6.16064 20.7482 6.30464 21.3882 6.59264C22.0282 6.88064 22.5562 7.29664 22.9722 7.84064L21.1842 9.43664C20.6642 8.78064 20.0522 8.45264 19.3482 8.45264C18.7562 8.45264 18.2802 8.64464 17.9202 9.02864C17.5602 9.40464 17.3802 9.91264 17.3802 10.5526C17.3802 11.1926 17.5602 11.7046 17.9202 12.0886C18.2802 12.4646 18.7562 12.6526 19.3482 12.6526C20.0522 12.6526 20.6642 12.3246 21.1842 11.6686L22.9722 13.2646C22.5562 13.8086 22.0282 14.2246 21.3882 14.5126C20.7482 14.8006 20.0202 14.9446 19.2042 14.9446Z"}));function x(e){var t,r=e.tracks,n=e.onEditPress;return t=0===r.length?React.createElement("p",{className:"block-library-video-tracks-editor__tracks-informative-message"},p("Captions are .vtt files that help make your content more accesible to a wider range of users.","presto-player")):r.map((function(e,t){return React.createElement("div",{key:t,className:"block-library-video-tracks-editor__track-list-track"},React.createElement("span",null,e.label," "),React.createElement(g,{isTertiary:!0,onClick:function(){return n(t)},"aria-label":u(p("Edit %s","presto-player"),e.label)},p("Edit","presto-player")))})),React.createElement(v,{label:p("Captions","presto-player"),className:"block-library-video-tracks-editor__track-list"},t)}function S(e){var t=e.track,r=e.onChange,n=e.onClose,a=e.onRemove,o=t.src,l=void 0===o?"":o,c=t.label,s=void 0===c?"":c,u=t.srcLang,d=void 0===u?"":u,m=(t.kind,l.startsWith("blob:")?"":l.substring(l.lastIndexOf("/")+1));return React.createElement(b,null,React.createElement("div",{className:"block-library-video-tracks-editor__single-track-editor"},React.createElement("span",{className:"block-library-video-tracks-editor__single-track-editor-edit-track-label"},p("Edit caption track","presto-player")),React.createElement("span",null,p("File","presto-player"),": ",React.createElement("b",null,m)),React.createElement("div",{className:"block-library-video-tracks-editor__single-track-editor-label-language"},React.createElement(j,{autoFocus:!0,onChange:function(e){return r(i(i({},t),{},{label:e}))},label:p("Label","presto-player"),value:s,help:p("Title of track","presto-player")}),React.createElement(j,{onChange:function(e){return r(i(i({},t),{},{srcLang:e}))},label:p("Source language","presto-player"),value:d,help:p("Language tag (en, fr, etc.)","presto-player")})),React.createElement("div",{className:"block-library-video-tracks-editor__single-track-editor-buttons-container"},React.createElement(g,{isSecondary:!0,onClick:function(){var e={},a=!1;""===s&&(e.label=p("English","presto-player"),a=!0),""===d&&(e.srcLang="en",a=!0),a&&r(i(i({},t),e)),n()}},p("Close","presto-player")),React.createElement(g,{isDestructive:!0,isLink:!0,onClick:a},p("Remove track","presto-player")))))}function N(e){var t=e.tracks,r=void 0===t?[]:t,l=e.onChange,c=R((function(e){return e("core/block-editor").getSettings().mediaUpload}),[]),s=k(null),u=Object(o.a)(s,2),d=u[0],g=u[1];return c?React.createElement(O,{contentClassName:"block-library-video-tracks-editor",renderToggle:function(e){var t=e.isOpen,r=e.onToggle;return React.createElement(f,null,React.createElement(h,{label:p("Captions","presto-player"),showTooltip:!0,"aria-expanded":t,"aria-haspopup":"true",onClick:r,icon:C}))},renderContent:function(e){return Object(a.a)(e),null!==d?React.createElement(S,{track:r[d],onChange:function(e){var t=Object(n.a)(r);t[d]=e,l(t)},onClose:function(){return g(null)},onRemove:function(){l(r.filter((function(e,t){return t!==d}))),g(null)}}):React.createElement(React.Fragment,null,React.createElement(b,null,React.createElement(x,{tracks:r,onEditPress:g}),React.createElement(v,{className:"block-library-video-tracks-editor__add-tracks-container",label:p("Add caption languages","presto-player")},React.createElement(_,{onSelect:function(e){var t=e.url,a=r.length;l([].concat(Object(n.a)(r),[{src:t}])),g(a)},allowedTypes:P,render:function(e){var t=e.open;return React.createElement(m,{icon:"media",onClick:t},p("Open Media Library","presto-player"))}}),React.createElement(E,null,React.createElement(y,{onChange:function(e){var t=e.target.files,a=r.length;c({allowedTypes:P,filesList:t,onFileChange:function(e){var t=Object(o.a)(e,1)[0].url,c=Object(n.a)(r);c[a]||(c[a]={}),c[a]=i(i({},r[a]),{},{src:t}),l(c),g(a)}})},accept:".vtt,text/vtt",render:function(e){var t=e.openFileDialog;return React.createElement(m,{icon:"upload",onClick:function(){t()}},p("Upload","presto-player"))}})))))}}):null}},function(e,t,r){"use strict";var n=r(5),a=r(1),o=r(24),l=r(9),c=r(14);function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){Object(n.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var p=wp.i18n.__,u=wp.components.Disabled,d=wp.element,b=d.useState,m=d.useEffect;t.a=function(e){var t,r,n,i=e.state,d=e.branding,y=e.menu,v=e.src,f=e.poster,h=e.currentTime,O=e.preload,g=e.overlays,j=e.isDisabled,w=void 0===j||j,_=b(1),E=Object(a.a)(_,2),R=E[0],k=E[1],P=i.email_collection,C=i.cta;m((function(){k(R+1)}),[i.skin,i["play-large"],i.rewind,i.play,i["fast-forward"],i.progress,i["current-time"],i.mute,i.volume,i.speed,i.pip,i.fullscreen,i.captions,i.hide_logo]);var x={email:!(null==P||!P.enabled)&&React.createElement(o.b,{className:"email-overlay",slot:"player-end",headline:null==P?void 0:P.headline,style:s(s({"--presto-player-email-border-radiuss":"".concat(null==P?void 0:P.button_radius,"px"),"--plyr-color-main":(null==i?void 0:i.background_color)||(null==d?void 0:d.color)},P.button_color?{"--presto-player-button-color":"".concat(P.button_color)}:{}),P.button_text_color?{"--presto-player-button-text":"".concat(P.button_text_color)}:{}),defaultHeadline:p("Enter your email to play.","presto-player"),bottomText:null==P?void 0:P.bottom_text,allowSkip:null==P?void 0:P.allow_skip,skipText:p("Skip","presto-player"),buttonText:null==P?void 0:P.button_text,placeholder:p("Email address","presto-player"),i18n:window.prestoPlayer.i18n}),cta:!(null==C||!C.enabled)&&React.createElement(o.a,{className:"cta-overlay",style:s(s(s({"--presto-player-button-border-radius":"".concat(C.button_radius,"px")},null!=C&&C.background_opacity?{"--presto-player-cta-background-opacity":"".concat((null==C?void 0:C.background_opacity)/100)}:{}),C.button_color?{"--presto-player-button-color":"".concat(C.button_color)}:{}),C.button_text_color?{"--presto-player-button-text":"".concat(C.button_text_color)}:{}),slot:"player-end",headline:null==C?void 0:C.headline,"bottom-text":null==C?void 0:C.bottom_text,"button-link":null==C?void 0:C.button_link,"allow-skip":100!==(null==C?void 0:C.percentage)&&(null==C?void 0:C.show_skip),borderRadius:null==C?void 0:C.border_radius,"allow-rewatch":100===(null==C?void 0:C.percentage)&&(null==C?void 0:C.show_rewatch),"skip-text":p("Skip","presto-player"),"show-button":null==C?void 0:C.show_button,"button-text":null==C?void 0:C.button_text,i18n:null===(t=window)||void 0===t||null===(r=t.prestoPlayer)||void 0===r?void 0:r.i18n})};return React.createElement(u,{isDisabled:w,className:"disable-player"},React.createElement("div",{className:"presto-player__wrapper"},React.createElement(c.a,{src:v||"",className:"\n ".concat("cta"===y&&!(null==C||!C.enabled)&&"cta-active"," \n ").concat("email"===y&&!(null==P||!P.enabled)&&"email-active"),preset:i,branding:s(s({},d),{},{logo:null!=i&&i.hide_logo?"":d.logo}),i18n:null===(n=prestoPlayerAdmin)||void 0===n?void 0:n.i18n,preload:O,attributes:{chapters:[],poster:f},currentTime:h?Object(l.e)(h):"",overlays:g,key:R,adminPreview:(null==x?void 0:x[y])||""})))}},function(e,t,r){"use strict";var n=r(1),a=wp.i18n.__,o=wp.components.TextareaControl,l=wp.element.useState;t.a=function(e){var t=e.text,r=e.update,c=e.onFocus,i=l(!1),s=Object(n.a)(i,2),p=s[0],u=s[1];return React.createElement("div",{style:{display:"block",width:"100%"}},React.createElement(o,{label:"Text",help:React.createElement("span",null,a("This field accepts","presto-player")," ",React.createElement("a",{href:"#",onClick:function(e){u(!p),e.preventDefault()}},a("Dynamic Data","presto-player")),!!p&&React.createElement("div",{style:{marginTop:"20px"}},a("This field will also accept dynamic values that we will replace with dynamic content: {user.user_login}, {user.user_nicename}, {user.user_email}, {user.user_url},{user.user_registered}, {user.display_name}, {site.url}, {site.name}, {ip_address}","presto-player"))),className:"presto-player__overlay--text",placeholder:a("Enter some text.","presto-player"),value:t||"",onChange:function(e){return r({text:e})},autoComplete:"off",onFocus:c}))}},function(e,t,r){"use strict";var n=r(1),a=wp.components,o=a.Button,l=a.Placeholder,c=a.TextControl,i=a.Flex,s=a.FlexItem,p=a.FlexBlock,u=wp.element.useState,d=wp.i18n.__;t.a=function(e){var t=e.attributes,r=(e.setAttributes,e.icon),a=e.onSelectURL,b=e.label,m=e.instructions,y=e.placeholder,v=t.src,f=u({src:v}),h=Object(n.a)(f,2),O=h[0],g=h[1];return React.createElement(l,{icon:r,label:b||d("Presto Embedded Video","presto-player"),instructions:m||d("Enter video URL","presto-player")},React.createElement("form",{onSubmit:function(e){e.preventDefault(),a(O.url)}},React.createElement(i,{style:{width:"100%",maxWidth:"400px"}},React.createElement(p,null,React.createElement(c,{type:"url",className:"presto-link-placeholder-input",placeholder:y||d("Youtube URL","presto-player"),value:O.url,onChange:function(e){return g({url:e})}})),React.createElement(s,null,React.createElement(o,{isPrimary:!0,style:{marginBottom:"8px"},type:"submit"},d("Add Video","presto-player"))))))}},function(e,t,r){"use strict";var n,a,o=r(6),l=r(5),c=r(3),i=r(4),s=r(15),p=r(8),u=r(7),d=r(1),b=r(2),m=r.n(b),y=function(){return React.createElement("div",null,React.createElement("presto-player-skeleton",{style:{width:"30%",marginBottom:"10px"}}),React.createElement("presto-player-skeleton",{style:{height:"2rem",marginBottom:"20px"}}))},v=wp.i18n.__,f=wp.components,h=f.SelectControl,O=f.TextControl,g=f.Notice,j=wp.element,w=j.useEffect,_=j.useState,E=function(e){var t=e.options,r=e.updateEmailState,n=_(!1),a=Object(d.a)(n,2),o=a[0],l=a[1],c=_([{value:null,label:v("Choose an audience","presto-player")}]),i=Object(d.a)(c,2),s=i[0],b=i[1],f=_(""),j=Object(d.a)(f,2),E=j[0],R=j[1],k=function(){var e=Object(u.a)(m.a.mark((function e(){var t,r;return m.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/mailchimp/lists"});case 4:t=e.sent,r=s,(t||[]).forEach((function(e){r=[].concat(Object(p.a)(r),[{value:e.id,label:e.name}])})),b(r),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),null!==e.t0&&void 0!==e.t0&&e.t0.message&&R(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,10,13,16]])})));return function(){return e.apply(this,arguments)}}();return w((function(){k()}),[]),o?React.createElement("div",null,React.createElement(y,null),React.createElement(y,null)):E?React.createElement(g,{className:"presto-notice",status:"error",isDismissible:!1},E):React.createElement("div",null,React.createElement(h,{label:v("Choose an audience","presto-player"),value:null==t?void 0:t.provider_list,options:s,onChange:function(e){return r({provider_list:e})}}),React.createElement(O,{label:v("Tag","presto-player"),help:React.createElement("p",null,v("Give this contact an optional tag when they are added to the list.","presto-player")),value:null==t?void 0:t.provider_tag,onChange:function(e){return r({provider_tag:e})}}))},R=wp.i18n.__,k=wp.components,P=k.SelectControl,C=k.Notice,x=wp.element,S=x.useEffect,N=x.useState,T=function(e){var t=e.options,r=e.updateEmailState,n=N(!1),a=Object(d.a)(n,2),o=a[0],l=a[1],c=N([{value:null,label:R("Choose a group","presto-player")}]),i=Object(d.a)(c,2),s=i[0],b=i[1],v=N(""),f=Object(d.a)(v,2),h=f[0],O=f[1],g=function(){var e=Object(u.a)(m.a.mark((function e(){var t,r;return m.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/mailerlite/groups"});case 4:t=e.sent,r=s,(t||[]).forEach((function(e){r=[].concat(Object(p.a)(r),[{value:e.id,label:e.name}])})),b(r),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),null!==e.t0&&void 0!==e.t0&&e.t0.message&&O(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,10,13,16]])})));return function(){return e.apply(this,arguments)}}();return S((function(){g()}),[]),o?React.createElement(y,null):h?React.createElement(C,{className:"presto-notice",status:"error",isDismissible:!1},h):React.createElement("div",null,React.createElement(P,{label:R("Choose a group","presto-player"),value:null==t?void 0:t.provider_list,options:s,onChange:function(e){return r({provider_list:e})}}))},D=wp.i18n.__,B=wp.components,A=B.SelectControl,L=B.Notice,I=wp.element,F=I.useEffect,V=I.useState,U=function(e){var t=e.options,r=e.updateEmailState,n=V(!1),a=Object(d.a)(n,2),o=a[0],l=a[1],c=V(!1),i=Object(d.a)(c,2),s=i[0],b=i[1],v=V([{value:null,label:D("Choose a list","presto-player")}]),f=Object(d.a)(v,2),h=f[0],O=f[1],g=V([{value:null,label:D("Choose a tag","presto-player")}]),j=Object(d.a)(g,2),w=j[0],_=j[1],E=V(""),R=Object(d.a)(E,2),k=R[0],P=R[1],C=function(){var e=Object(u.a)(m.a.mark((function e(){var t,r;return m.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/activecampaign/lists"});case 4:t=e.sent,r=h,(t||[]).forEach((function(e){r=[].concat(Object(p.a)(r),[{value:e.id,label:e.name||D("Default list","presto-player")}])})),O(r),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),null!==e.t0&&void 0!==e.t0&&e.t0.message&&P(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,10,13,16]])})));return function(){return e.apply(this,arguments)}}(),x=function(){var e=Object(u.a)(m.a.mark((function e(){var t,r;return m.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return b(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/activecampaign/tags"});case 4:t=e.sent,r=w,(t||[]).forEach((function(e){r=[].concat(Object(p.a)(r),[{value:e.id,label:e.tag}])})),_(r),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),null!==e.t0&&void 0!==e.t0&&e.t0.message&&P(e.t0.message);case 13:return e.prev=13,b(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,10,13,16]])})));return function(){return e.apply(this,arguments)}}();return F((function(){C(),x()}),[]),k?React.createElement(L,{className:"presto-notice",status:"error",isDismissible:!1},k):React.createElement("div",null,o?React.createElement(y,null):h.length>1&&React.createElement(A,{label:D("Choose a list","presto-player"),value:null==t?void 0:t.provider_list,options:h,onChange:function(e){return r({provider_list:e})}}),s?React.createElement(y,null):w.length>1&&React.createElement(A,{label:D("Choose a tag","presto-player"),value:null==t?void 0:t.provider_tag,options:w,onChange:function(e){return r({provider_tag:e})}}))},M=wp.i18n.__,z=wp.components,W=z.SelectControl,H=z.Notice,Y=wp.element,G=Y.useEffect,q=Y.useState,Z=function(e){var t=e.options,r=e.updateEmailState,n=q(!1),a=Object(d.a)(n,2),o=a[0],l=a[1],c=q(!1),i=Object(d.a)(c,2),s=i[0],b=i[1],v=q([{value:null,label:M("Choose a list","presto-player")}]),f=Object(d.a)(v,2),h=f[0],O=f[1],g=q([{value:null,label:M("Choose a tag","presto-player")}]),j=Object(d.a)(g,2),w=j[0],_=j[1],E=q(""),R=Object(d.a)(E,2),k=R[0],P=R[1],C=function(){var e=Object(u.a)(m.a.mark((function e(){var t,r;return m.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/fluentcrm/lists"});case 4:t=e.sent,r=h,(t||[]).forEach((function(e){r=[].concat(Object(p.a)(r),[{value:e.id,label:e.title||e.slug}])})),O(r),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),null!==e.t0&&void 0!==e.t0&&e.t0.message&&P(e.t0.message);case 13:return e.prev=13,l(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,10,13,16]])})));return function(){return e.apply(this,arguments)}}(),x=function(){var e=Object(u.a)(m.a.mark((function e(){var t,r;return m.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return b(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/fluentcrm/tags"});case 4:t=e.sent,r=w,(t||[]).forEach((function(e){r=[].concat(Object(p.a)(r),[{value:e.id,label:e.title||e.slug}])})),_(r),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),null!==e.t0&&void 0!==e.t0&&e.t0.message&&P(e.t0.message);case 13:return e.prev=13,b(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,10,13,16]])})));return function(){return e.apply(this,arguments)}}();return G((function(){C(),x()}),[]),k?React.createElement(H,{className:"presto-notice",status:"error",isDismissible:!1},k):React.createElement("div",null,o?React.createElement(y,null):h.length>1&&React.createElement(W,{label:M("Choose a list","presto-player"),value:null==t?void 0:t.provider_list,options:h,onChange:function(e){return r({provider_list:e})}}),s?React.createElement(y,null):w.length>1&&React.createElement(W,{label:M("Choose a tag","presto-player"),value:null==t?void 0:t.provider_tag,options:w,onChange:function(e){return r({provider_tag:e})}}))},K=wp.i18n.__,Q=wp.components,X=Q.SelectControl,$=Q.Button,J=Q.Flex,ee=Q.Icon,te=wp.element,re=te.useEffect,ne=te.useState,ae=function(e){var t=e.options,r=e.updateEmailState,n=ne(!1),a=Object(d.a)(n,2),o=a[0],l=a[1],c=ne([{value:"none",label:K("None","presto-player")}]),i=Object(d.a)(c,2),s=i[0],b=i[1],v=ne(""),f=Object(d.a)(v,2),h=f[0],O=f[1],g={presto_player_activecampaign:{label:"ActiveCampaign",value:"activecampaign"},presto_player_mailchimp:{label:"MailChimp",value:"mailchimp"},presto_player_mailerlite:{label:"MailerLite",value:"mailerlite"},presto_player_fluentcrm:{label:"FluentCRM",value:"fluentcrm"}},j=function(){var e=Object(u.a)(m.a.mark((function e(){var t,r;return m.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),O(""),e.prev=2,e.next=5,wp.apiFetch({path:"wp/v2/settings"});case 5:t=e.sent,r=s,Object.keys(t).forEach((function(e){var n;null!=g&&g[e]&&null!==(n=t[e])&&void 0!==n&&n.connected&&(r=[].concat(Object(p.a)(r),[g[e]]))})),b(r),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(2),null!==e.t0&&void 0!==e.t0&&e.t0.message&&O(e.t0.message);case 14:return e.prev=14,l(!1),e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,11,14,17]])})));return function(){return e.apply(this,arguments)}}();re((function(){j()}),[]);return o?React.createElement(y,null):React.createElement("div",null,h,s.length>1?React.createElement("div",null,React.createElement(X,{label:K("Choose an email provider","presto-player"),value:null==t?void 0:t.provider,options:s,onChange:function(e){return r({provider:e})}}),function(){var e=s.find((function(e){return e.value===(null==t?void 0:t.provider)}));if(Object.keys(e||{}).length)switch(null==t?void 0:t.provider){case"mailchimp":return React.createElement(E,{options:t,updateEmailState:r});case"mailerlite":return React.createElement(T,{options:t,updateEmailState:r});case"activecampaign":return React.createElement(U,{options:t,updateEmailState:r});case"fluentcrm":return React.createElement(Z,{options:t,updateEmailState:r})}}()):React.createElement(J,null,React.createElement($,{target:"_blank",href:"/wp-admin/edit.php?post_type=pp_video_block&page=presto-player-settings#/integrations",isSecondary:!0,isSmall:!0},K("Connect a provider","presto-player")),React.createElement($,{isSmall:!0,onClick:function(e){e.preventDefault(),j()}},React.createElement(ee,{icon:"update"}))))},oe=r(12),le=r(0);function ce(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ie(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ce(Object(r),!0).forEach((function(t){Object(l.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ce(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}t.a=function(e){var t=e.state,r=e.updateState,l=e.className,p=t.email_collection,u=t.cta,d=Object(s.useSelect)((function(e){return e("presto-player/player").branding()})),b=function(e){r(ie(ie({},t),{},{email_collection:ie(ie({},p),e)}))};return Object(le.b)("div",{className:l},Object(le.b)(i.BaseControl,null,Object(le.b)("h3",null,Object(c.__)("Email Capture","presto-player"))),Object(le.b)(i.BaseControl,{className:"presto-player__control--large-play"},Object(le.b)(i.ToggleControl,{label:Object(c.__)("Enable","presto-player"),help:Object(c.__)("Show an email collection form and message over your player.","presto-player"),onChange:function(e){b({enabled:e})},checked:null==p?void 0:p.enabled})),!(null==p||!p.enabled)&&Object(le.b)(React.Fragment,null,Object(le.b)(i.BaseControl,{className:"presto-player__control--percentage-watched"},Object(le.b)(i.RangeControl,{label:Object(c.__)("Display At (Percentage)","presto-player"),labelPosition:"top",onChange:function(e){b({percentage:e})},marks:[{value:0,label:Object(c.__)("Start","presto-player")},{value:50,label:Object(c.__)("50% Watched","presto-player")},{value:100,label:Object(c.__)("End","presto-player")}],shiftStep:5,value:(null==p?void 0:p.percentage)||0})),(null==u?void 0:u.enabled)&&(null==p?void 0:p.percentage)===(null==u?void 0:u.percentage)&&Object(le.b)(i.Notice,{css:Object(le.a)(n||(n=Object(o.a)(["\n margin: 0 0 30px 0 !important;\n "]))),status:"warning",isDismissible:!1},Object(c.__)("You already have a Call To Action set display at the same time.","presto-player"),Object(le.b)(i.Button,{onClick:function(){r(ie(ie({},t),{},{cta:ie(ie({},u),{enabled:!1})}))},isLink:!0,css:Object(le.a)(a||(a=Object(o.a)(["\n margin-top: 10px !important;\n "])))},Object(c.__)("Disable Call To Action","presto-player"))),Object(le.b)(i.BaseControl,{className:"presto-player__control--large-play"},Object(le.b)(i.ToggleControl,{label:Object(c.__)("Allow Skipping","presto-player"),help:Object(c.__)("Let the viewer skip","presto-player"),onChange:function(e){b({allow_skip:e})},checked:null==p?void 0:p.allow_skip})),Object(le.b)(i.BaseControl,{className:"presto-player__control--large-play"},Object(le.b)(i.TextareaControl,{label:Object(c.__)("Headline","presto-player"),help:Object(c.__)("The headline for your form.","presto-player"),value:null==p?void 0:p.headline,onChange:function(e){b({headline:e})}})),Object(le.b)(i.BaseControl,{className:"presto-player__control--large-play"},Object(le.b)(i.TextareaControl,{label:Object(c.__)("Bottom Text","presto-player"),help:Object(c.__)("Text displayed below the form. HTML allowed.","presto-player"),value:null==p?void 0:p.bottom_text,onChange:function(e){b({bottom_text:e})}})),Object(le.b)(i.BaseControl,{className:"presto-player__control--large-play"},Object(le.b)(i.TextControl,{label:Object(c.__)("Play Button Text","presto-player"),help:Object(le.b)("p",null,Object(c.__)("Submit button text","presto-player")),value:null==p?void 0:p.button_text,onChange:function(e){return b({button_text:e})}})),Object(le.b)(i.BaseControl,{className:"presto-player__control--button-color"},Object(le.b)(i.Flex,null,Object(le.b)(i.BaseControl.VisualLabel,null,Object(c.__)("Button Color","presto-player")),Object(le.b)(oe.a,{color:(null==u?void 0:u.button_color)||(null==d?void 0:d.color),setColor:function(e){return b({button_color:e&&e.hex})}}))),Object(le.b)(i.BaseControl,{className:"presto-player__control--button-text-color"},Object(le.b)(i.Flex,null,Object(le.b)(i.BaseControl.VisualLabel,null,Object(c.__)("Button Text Color","presto-player")),Object(le.b)(oe.a,{color:(null==u?void 0:u.button_text_color)||"#ffffff",setColor:function(e){return b({button_text_color:e&&e.hex})}}))),Object(le.b)("h3",null,Object(c.__)("Integrate","presto-player")),Object(le.b)(i.BaseControl,null,Object(le.b)(ae,{updateEmailState:b,options:p})),Object(le.b)("h3",null,Object(c.__)("Style","presto-player")),Object(le.b)(i.BaseControl,null,Object(le.b)(i.RangeControl,{label:Object(c.__)("Round Corners","presto-player"),help:Object(c.__)("Border radius of form elements.","presto-player"),value:(null==p?void 0:p.border_radius)||0,onChange:function(e){return b({border_radius:e})},min:0,max:25}))))}},function(e,t,r){"use strict";var n=r(8),a=r(5),o=r(1),l=r(9),c=wp.i18n.__,i=wp.components,s=i.Flex,p=i.FlexItem,u=i.FlexBlock,d=i.TextControl,b=i.Button,m=wp.element.useState,y=function(e){var t=e.update,r=e.add,n=e.remove,i=e.className,y=e.time,v=e.title,f=(e.disabled,e.showNotice,m(y)),h=Object(o.a)(f,2),O=h[0],g=h[1];return React.createElement(s,{align:"center",className:i},React.createElement(p,null,React.createElement(d,Object(a.a)({className:"presto-player__caption--time",style:{width:"60px"},placeholder:"0:00",value:O,onChange:function(e){return g(e)},onBlur:function(){var e=Object(l.b)(O);t({time:e}),g(e)},autoComplete:"off"},"placeholder","0:00"))),React.createElement(u,null,React.createElement(d,{className:"presto-player__caption--title",placeholder:c("Title","presto-player"),value:v||"",onChange:function(e){return t({title:e})},autoComplete:"off"})),React.createElement(p,null,n&&React.createElement(b,{icon:"minus",className:"ph-chapter__remove",style:{marginBottom:"8px"},label:c("Remove Chapter","presto-player"),onClick:n}),r&&React.createElement(b,{icon:"plus-alt",className:"ph-chapter__add",label:c("Add Chapter","presto-player"),style:{marginBottom:"8px"},onClick:function(){r(),g("")}})))};function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(Object(r),!0).forEach((function(t){Object(a.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}wp.i18n.__;var h=wp.element.useState,O=wp.data.dispatch;t.a=function(e){var t,r=e.setAttributes,a=e.attributes,l=function(){O("presto-player/player").setProModal(!0)};if(null===(t=prestoPlayer)||void 0===t||!t.isPremium)return React.createElement(y,{disabled:!0,className:"ph-chapter is-new",time:"",title:"",update:function(){},showNotice:l,add:l});var c=a.chapters,i=h({title:"",time:""}),s=Object(o.a)(i,2),p=s[0],u=s[1];return React.createElement(React.Fragment,null,(c||[]).sort((function(e,t){return parseInt(e.time.split(":")[0])-parseInt(t.time.split(":")[0])==0?parseInt(e.time.split(":")[1])-parseInt(t.time.split(":")[1]):parseInt(e.time.split(":")[0])-parseInt(t.time.split(":")[0])})).map((function(e,t){return React.createElement(y,{key:"".concat(t,"-").concat(e.time),className:"ph-chapter",time:e.time,title:e.title,chapter:e,update:function(t){!function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=c.indexOf(e),a=c.map((function(e,r){return r!==n?e:f(f({},e),t)}));r({chapters:a})}(e,t)},remove:function(){!function(e){var t=c.indexOf(e);r({chapters:c.filter((function(e,r){return r!==t}))})}(e)}})})),React.createElement(y,{className:"ph-chapter is-new",time:p.time,title:p.title,update:function(e){u(f(f({},p),e))},add:function(){p.time&&p.title&&(r({chapters:[].concat(Object(n.a)(c||[]),[{time:p.time,title:p.title}])}),u({title:"",time:""}))}}))}},function(e,t,r){"use strict";var n,a,o,l=r(5),c=r(1),i=r(12),s=r(26),p=r(6),u=r(7),d=r(2),b=r.n(d),m=r(0);function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach((function(t){Object(l.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var f=wp.i18n.__,h=wp.components,O=h.TextControl,g=h.ExternalLink,j=h.Button,w=(h.Flex,wp.element),_=w.useState,E=w.useEffect,R=wp.data,k=R.useSelect,P=R.dispatch,C=function(e){var t=e.onClose,r=e.value,l=e.setValue,i=_(!1),s=Object(c.a)(i,2),d=s[0],y=s[1],h=wp.data.useSelect((function(e){return e("core").canUser("read","settings")})),w=k((function(e){return e("presto-player/player").youtube()}));E((function(){l(w.channel_id)}),[null==w?void 0:w.channel_id]);var R=function(){var e=Object(u.a)(b.a.mark((function e(n){var a,o;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.preventDefault(),y(!0),P("presto-player/player").updateYoutube({channel_id:r}),a=v(v({},w),{channel_id:r}),e.prev=4,e.next=7,wp.apiFetch({path:"wp/v2/settings",method:"POST",data:{presto_player_youtube:a}});case 7:null!=(o=e.sent)&&o.presto_player_youtube&&(P("presto-player/player").setYoutube(null==o?void 0:o.presto_player_youtube),t()),e.next=13;break;case 11:e.prev=11,e.t0=e.catch(4);case 13:return e.prev=13,y(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[4,11,13,16]])})));return function(t){return e.apply(this,arguments)}}();return h?Object(m.b)("form",{onSubmit:R},Object(m.b)(O,{css:Object(m.a)(n||(n=Object(p.a)(["\n margin-bottom: 0 !important;\n "]))),label:f("Youtube Channel ID","presto-player"),help:Object(m.b)("p",null,Object(m.b)(g,{href:"https://support.google.com/youtube/answer/3250431?hl=en"},f("Find my channel id","presto-player"))),value:r,onChange:function(e){return l(e)}}),Object(m.b)(j,{disabled:d,isBusy:d,css:Object(m.a)(a||(a=Object(p.a)(["\n margin-bottom: 1em;\n "]))),isPrimary:!0,type:"submot"},f("Save","presto-player")),Object(m.b)(j,{onClick:t,css:Object(m.a)(o||(o=Object(p.a)(["\n margin-bottom: 1em;\n "]))),isTertiary:!0},f("Cancel","presto-player"))):""};function x(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function S(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?x(Object(r),!0).forEach((function(t){Object(l.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):x(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var N=wp.i18n.__,T=wp.components,D=T.ToggleControl,B=T.Flex,A=T.Button,L=T.BaseControl,I=T.RangeControl,F=T.TextControl,V=T.SelectControl,U=T.TextareaControl,M=wp.element,z=M.useEffect,W=M.useState,H=wp.data.useSelect;t.a=function(e){var t=e.state,r=e.updateState,n=e.className,a=e.value,o=e.setValue,l=t.action_bar,p=W(!1),u=Object(c.a)(p,2),d=u[0],b=u[1],m=H((function(e){return e("presto-player/player").branding()})),y=H((function(e){return e("presto-player/player").youtube()})),v=function(e){r(S(S({},t),{},{action_bar:S(S({},l),e)}))};z((function(){null!=l&&l.text||v({text:"Like this?"}),null!=l&&l.button_type||v({button_type:"custom"}),null!=l&&l.button_text||v({button_text:"Click Here"})}),[t]);return React.createElement("div",{className:n},React.createElement(L,null,React.createElement("h3",null,N("Action Bar","presto-player"))),React.createElement(L,{className:"presto-player__control--large-play"},React.createElement(D,{label:N("Enable","presto-player"),help:N("Show an action bar below your player while it's playing.","presto-player"),onChange:function(e){v({enabled:e})},checked:null==l?void 0:l.enabled})),!(null==l||!l.enabled)&&React.createElement(React.Fragment,null,React.createElement(L,{className:"presto-player__control--percentage-watched"},React.createElement(I,{label:N("Display At (Percentage)","presto-player"),labelPosition:"top",onChange:function(e){v({percentage_start:e})},marks:[{value:0,label:N("Start","presto-player")},{value:50,label:N("50% Watched","presto-player")},{value:100,label:N("End","presto-player")}],shiftStep:5,value:(null==l?void 0:l.percentage_start)||0})),React.createElement(L,{className:"presto-player__control--large-play"},React.createElement(U,{label:N("Text","presto-player"),help:N("Action bar text.","presto-player"),value:null==l?void 0:l.text,onChange:function(e){return v({text:e})}})),React.createElement(L,{className:"presto-player__control--large-play"},React.createElement(B,null,React.createElement(L.VisualLabel,null,N("Action Bar Background","presto-player")),React.createElement(i.a,{color:(null==l?void 0:l.background_color)||"#1d1d1d",setColor:function(e){return v({background_color:e&&e.hex})}}))),React.createElement(L,null,React.createElement("h3",null,N("Button","presto-player"))),React.createElement(L,{className:"presto-player__control--button-type"},React.createElement(V,{label:N("Button Type","presto-player"),value:null==l?void 0:l.button_type,options:[{value:"custom",label:N("Custom","presto-player")},{value:"youtube",label:N("YouTube Subscribe","presto-player")},{value:"none",label:N("None","presto-player")}],onChange:function(e){return v({button_type:e})}})),"youtube"===(null==l?void 0:l.button_type)&&(null==y?void 0:y.channel_id)&&React.createElement(D,{label:N("Show Count","presto-player"),help:N("Show your follower count.","presto-player"),onChange:function(e){v({button_count:e})},checked:null==l?void 0:l.button_count}),function(){if("youtube"===(null==l?void 0:l.button_type))return d?React.createElement(C,{onClose:function(){return b(!1)},value:a,setValue:o}):React.createElement("div",null,React.createElement(A,{isSecondary:!0,onClick:function(e){e.preventDefault(),b(!0)}},null!=y&&y.channel_id?N("Update Youtube Channel Id","presto-player"):N("Add Youtube Channel Id","presto-player")),React.createElement("br",null),React.createElement("br",null),React.createElement("br",null))}(),"custom"===(null==l?void 0:l.button_type)&&React.createElement("div",null,React.createElement(L,{className:"presto-player__control--button-text"},React.createElement(F,{label:N("Button Text","presto-player"),help:React.createElement("p",null,N("Submit button text","presto-player")),value:null==l?void 0:l.button_text,onChange:function(e){return v({button_text:e})}})),React.createElement(L,{className:"presto-player__control--button-text"},React.createElement(L.VisualLabel,null,React.createElement("p",null," ",N("Button Link","presto-player"))),React.createElement(s.a,{setSettings:function(e){v({button_link:e})},settings:(null==l?void 0:l.button_link)||{}})),React.createElement(L,{className:"presto-player__control--button-radius"},React.createElement(I,{label:N("Round Corners","presto-player"),help:N("Border radius of the button","presto-player"),value:(null==l?void 0:l.button_radius)||0,onChange:function(e){return v({button_radius:e})},min:0,max:25})),React.createElement(L,{className:"presto-player__control--button-color"},React.createElement(B,null,React.createElement(L.VisualLabel,null,N("Button Color","presto-player")),React.createElement(i.a,{color:(null==l?void 0:l.button_color)||(null==m?void 0:m.color),setColor:function(e){return v({button_color:e&&e.hex})}}))),React.createElement(L,{className:"presto-player__control--button-text-color"},React.createElement(B,null,React.createElement(L.VisualLabel,null,N("Button Text Color","presto-player")),React.createElement(i.a,{color:(null==l?void 0:l.button_text_color)||"#ffffff",setColor:function(e){return v({button_text_color:e&&e.hex})}}))))))}},function(e,t){e.exports=window.wp.editor},,,,,,,function(e,t,r){"use strict";(function(e){var n,a,o=r(6),l=r(8),c=r(5),i=r(1),s=r(52),p=r(0),u=r(37),d=r(51);function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){Object(c.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var y=wp.i18n.__,v=wp.components,f=v.Button,h=v.Flex,O=v.FlexItem,g=v.FlexBlock,j=v.Modal,w=wp.element,_=w.useState,E=w.useEffect,R=wp.data.useSelect;t.a=function(t){var r=t.closeModal,c=t.attributes,b=t.setAttributes,v=t.updateOverlayAttribute,w=_(!1),k=Object(i.a)(w,2),P=k[0],C=k[1],x=_(""),S=Object(i.a)(x,2),N=S[0],T=S[1],D=c.overlays,B=c.preset,A=c.src,L=c.poster,I=c.previewSrc,F=R((function(e){return e("presto-player/player").branding()})),V=R((function(e){return e("presto-player/player").getPreset(B)}));E((function(){D.length||U()}),[]);var U=function(){var e={startTime:"0:00",endTime:"0:05",text:y("Here's a link to click!","presto-player"),link:{},position:"top-right",color:"#fff",backgroundColor:"#000",opacity:75};D[D.length-1]&&(e=m({},D[D.length-1]));e.id=Object(s.a)(10),b({overlays:[].concat(Object(l.a)(D||[]),[e])})};return Object(p.b)(j,{title:y("Manage Video Overlays","presto-player"),onRequestClose:r,className:"presto-player__modal-presets",overlayClassName:"presto-player__modal-presets-overlay",shouldCloseOnClickOutside:!1},Object(p.b)("div",{className:"presto-player__preset-options","data-cy":"preset-modal"},Object(p.b)(h,{align:"stretch",className:"presto-player__style-preview-area"},Object(p.b)(O,{className:"presto-player__style-sidebar"},Object(p.b)("div",{css:{padding:"3px"}},(D||[]).sort((function(e,t){return parseInt(e.startTime.split(":")[0])-parseInt(t.startTime.split(":")[0])==0?parseInt(e.startTime.split(":")[1])-parseInt(t.startTime.split(":")[1]):parseInt(e.startTime.split(":")[0])-parseInt(t.startTime.split(":")[0])})).map((function(t,r){return Object(p.b)(d.a,{key:"".concat(r,"-").concat(t.startTime),overlayIndex:r,className:"presto-player__overlay",startTime:t.startTime,endTime:t.endTime,text:t.text,link:t.link,position:t.position,color:t.color,backgroundColor:t.backgroundColor,opacity:t.opacity,overlay:t,update:function(e){!function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=D.indexOf(e),n=D.map((function(e,n){return n!==r?e:m(m({},e),t)}));b({overlays:n})}(t,e)},remove:function(){!function(e){var t=D.indexOf(e);b({overlays:D.filter((function(e,r){return r!==t}))})}(t)},updateCurrentTime:function(t){!function(t){T(""),e.nextTick((function(){T(t)}))}(t)}})})),Object(p.b)(f,{isPrimary:!0,onClick:U},y("Add An Overlay","presto-player")))),Object(p.b)(g,{className:"presto-player__style-preview-panel"},Object(p.b)(u.a,{preload:"auto",currentTime:N,src:I||A,isDisabled:!1,state:m(m({},V),{},{lazy_load_youtube:!1,invert_time:!1}),branding:F,poster:L,overlays:D}))),Object(p.b)("br",null),Object(p.b)("div",{css:Object(p.a)(n||(n=Object(o.a)(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n "])))},Object(p.b)("div",{css:Object(p.a)(a||(a=Object(o.a)(["\n opacity: 0.5;\n font-size: 12px;\n "])))}),Object(p.b)("div",null,Object(p.b)(f,{isTertiary:!0,onClick:r,style:{margin:"0 6px"}},y("Cancel","presto-player")),Object(p.b)(f,{isPrimary:!0,isBusy:P,disabled:P,onClick:function(){C(!0),v(D),C(!1),r()},"data-cy":"submit-preset"},y("Save Overlays","presto-player"))))))}}).call(this,r(63))},function(e,t,r){"use strict";var n=r(1),a=r(0),o=r(9),l=r(26),c=r(38),i=r(12),s=wp.i18n.__,p=wp.components,u=p.Flex,d=p.FlexItem,b=p.TextControl,m=p.Button,y=p.BaseControl,v=p.RadioControl,f=p.RangeControl,h=(p.withFocusReturn,wp.element),O=h.useRef,g=h.useEffect,j=wp.element.useState;t.a=function(e){var t=e.overlayIndex,r=e.update,p=e.remove,h=e.className,w=e.startTime,_=e.endTime,E=e.text,R=e.link,k=e.position,P=e.color,C=e.backgroundColor,x=e.opacity,S=e.updateCurrentTime,N=j(w),T=Object(n.a)(N,2),D=T[0],B=T[1],A=j(_),L=Object(n.a)(A,2),I=L[0],F=L[1],V=j(k),U=Object(n.a)(V,2),M=U[0],z=U[1],W=O();g((function(){if(Object(o.e)(w)>=Object(o.e)(_)){var e=Object(o.b)(w),t=Object(o.e)(e)+1;e=Object(o.b)(Object(o.c)(t)),r({endTime:e}),F(e)}}),[w,_]);var H=function(){var e=Object(o.b)(D);r({startTime:e}),B(e),S(e)};return Object(a.b)("div",null,Object(a.b)(u,{align:"center",className:h},Object(a.b)(d,null,Object(a.b)(b,{ref:W,id:"start-time-".concat(t),label:s("Start Time","presto-player"),className:"presto-player__overlay--start-time",value:D,onChange:function(e){return B(e)},onBlur:H,onFocus:H,autoComplete:"off",placeholder:"0:00"})),Object(a.b)(d,null,Object(a.b)(b,{label:s("End Time","presto-player"),className:"presto-player__overlay--end-time",value:I,onChange:F,onBlur:function(){var e=Object(o.b)(I);r({endTime:e}),F(e)},autoComplete:"off",placeholder:"0:00"}))),Object(a.b)(c.a,{text:E,update:r,onFocus:function(){S(Object(o.b)(D))}}),Object(a.b)(y,{style:{width:"100%"}},Object(a.b)(y.VisualLabel,null,Object(a.b)("p",null," ",s("Link","presto-player"))),Object(a.b)(l.a,{onFocus:function(){S(Object(o.b)(D))},setSettings:function(e){return r({link:e})},settings:R||{}})),Object(a.b)(y,{className:h},Object(a.b)(v,{label:s("Position","presto-player"),options:[{label:"Top Right",value:"top-right"},{label:"Top Left",value:"top-left"}],selected:M||"right",onFocus:function(){S(Object(o.b)(D))},onChange:function(e){r({position:e}),z(e),S(Object(o.b)(D))}})),Object(a.b)(y,{className:"presto-player__control--overlay-text-color"},Object(a.b)(u,null,Object(a.b)(y.VisualLabel,null,s("Text Color","presto-player")),Object(a.b)(i.a,{onFocus:function(){S(Object(o.b)(D))},color:P,setColor:function(e){r({color:e&&e.hex})}}))),Object(a.b)(y,{className:"presto-player__control--overlay-background-color"},Object(a.b)(u,null,Object(a.b)(y.VisualLabel,null,s("Background Color","presto-player")),Object(a.b)(i.a,{onFocus:function(){S(Object(o.b)(D))},color:C,setColor:function(e){r({backgroundColor:e&&e.hex})}}))),Object(a.b)(y,null,Object(a.b)(f,{label:s("Opacity","presto-player"),help:s("Opacity percentage of the overlay.","presto-player"),value:x,onChange:function(e){return r({opacity:e})},min:0,max:100})),p&&Object(a.b)(y,{className:h},Object(a.b)(u,{justify:"flex-end"},Object(a.b)(m,{isDestructive:!0,isSmall:!0,onClick:p},s("Remove Overlay","presto-player")))),Object(a.b)("hr",{css:{marginBottom:"20px"}}))}},,,function(e,t,r){r(55),e.exports=r(68)},,,,function(e,t,r){var n={"./audio/index.js":67,"./bunny/index.js":66,"./hosted/index.js":70,"./reusable-display/index.js":71,"./reusable-edit/index.js":64,"./vimeo/index.js":72,"./youtube/index.js":73};function a(e){var t=o(e);return r(t)}function o(e){if(!r.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=o,e.exports=a,a.id=58},,,,,,function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return v})),r.d(t,"options",(function(){return f}));var n=wp.i18n.__,a=wp.blockEditor,o=a.InnerBlocks,l=a.useBlockProps,c=wp.data,i=c.useSelect,s=c.dispatch,p=wp.components,u=p.Button,d=p.Placeholder,b=wp.plugins,m=(b.getPlugins,b.unregisterPlugin),y=wp.element.useEffect,v="presto-player/reusable-edit",f={title:"Reusable Block Container",category:"presto",supports:{inserter:!1,reusable:!1,html:!1},icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("circle",{cx:"12",cy:"12",r:"10"}),React.createElement("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),React.createElement("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})),edit:function(e){var t=l(),r=e.clientId,a=e.isSelected,c=i((function(e){return e("core/block-editor").getBlock(r).innerBlocks}));y((function(){a&&wp.data.dispatch("core/edit-post").openGeneralSidebar("edit-post/block")}),[a]),s("core/block-editor").setTemplateValidity(!0),y((function(){m("presto-player")}),[]);var p,b=function(e){var t=wp.blocks.createBlock("presto-player/".concat(e));return s("core/block-editor").insertBlock(t,0,r)};return null!=c&&c.length?React.createElement("div",null,React.createElement("div",t,React.createElement(o,{templateLock:!1,renderAppender:function(){return 0===c.length&&React.createElement(o.ButtonBlockAppender,null)}}))):React.createElement("div",null,React.createElement("div",t,React.createElement(d,{icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("polygon",{points:"23 7 16 12 23 17 23 7"}),React.createElement("rect",{x:"1",y:"5",width:"15",height:"14",rx:"2",ry:"2"})),instructions:n("Choose a video type to get started.","presto-player"),label:n("Choose a Video Type","presto-player")},React.createElement(u,{isPrimary:!0,onClick:function(){b("self-hosted")}},n("Video","presto-player")),React.createElement(u,{isPrimary:!0,onClick:function(){b("youtube")}},n("Youtube","presto-player")),React.createElement(u,{isPrimary:!0,onClick:function(){b("vimeo")}},n("Vimeo","presto-player")),null!==(p=prestoPlayer)&&void 0!==p&&p.isPremium?React.createElement(u,{isPrimary:!0,onClick:function(){b("bunny")}},n("Bunny.net","presto-player")):"",React.createElement(u,{isPrimary:!0,onClick:function(){b("audio")}},n("Audio","presto-player"))),React.createElement(o,{templateLock:!1,renderAppender:function(){return!1}})))},save:function(){var e=l.save();return React.createElement("div",e,React.createElement(o.Content,null))}}},function(e,t,r){var n={"./reusable-videos/index.js":69};function a(e){var t=o(e);return r(t)}function o(e){if(!r.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}a.keys=function(){return Object.keys(n)},a.resolve=o,e.exports=a,a.id=65},function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return xa})),r.d(t,"options",(function(){return Sa}));var n={};r.r(n),r.d(n,"videos",(function(){return Q})),r.d(n,"collections",(function(){return X})),r.d(n,"uploads",(function(){return $})),r.d(n,"isPrivate",(function(){return J})),r.d(n,"isLoading",(function(){return ee})),r.d(n,"errors",(function(){return te})),r.d(n,"videosFetched",(function(){return re})),r.d(n,"currentCollection",(function(){return ne})),r.d(n,"ui",(function(){return ae})),r.d(n,"requestType",(function(){return oe}));var a={};r.r(a),r.d(a,"setVideos",(function(){return le})),r.d(a,"addVideos",(function(){return ce})),r.d(a,"removeVideo",(function(){return ie})),r.d(a,"setCollections",(function(){return se})),r.d(a,"addCollection",(function(){return pe})),r.d(a,"setIsPrivate",(function(){return ue})),r.d(a,"setSearch",(function(){return de})),r.d(a,"setCollectionRequest",(function(){return be})),r.d(a,"setUploads",(function(){return me})),r.d(a,"addUploads",(function(){return ye})),r.d(a,"removeUpload",(function(){return ve})),r.d(a,"setVideosFetched",(function(){return fe})),r.d(a,"setLoading",(function(){return he})),r.d(a,"setUI",(function(){return Oe})),r.d(a,"addError",(function(){return ge})),r.d(a,"removeError",(function(){return je}));var o,l,c=r(5),i=r(7),s=r(1),p=r(2),u=r.n(p),d=function(){var e=Object(i.a)(u.a.mark((function e(t){var r;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,wp.apiFetch({path:"presto-player/v1/bunny/sign",method:"POST",data:{url:t,id:0}});case 4:return r=e.sent,e.abrupt("return",r);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),b=r(21),m=r(22),y=r(36),v=function(e){var t=e.file,r=e.path,n=e.onProgress,a=e.onComplete,o=e.onError,l=0,c=!1,s=Math.min(prestoPlayerAdmin.wp_max_upload_size-1e6,159e5),p=Math.max(s,19e5);p=Math.min(p,104857600);var d=function(){var e=Object(i.a)(u.a.mark((function e(i){var s,b,m,y,v;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=i+p+1,b=t.slice(i,s),m=Math.ceil(t.size/(p+1)),l++,n(l/m*100),(y=new FormData).append("file",b),y.append("name",t.name),y.append("chunk",l),y.append("chunks",m),e.prev=10,e.next=13,wp.apiFetch({path:r,method:"POST",body:y});case 13:if(v=e.sent,!c){e.next=17;break}return console.log("cancelled"),e.abrupt("return");case 17:s<t.size?(n(void 0),d(s)):a(v),e.next=24;break;case 20:e.prev=20,e.t0=e.catch(10),o(e.t0),console.error(e.t0);case 24:case"end":return e.stop()}}),e,null,[[10,20]])})));return function(t){return e.apply(this,arguments)}}();return l=0,new FileReader,d(0),{cancel:function(){c=!0}}},f=r(6),h=function(e){var t=e.item,r=e.onClick,n=e.className;var a,o=function(){return!(null==t||!t.encodeProgress)&&100!==t.encodeProgress};return React.createElement("div",{className:"presto-player__media-list-item ".concat(n),onClick:r},React.createElement("div",{className:"presto-player__media-list-item-icon"},React.createElement("svg",Object(c.a)({xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"},"strokeLinecap","round"),React.createElement("polygon",{points:"23 7 16 12 23 17 23 7"}),React.createElement("rect",{x:"1",y:"5",width:"15",height:"14",rx:"2",ry:"2"}))),React.createElement("div",{className:"presto-player__media-list-item-title"},null==t?void 0:t.title),o()&&React.createElement("div",{className:"presto-player__media-list-item-size"},"Encoding..."),!o()&&React.createElement("div",{className:"presto-player__media-list-item-size"},function(e){if(0==e)return"0 Byte";var t=parseInt(Math.floor(Math.log(e)/Math.log(1024)));return Math.round(e/Math.pow(1024,t),2)+" "+["Bytes","KB","MB","GB","TB"][t]}(null==t?void 0:t.size)),!o()&&React.createElement("div",{className:"presto-player__media-list-item-modified"},(a=t.updated_at,new Date(a).toLocaleString())))},O=function(e){var t,r=e.item,n=e.onClick,a=e.className;return React.createElement("div",{className:"presto-player__media-list-item ".concat(a),onClick:n},React.createElement("div",{className:"presto-player__media-list-item-icon"},React.createElement("svg",Object(c.a)({xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"},"strokeLinecap","round"),React.createElement("polygon",{points:"23 7 16 12 23 17 23 7"}),React.createElement("rect",{x:"1",y:"5",width:"15",height:"14",rx:"2",ry:"2"}))),React.createElement("div",{className:"presto-player__media-list-item-title"},null==r?void 0:r.title),React.createElement("div",{className:"presto-player__media-list-item-size"},function(e){if(0==e)return"0 Byte";var t=parseInt(Math.floor(Math.log(e)/Math.log(1024)));return Math.round(e/Math.pow(1024,t),2)+" "+["Bytes","KB","MB","GB","TB"][t]}(null==r?void 0:r.size)),React.createElement("div",{className:"presto-player__media-list-item-modified"},(t=r.updated_at,new Date(t).toLocaleString())))},g=r(0),j=wp.i18n.__,w=wp.components,_=w.Modal,E=w.Spinner,R=w.Button,k=w.BaseControl,P=w.Flex,C=w.FlexBlock,x=w.Notice,S=w.Card,N=w.CardBody,T=w.Disabled,D=w.DropZone,B=w.FormFileUpload,A=w.DropZoneProvider,L=wp.element,I=L.useEffect,F=L.useState,V=L.useRef,U=function(e){var t=e.onClose,r=e.title,n=e.header,a=e.onLoad,c=e.items,i=e.folders,p=e.fetching,u=e.progressMessage,d=e.onSelect,b=e.error,m=e.onDelete,y=e.onUpload,v=e.progress,w=F({}),L=Object(s.a)(w,2),U=L[0],M=L[1],z=F(!1),W=Object(s.a)(z,2),H=W[0],Y=W[1],G=V();I((function(){a&&a()}),[]);var q,Z,K,Q,X=function(){m(U),Y(!1)},$=function(){return Object.keys(U||{}).length};return Object(g.b)(_,{title:n||j("Add Media","presto-player"),onRequestClose:t,className:"presto-player__media-modal presto-player__full-modal",overlayClassName:"presto-player__modal-overlay"},Object(g.b)("div",{className:"presto-player__media-modal-layout","data-cy":"media-modal"},Object(g.b)("div",{className:"presto-player__media-modal-header"},Object(g.b)("div",{className:"presto-player__media-modal-upload",css:Object(g.a)(o||(o=Object(f.a)(["\n display: flex;\n align-items: center;\n "])))},Object(g.b)(B,{isPrimary:!0,accept:"video/mp4,video/x-m4v,video/*",onChange:function(e){e.target.files&&(y(e.target.files),jQuery(e.target).val(null))}},j("Upload New Video","presto-player")),Object(g.b)("div",{css:Object(g.a)(l||(l=Object(f.a)(["\n margin-left: 10px;\n "])))},j("Or drag a file here to upload.","presto-player"))),b&&Object(g.b)(x,{status:"error",isDismissible:!1},b)),Object(g.b)("div",{className:"presto-player__media-modal-content"},Object(g.b)(A,null,p?Object(g.b)(P,{className:"presto-player__media-loading"},Object(g.b)(C,{style:{textAlign:"center"}},v?Object(g.b)(React.Fragment,null,Object(g.b)("div",null,Object(g.b)("strong",null,u||j("Uploading","presto-player"))),Object(g.b)("div",null,j("Please don't navigate away from this page.","presto-player")),Object(g.b)("progress",{className:"presto-progress",max:"100",value:v,style:{width:"100px"}})):Object(g.b)(E,null))):null!=c&&c.length?Object(g.b)("div",{className:"presto-player__media-list"},Object(g.b)("h2",null,r),i&&Object(g.b)("div",{className:"presto-player__media-list-folders"},i.map((function(e){return Object(g.b)(O,{key:e.id,item:e})}))),Object(g.b)("div",{className:"presto-player__media-list-items"},c.map((function(e){return Object(g.b)(h,{item:e,key:e.id,onClick:function(){M(U===e?{}:e)},className:U===e?"is-selected":""})})))):Object(g.b)(P,{"align-items":"center",className:"presto-player__media-not-found"},Object(g.b)("div",null,Object(g.b)("h2",null,"Drop video files here to upload"),Object(g.b)("p",null,"or browse for a video"),Object(g.b)(B,{isSecondary:!0,accept:"video/mp4,video/x-m4v,video/*",onChange:function(e){e.target.files&&(y(e.target.files),jQuery(e.target).val(null))}},j("Upload New Video","presto-player")))),Object(g.b)(D,{label:"Drop files",onFilesDrop:y}))),Object(g.b)("div",{className:"presto-player__media-modal-sidebar"},$()?Object(g.b)("div",{className:"presto-player__media-modal-sidebar-content"},Object(g.b)(k,null,Object(g.b)(T,{key:U.id},null!=U&&U.thumbnail?Object(g.b)("img",{src:null==U?void 0:U.thumbnail,style:{maxWidth:"100%"}}):Object(g.b)("video",{preload:"metadata"},Object(g.b)("source",{src:U.previewUrl})))),Object(g.b)(k,null,Object(g.b)(k.VisualLabel,null,j("Name","presto-player")),Object(g.b)("h3",{style:{marginTop:"5px"}},U.title)),!(null==U||!U.visibility)&&Object(g.b)(k,null,Object(g.b)(k.VisualLabel,null,j("Visibility","presto-player")),Object(g.b)("h3",{style:{marginTop:"5px"}},U.visibility)),Object(g.b)(k,null,Object(g.b)(k.VisualLabel,null,j("Size","presto-player")),Object(g.b)("h3",{style:{marginTop:"5px"}},function(e){if(0==e)return"0 Byte";var t=parseInt(Math.floor(Math.log(e)/Math.log(1024)));return Math.round(e/Math.pow(1024,t),2)+" "+["Bytes","KB","MB","GB","TB"][t]}((null==U?void 0:U.size)||0))),Object(g.b)(k,null,Object(g.b)(k.VisualLabel,null,j("Created","presto-player")),Object(g.b)("h3",{style:{marginTop:"5px"}},(q=null==U?void 0:U.created_at,Z=(q=new Date(q)).getHours(),K=q.getMinutes(),Q=Z>=12?"pm":"am",Z=(Z%=12)||12,K=K<10?"0"+K:K,q.getDate()+"-"+(q.getMonth()+1)+"-"+q.getFullYear()+" at "+Z+":"+K+Q))),Object(g.b)(k,null,H?Object(g.b)(S,null,Object(g.b)(N,null,Object(g.b)("p",null,Object(g.b)("strong",null,"Are you sure?")),Object(g.b)("p",null,"Are you sure you want to delete this video?"),Object(g.b)(R,{isDestructive:!0,onClick:X},"Yes"),Object(g.b)(R,{onClick:function(){return Y(!1)}},"Cancel"))):Object(g.b)(R,{isDestructive:!0,onClick:function(){Y(!H)}},j("Delete video","presto-player")))):Object(g.b)(React.Fragment,null)),Object(g.b)("div",{className:"presto-player__media-modal-footer"},Object(g.b)(R,{isPrimary:!0,disabled:!$(),onClick:function(){U&&(d(U),t())},ref:G},j("Choose","presto-player")))))},M=wp.i18n.__,z=wp.element,W=z.useState,H=z.useEffect,Y=function(e){var t=e.closePopup,r=e.noticeOperations,n=e.onSelect,a=e.isPrivate,o=W([]),l=Object(s.a)(o,2),c=l[0],p=l[1],d=W(!1),b=Object(s.a)(d,2),m=b[0],y=b[1],f=W(0),h=Object(s.a)(f,2),O=h[0],g=h[1],j=W(""),w=Object(s.a)(j,2),_=w[0],E=w[1],R=W(""),k=Object(s.a)(R,2),P=k[0],C=k[1],x=a?"private-videos":"public-videos";H((function(){g(0),C("")}),[]);var S=function(){var e=Object(i.a)(u.a.mark((function e(t){return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:C(""),y(!0),E(M("Uploading","presto-player")),v({file:t[0],path:"presto-player/v1/bunny/upload",onProgress:function(e){g(e-10)},onComplete:N,onError:function(e){C(e.message),g(0),y(!1)}});case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),N=function(){var e=Object(i.a)(u.a.mark((function e(t){var r,n,a;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.path,n=t.name,E(M("Storing","presto-player")),e.prev=2,e.next=5,wp.apiFetch({path:"presto-player/v1/bunny/".concat(x),method:"POST",data:{path:r,name:n}});case 5:a=e.sent,p(a),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),C(e.t0.message),console.error(e.t0);case 13:return e.prev=13,g(0),y(!1),e.finish(13);case 17:case"end":return e.stop()}}),e,null,[[2,9,13,17]])})));return function(t){return e.apply(this,arguments)}}(),T=function(){var e=Object(i.a)(u.a.mark((function e(t){return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,p((c||[]).filter((function(e){return e!==t}))),e.next=4,wp.apiFetch({path:"presto-player/v1/bunny/".concat(x),method:"DELETE",data:{name:null==t?void 0:t.title}});case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(0),C(e.t0.message);case 9:case"end":return e.stop()}}),e,null,[[0,6]])})));return function(t){return e.apply(this,arguments)}}(),D=function(){var e=Object(i.a)(u.a.mark((function e(){var t;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,y(!0),e.next=4,wp.apiFetch({path:"presto-player/v1/bunny/".concat(x)});case 4:t=e.sent,p(t),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),C(e.t0.message);case 11:return e.prev=11,y(!1),e.finish(11);case 14:case"end":return e.stop()}}),e,null,[[0,8,11,14]])})));return function(){return e.apply(this,arguments)}}();return React.createElement(U,{onClose:t,progressMessage:_,fetching:m,error:P,onUpload:S,onLoad:D,items:c,progress:O,onDelete:T,onSelect:n,onError:function(e){r.removeAllNotices(),r.createErrorNotice(e)},header:M(a?"Bunny.net Private Video Storage":"Bunny.net Public Video Storage","presto-player"),title:M(a?"Private Video Library":"Public Video Library","presto-player")})},G=r(8);function q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?q(Object(r),!0).forEach((function(t){Object(c.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):q(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var K=(0,wp.data.combineReducers)({videosReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_VIDEOS":return t.value;case"ADD_VIDEOS":return[].concat(Object(G.a)(e),Object(G.a)(t.value));case"ADD_VIDEO":return[].concat(Object(G.a)(e),[t.value]);case"UPDATE_VIDEO":return e.map((function(e,r){var n;return e.id!==(null===(n=t.value)||void 0===n?void 0:n.id)?e:Z(Z({},e),t.value)}));case"REMOVE_VIDEO":return e.filter((function(e){return e.guid!==t.value.guid}))}return e},collectionsReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_COLLECTIONS":return t.value;case"ADD_COLLECTION":return[].concat(Object(G.a)(e),[t.value]);case"UPDATE_COLLECTION":return e.map((function(e,r){var n;return e.id!==(null===(n=t.value)||void 0===n?void 0:n.id)?e:Z(Z({},e),t.value)}));case"REMOVE_COLLECTION":return e.filter((function(e){return e!==t.value}))}return e},uploadsReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_UPLOADS":return t.value;case"ADD_UPLOADS":return[].concat(Object(G.a)(e),Object(G.a)(t.value));case"ADD_UPLOAD":return[].concat(Object(G.a)(e),[t.value]);case"UPDATE_UPLOAD":return e.map((function(e,r){var n;return e.id!==(null===(n=t.value)||void 0===n?void 0:n.id)?e:Z(Z({},e),t.value)}));case"REMOVE_UPLOAD":return e.filter((function(e){return e!==t.value}))}return e},requestReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{private:!1,collection:"",search:""},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_PRIVATE_REQUEST":return Z(Z({},e),{},{private:t.value});case"SET_SEARCH_REQUEST":return Z(Z({},e),{},{search:t.value});case"SET_COLLECTION_REQUEST":return Z(Z({},e),{},{collection:t.value})}return e},UIReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{loading:!1,videosFetched:!1,createCollection:!1,selectedId:null},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_LOADING":return Z(Z({},e),{},{loading:t.value});case"SET_VIDEOS_FETCHED":return Z(Z({},e),{},{videosFetched:t.value});case"SET_UI_ITEM":return Z(Z({},e),{},Object(c.a)({},t.item,t.value))}return e},errorReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_ERROR":return[].concat(Object(G.a)(e),[t.value]);case"REMOVE_ERROR":return e.filter((function(e){return e!==t.value}))}return e}});function Q(e){return(null==e?void 0:e.videosReducer)||[]}function X(e){return(null==e?void 0:e.collectionsReducer)||[]}function $(e){return(null==e?void 0:e.uploadsReducer)||[]}function J(e){var t;return!(null==e||null===(t=e.requestReducer)||void 0===t||!t.private)}function ee(e){var t;return(null==e||null===(t=e.UIReducer)||void 0===t?void 0:t.loading)||!1}function te(e){return(null==e?void 0:e.errorReducer)||[]}function re(e){var t;return(null==e||null===(t=e.UIReducer)||void 0===t?void 0:t.videosFetched)||!1}function ne(e){var t;return null==e||null===(t=e.requestReducer)||void 0===t?void 0:t.collection}function ae(e,t){var r;return null==e||null===(r=e.UIReducer)||void 0===r?void 0:r[t]}function oe(e){var t;return null!=e&&null!==(t=e.requestReducer)&&void 0!==t&&t.private?"private":"public"}function le(e){return{type:"SET_VIDEOS",value:e}}function ce(e){return{type:"ADD_VIDEOS",value:e}}function ie(e){return{type:"REMOVE_VIDEO",value:e}}function se(e){return{type:"SET_COLLECTIONS",value:e}}function pe(e){return{type:"ADD_COLLECTION",value:e}}function ue(e){return{type:"SET_PRIVATE_REQUEST",value:e}}function de(e){return{type:"SET_SEARCH",value:e}}function be(e){return{type:"SET_COLLECTION_REQUEST",value:e}}function me(e){return{type:"SET_UPLOADS",value:e}}function ye(e){return{type:"ADD_UPLOADS",value:e}}function ve(e){return{type:"REMOVE_UPLOAD",value:e}}function fe(e){return{type:"SET_VIDEOS_FETCHED",value:e}}function he(e){return{type:"SET_LOADING",value:e}}function Oe(e,t){return{type:"SET_UI_ITEM",item:e,value:t}}function ge(e){return{type:"ADD_ERROR",value:e}}function je(e){return{type:"REMOVE_ERROR",value:e}}(0,wp.data.registerStore)("presto-player/bunny-popup",{reducer:K,selectors:n,actions:a});var we,_e,Ee,Re,ke,Pe,Ce,xe,Se,Ne,Te,De,Be,Ae,Le,Ie,Fe,Ve,Ue,Me,ze,We=function(e){return 3==(null==e?void 0:e.status)&&(null==e?void 0:e.availableResolutions.length)},He=function(e){return We(e)||4===(null==e?void 0:e.status)},Ye=function(e){return 0==(null==e?void 0:e.status)?"Processing":1==(null==e?void 0:e.status)?"Uploaded":2==(null==e?void 0:e.status)?"Processing":We(e)?"Playable":3==(null==e?void 0:e.status)?"Encoding":4==(null==e?void 0:e.status)?"Live":5==(null==e?void 0:e.status)?"Error":6==(null==e?void 0:e.status)?"Upload Failed":void 0},Ge=function(e){return null==e||null==e?"":new Date(1e3*e).toISOString().substr(11,8)},qe=function(e){if(null==e||0==e)return"Unknown";if(0==e)return"0 b";var t=parseInt(Math.floor(Math.log(e)/Math.log(1024)).toString());return(e/Math.pow(1024,t)).toFixed(2)+" "+["b","KB","MB","GB","TB"][t]},Ze=wp.i18n.__,Ke=wp.components,Qe=Ke.Button,Xe=Ke.BaseControl,$e=Ke.Disabled,Je=Ke.Card,et=Ke.CardBody,tt=wp.element,rt=tt.useState,nt=(tt.useContext,tt.useEffect),at=wp.data,ot=at.dispatch,lt=at.useSelect,ct=function(){var e=rt(!1),t=Object(s.a)(e,2),r=t[0],n=t[1],a=rt(!1),o=Object(s.a)(a,2),l=o[0],c=o[1],p=rt(null),d=Object(s.a)(p,2),b=d[0],m=d[1],y=lt((function(e){return e("presto-player/bunny-popup").isPrivate()})),v=lt((function(e){return e("presto-player/bunny-popup").ui("selectedId")})),h=lt((function(e){return e("presto-player/bunny-popup").videos()}));nt((function(){m(v?h.find((function(e){return e.guid===v})):null)}),[h,v]);var O=function(){var e=Object(i.a)(u.a.mark((function e(){return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,wp.apiFetch({path:"presto-player/v1/bunny/stream/videos/".concat(b.id),method:"DELETE",data:{type:y?"private":"public"}});case 2:ot("presto-player/bunny-popup").removeVideo(b),ot("presto-player/bunny-popup").setUI("selectedId",null),c(!1),n(!1);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),j=Object(g.a)(we||(we=Object(f.a)(["\n margin-top: 5px;\n "])));if(!b)return"";var w,_,E,R,k=function(e){return y?null==e?void 0:e.webPURLSigned:null==e?void 0:e.webPURL};return b&&Object(g.b)("div",{className:"presto-player__media-modal-sidebar-content"},Object(g.b)(Xe,{css:Object(g.a)(_e||(_e=Object(f.a)(["\n position: relative;\n "])))},Object(g.b)($e,{key:b.id},He(b)&&k(b)&&Object(g.b)("img",{src:k(b),css:{maxWidth:"100%"}})),Object(g.b)(Qe,{isSmall:!0,isPrimary:!0,isBusy:!He(b),css:Object(g.a)(Ee||(Ee=Object(f.a)(["\n ","\n top: 8px;\n right: 8px;\n font-size: 11px;\n color: #ffffff;\n padding: 2px 10px;\n border-radius: 9999px;\n "])),He(b)?"position: absolute;":"")},Ye(b))),Object(g.b)(Xe,null,Object(g.b)(Xe.VisualLabel,null,Ze("Name","presto-player")),Object(g.b)("h3",{css:j},b.title)),!(null==b||!b.visibility)&&Object(g.b)(Xe,null,Object(g.b)(Xe.VisualLabel,null,Ze("Visibility","presto-player")),Object(g.b)("h3",{css:j},b.visibility)),Object(g.b)(Xe,null,Object(g.b)(Xe.VisualLabel,null,Ze("Size","presto-player")),Object(g.b)("h3",{css:j},qe((null==b?void 0:b.size)||0))),Object(g.b)(Xe,null,Object(g.b)(Xe.VisualLabel,null,Ze("Length","presto-player")),Object(g.b)("h3",{css:j},Ge(null==b?void 0:b.length))),Object(g.b)(Xe,null,Object(g.b)(Xe.VisualLabel,null,Ze("Created","presto-player")),Object(g.b)("h3",{css:j},(w=null==b?void 0:b.created_at,_=(w=new Date(w)).getHours(),E=w.getMinutes(),R=_>=12?"pm":"am",_=(_%=12)||12,E=E<10?"0"+E:E,w.getDate()+"-"+(w.getMonth()+1)+"-"+w.getFullYear()+" at "+_+":"+E+R))),Object(g.b)(Xe,null,r?Object(g.b)(Je,null,Object(g.b)(et,null,Object(g.b)("p",null,Object(g.b)("strong",null,Ze("Are you sure?","presto-player"))),Object(g.b)("p",null,Ze("Are you sure you want to delete this video?","presto-player")),Object(g.b)(Qe,{isDestructive:!0,disabled:l,isBusy:l,onClick:function(e){e.preventDefault(),O(),c(!0)}},Ze("Yes","presto-player")),Object(g.b)(Qe,{onClick:function(){return n(!1)}},Ze("Cancel","presto-player")))):Object(g.b)(Qe,{isDestructive:!0,onClick:function(){n(!r)}},Ze("Delete video","presto-player"))))},it=function(e){var t=e.className,r=e.progress;return Object(g.b)("div",{className:t},Object(g.b)("div",{css:Object(g.a)(Re||(Re=Object(f.a)(["\n height: 100%;\n background-color: var(--wp-admin-theme-color, #007cba);\n "]))),style:{width:"".concat(r,"%")}}))},st=function(e){var t=e.progress;return Object(g.b)("div",{css:Object(g.a)(ke||(ke=Object(f.a)(["\n max-width: 100%;\n object-fit: cover;\n width: 100%;\n height: 140px;\n background-color: #222;\n color: white;\n text-decoration: none;\n text-align: center;\n box-sizing: border-box;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n "])))},Object(g.b)(it,{progress:t,css:Object(g.a)(Pe||(Pe=Object(f.a)(["\n width: 100%;\n border-radius: 0px;\n margin: 0 15px;\n background-color: #e3e3e3;\n height: 3px;\n "])))}))},pt=function(e){var t=e.thumbnail,r=e.title,n=e.footer,a=e.badge,o=e.before,l=e.after;return Object(g.b)("div",Object.assign({className:"presto-player__video-thumb",css:Object(g.a)(Ce||(Ce=Object(f.a)(["\n cursor: pointer;\n user-select: none;\n display: inline-block;\n position: relative;\n margin-right: 20px;\n font-weight: bold;\n margin-bottom: 20px;\n width: 220px;\n flex: 0 0 220px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n overflow: hidden;\n "])))},e),!!o&&o,!!t&&t,Object(g.b)("div",{css:Object(g.a)(xe||(xe=Object(f.a)(["\n margin: 14px;\n "])))},!!a&&Object(g.b)("div",{css:Object(g.a)(Se||(Se=Object(f.a)(["\n position: absolute;\n top: 8px;\n right: 8px;\n "])))},a),!!r&&Object(g.b)("span",{css:Object(g.a)(Ne||(Ne=Object(f.a)(["\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n width: 100%;\n max-width: 100%;\n display: inline-block;\n margin-bottom: 7px;\n font-size: 13px;\n "])))},r),!!n&&Object(g.b)("div",{css:Object(g.a)(Te||(Te=Object(f.a)(["\n font-size: 12px;\n opacity: 0.75;\n margin-bottom: 7px;\n "])))},n)),!!l&&l)},ut=wp.components,dt=ut.Icon,bt=ut.Button,mt=wp.element,yt=mt.useEffect,vt=mt.useState,ft=wp.data,ht=ft.useSelect,Ot=ft.dispatch,gt=function(e){var t=e.video,r=vt(),n=Object(s.a)(r,2),a=n[0],o=n[1],l=ht((function(e){return e("presto-player/bunny-popup").isPrivate()})),c=ht((function(e){return e("presto-player/bunny-popup").ui("selectedId")}));yt((function(){o(c?c===t.guid:null)}),[c]);return Object(g.b)(pt,{onClick:function(){Ot("presto-player/bunny-popup").setUI("selectedId",null==t?void 0:t.guid)},css:Object(g.a)(Ue||(Ue=Object(f.a)(["\n ","\n border: 1px solid\n ",";\n "])),a&&"box-shadow: 0 0 0 0px #fff, 0 0 0 3px var(--wp-admin-theme-color, #007cba);",a?"var(--wp-admin-theme-color, #007cba)":"#e0e0e0"),thumbnail:function(){if(t.status<3)return Object(g.b)(st,{progress:t.encodeProgress});var e=l?null==t?void 0:t.thumbnailURLSigned:null==t?void 0:t.thumbnailURL;return e?Object(g.b)("img",{css:Object(g.a)(Be||(Be=Object(f.a)(["\n max-width: 100%;\n object-fit: cover;\n width: 100%;\n height: 140px;\n display: block;\n "]))),src:e}):void 0}(),badge:Object(g.b)(bt,{isSmall:!0,isPrimary:!0,isBusy:!He(t),css:Object(g.a)(De||(De=Object(f.a)(["\n font-size: 11px;\n color: #ffffff;\n padding: 2px 10px;\n border-radius: 9999px;\n "])))},Ye(t)),title:t.title,footer:Object(g.b)("div",{css:Object(g.a)(Ae||(Ae=Object(f.a)(["\n display: flex;\n align-items: center;\n "])))},Object(g.b)("span",{css:Object(g.a)(Le||(Le=Object(f.a)(["\n margin-right: 10px;\n display: flex;\n align-items: center;\n "])))},Object(g.b)(dt,{css:Object(g.a)(Ie||(Ie=Object(f.a)(["\n width: 14px;\n height: 14px;\n font-size: 14px;\n margin-right: 5px;\n opacity: 0.5;\n "]))),icon:"clock",size:14}),Object(g.b)("span",null,Ge(t.length))),Object(g.b)("span",{css:Object(g.a)(Fe||(Fe=Object(f.a)(["\n display: flex;\n align-items: center;\n "])))},Object(g.b)(dt,{css:Object(g.a)(Ve||(Ve=Object(f.a)(["\n opacity: 0.5;\n width: 14px;\n height: 14px;\n font-size: 14px;\n margin-right: 5px;\n "]))),icon:"database",size:14}),Object(g.b)("span",null,qe(t.storageSize)))),after:3===t.status?Object(g.b)(it,{css:Object(g.a)(Me||(Me=Object(f.a)(["\n width: 100%;\n border-radius: 0px;\n margin: 0;\n background-color: #e3e3e3;\n height: 3px;\n "]))),progress:t.encodeProgress}):""})},jt=wp.components,wt=jt.Flex,_t=jt.FlexBlock,Et=jt.Spinner,Rt=function(e){var t=e.className;return Object(g.b)(wt,{className:t},Object(g.b)(_t,{css:{textAlign:"center"}},Object(g.b)(Et,null)))};function kt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Pt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?kt(Object(r),!0).forEach((function(t){Object(c.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):kt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var Ct,xt,St,Nt,Tt,Dt,Bt,At,Lt,It,Ft=wp.i18n.__,Vt=wp.element,Ut=Vt.useState,Mt=Vt.useEffect,zt=Vt.Fragment,Wt=wp.components,Ht=Wt.Flex,Yt=Wt.FormFileUpload,Gt=Wt.Notice,qt=wp.data,Zt=qt.dispatch,Kt=qt.useSelect,Qt=function(){var e=Ut(!1),t=Object(s.a)(e,2),r=t[0],n=t[1],a=Ut(""),o=Object(s.a)(a,2),l=o[0],c=o[1],p=Kt((function(e){return e("presto-player/bunny-popup").videosFetched()})),d=Kt((function(e){return e("presto-player/bunny-popup").videos()})),b=Kt((function(e){return e("presto-player/bunny-popup").requestType()})),m=Kt((function(e){return e("presto-player/bunny-popup").currentCollection()}));Mt((function(){p||y()}),[p]),Mt((function(){var e=setInterval((function(){y({sync:!0})}),3e3);return function(){return clearInterval(e)}}),[p]);var y=function(){var e=Object(i.a)(u.a.mark((function e(){var t,r,n,a,o=arguments;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.length>0&&void 0!==o[0]?o[0]:{sync:!1},r=t.sync,e.prev=1,e.next=4,wp.apiFetch({path:wp.url.addQueryArgs("presto-player/v1/bunny/stream/videos",Pt(Pt({type:b},null!=m&&m.guid?{collection:null==m?void 0:m.guid}:{}),{},{items_per_page:500}))});case 4:n=e.sent,Zt("presto-player/bunny-popup").setVideos(null==n?void 0:n.items),c(""),e.next=15;break;case 9:if(e.prev=9,e.t0=e.catch(1),401!==(null===e.t0||void 0===e.t0||null===(a=e.t0.data)||void 0===a?void 0:a.status)){e.next=14;break}return c(Ft("Please wait. Pullzone cache is clearing. This may take a minute or two...")),e.abrupt("return");case 14:r||Zt("presto-player/bunny-popup").addError(e.t0.message);case 15:return e.prev=15,Zt("presto-player/bunny-popup").setVideosFetched(!0),e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[1,9,15,18]])})));return function(){return e.apply(this,arguments)}}();return l?Object(g.b)(Gt,{status:"warning",isDismissible:!1},Object(g.b)("div",{css:{display:"flex",alignItems:"center"}},Object(g.b)(Rt,{css:{flex:1}}),l)):p?Object(g.b)(zt,null,d&&d.length?Object(g.b)("div",null,!(null!=m&&m.guid)&&Object(g.b)("h2",null,Ft("Videos","presto-player")),d.map((function(e){if((null==e?void 0:e.collectionId)===((null==m?void 0:m.guid)||""))return Object(g.b)(gt,{key:e.id,video:e,onClick:function(){n(r.guid===e.guid?{}:e)},selected:r.guid===e.guid})}))):Object(g.b)(Ht,{align:"center",justify:"center",css:Object(g.a)(ze||(ze=Object(f.a)(["\n height: 100%;\n text-align: center;\n "])))},Object(g.b)("div",null,Object(g.b)("h2",null,Ft("Drop video files here to upload","presto-player")),Object(g.b)("p",null,Ft("or browse for a video","presto-player")),Object(g.b)(Yt,{isSecondary:!0,accept:"video/mp4,video/x-m4v,video/*",onChange:function(e){e.target.files&&(Zt("presto-player/bunny-popup").addUploads(e.target.files),jQuery(e.target).val(null))}},Ft("Upload New Video","presto-player"))))):Object(g.b)(Rt,{css:{flex:1}})},Xt=wp.components.Icon,$t=wp.data.dispatch,Jt=function(e){var t=e.collection;return Object(g.b)(pt,{onClick:function(e){e.preventDefault(),$t("presto-player/bunny-popup").setCollectionRequest(t),$t("presto-player/bunny-popup").setVideosFetched(!1)},title:Object(g.b)("div",null,Object(g.b)(Xt,{icon:"open-folder",css:Object(g.a)(Ct||(Ct=Object(f.a)(["\n color: var(--wp-admin-theme-color);\n margin-right: 10px;\n "])))}),t.name),footer:Object(g.b)("div",null,t.videoCount," Videos")})},er=wp.i18n.__,tr=wp.element.useEffect,rr=wp.data,nr=rr.useSelect,ar=rr.dispatch,or=function(){var e=nr((function(e){return e("presto-player/bunny-popup").collections()})),t=nr((function(e){return e("presto-player/bunny-popup").requestType()})),r=function(){var e=Object(i.a)(u.a.mark((function e(){var r,n;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,wp.apiFetch({path:wp.url.addQueryArgs("presto-player/v1/bunny/stream/collections",{type:t})});case 3:r=e.sent,ar("presto-player/bunny-popup").setCollections(null==r?void 0:r.items),e.next=12;break;case 7:if(e.prev=7,e.t0=e.catch(0),401!==(null===e.t0||void 0===e.t0||null===(n=e.t0.data)||void 0===n?void 0:n.status)){e.next=11;break}return e.abrupt("return");case 11:ar("presto-player/bunny-popup").addError(e.t0.message);case 12:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(){return e.apply(this,arguments)}}();return tr((function(){r()}),[]),!!e.length&&Object(g.b)("div",null,Object(g.b)("h2",null,er("Collections","presto-player")),Object(g.b)("div",{css:Object(g.a)(xt||(xt=Object(f.a)(["\n display: flex;\n align-items: stretch;\n overflow: auto;\n "])))},e.map((function(e){return Object(g.b)(Jt,{collection:e,key:e.guid})}))))},lr=wp.i18n.__,cr=wp.components,ir=cr.Button,sr=cr.TextControl,pr=cr.Modal,ur=cr.BaseControl,dr=wp.element,br=dr.useState,mr=dr.Fragment,yr=wp.data,vr=yr.dispatch,fr=yr.useSelect,hr=function(){var e=br(""),t=Object(s.a)(e,2),r=t[0],n=t[1],a=br(!1),o=Object(s.a)(a,2),l=o[0],c=o[1],p=fr((function(e){return e("presto-player/bunny-popup").requestType()})),d=fr((function(e){return e("presto-player/bunny-popup").ui("createCollection")})),b=function(e){vr("presto-player/bunny-popup").setUI("createCollection",e)},m=function(){var e=Object(i.a)(u.a.mark((function e(){var t;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/bunny/stream/collections",method:"POST",data:{type:p,name:r}});case 4:t=e.sent,vr("presto-player/bunny-popup").addCollection(t),vr("presto-player/bunny-popup").setCollectionRequest(t),vr("presto-player/bunny-popup").setVideosFetched(!1),n(""),b(!1),e.next=15;break;case 12:e.prev=12,e.t0=e.catch(1),console.error(e.t0);case 15:return e.prev=15,c(!1),e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[1,12,15,18]])})));return function(){return e.apply(this,arguments)}}();return Object(g.b)(mr,null,Object(g.b)(ir,{isSecondary:!0,onClick:function(){return b(!0)}},lr("Create Collection","presto-player")),d&&Object(g.b)(pr,{overlayClassName:"presto-modal",title:"Create New Collection",shouldCloseOnClickOutside:!1,isDismissible:!1},Object(g.b)(sr,{css:Object(g.a)(St||(St=Object(f.a)(["\n margin-bottom: 15px;\n "]))),tabIndex:"0",placeholder:lr("Enter a collection name","presto-player"),value:r,onChange:function(e){return n(e)}}),Object(g.b)(ur,null,Object(g.b)(ir,{isBusy:l,disabled:l,isPrimary:!0,onClick:function(){m()}},lr("Create","presto-player"))," ",Object(g.b)(ir,{onClick:function(){return b(!1)}},lr("Cancel","presto-player")))))},Or=wp.i18n.__,gr=wp.components,jr=gr.Flex,wr=gr.FlexBlock,_r=gr.FlexItem,Er=(gr.Button,gr.FormFileUpload),Rr=wp.data.dispatch,kr=function(e){var t=e.afterUpload;return Object(g.b)(jr,null,Object(g.b)(wr,null,Object(g.b)(jr,{justify:"flex-start"},Object(g.b)(Er,{multiple:!0,isPrimary:!0,accept:"video/mp4,video/x-m4v,video/*",onChange:function(e){e.target.files&&(Rr("presto-player/bunny-popup").addUploads(e.target.files),jQuery(e.target).val(null))}},Or("Upload Videos","presto-player"))," ",Object(g.b)(hr,null),!!t&&t)),Object(g.b)(_r,null))},Pr=wp.i18n.__,Cr=wp.components.Button,xr=wp.element,Sr=xr.useState,Nr=xr.useEffect,Tr=wp.data.useSelect,Dr=function(e){var t=e.onChoose,r=Sr(null),n=Object(s.a)(r,2),a=n[0],o=n[1],l=Sr(!1),c=Object(s.a)(l,2),i=c[0],p=c[1],u=Tr((function(e){return e("presto-player/bunny-popup").ui("selectedId")})),d=Tr((function(e){return e("presto-player/bunny-popup").videos()}));return Nr((function(){o(u?d.find((function(e){return e.guid===u})):null)}),[d,u]),Nr((function(){3==(null==a?void 0:a.status)&&null!=a&&a.availableResolutions.length?p(!0):p((null==a?void 0:a.status)>3&&(null==a?void 0:a.status)<5)}),[null==a?void 0:a.availableResolutions]),React.createElement(Cr,{isPrimary:!0,disabled:!i,onClick:function(){return t(a)}},null!=a&&a.id&&!i?Pr("Please wait, video is encoding...","presto-player"):Pr("Choose","presto-player"))},Br=wp.components.Icon,Ar=function(e){var t=e.children,r=e.onClick;return Object(g.b)("span",{onClick:r,css:Object(g.a)(Nt||(Nt=Object(f.a)(["\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n color: var(--wp-admin-theme-color, #007cba);\n padding: 6px 0;\n "])))},Object(g.b)(Br,{css:Object(g.a)(Tt||(Tt=Object(f.a)(["\n width: 14px;\n height: 14px;\n font-size: 14px;\n margin-right: 5px;\n "]))),icon:"arrow-left-alt",size:14}),Object(g.b)("span",null,t))},Lr=wp.i18n.__,Ir=wp.element.useState,Fr=wp.data,Vr=Fr.dispatch,Ur=Fr.useSelect,Mr=wp.components,zr=Mr.Button,Wr=Mr.Modal,Hr=Mr.BaseControl,Yr=function(){var e=Ir(!1),t=Object(s.a)(e,2),r=t[0],n=t[1],a=Ir(!1),o=Object(s.a)(a,2),l=o[0],c=o[1],p=Ir(""),d=Object(s.a)(p,2),b=(d[0],d[1],Ur((function(e){return e("presto-player/bunny-popup").currentCollection()}))),m=Ur((function(e){return e("presto-player/bunny-popup").requestType()})),y=function(){var e=Object(i.a)(u.a.mark((function e(){return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c(!0),e.prev=1,e.next=4,wp.apiFetch({path:"presto-player/v1/bunny/stream/collections/".concat(null==b?void 0:b.guid),method:"DELETE",data:{type:m}});case 4:n(!1),Vr("presto-player/bunny-popup").setCollectionRequest(""),Vr("presto-player/bunny-popup").setVideosFetched(!1),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(1),n(!1),Vr("presto-player/bunny-popup").addError(e.t0.message);case 13:return e.prev=13,c(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[1,9,13,16]])})));return function(){return e.apply(this,arguments)}}();return Object(g.b)("div",{css:Object(g.a)(Dt||(Dt=Object(f.a)(["\n margin-bottom: 2em;\n display: flex;\n align-items: center;\n justify-content: space-between;\n "])))},Object(g.b)("div",null,Object(g.b)(Ar,{onClick:function(){Vr("presto-player/bunny-popup").setCollectionRequest(""),Vr("presto-player/bunny-popup").setVideosFetched(!1)}},Lr("Back To Main Folder","presto-player")),Object(g.b)("h2",null,b.name)),Object(g.b)(zr,{isDestructive:!0,onClick:function(){return n(!0)}},Lr("Delete Collection","presto-player")),r&&Object(g.b)(Wr,{shouldCloseOnClickOutside:!1,overlayClassName:"presto-modal",title:"Delete Collection",onRequestClose:function(){return n(!1)}},Object(g.b)("h2",null,Lr("Are you sure you want to delete the collection? ","presto-player")),Object(g.b)("p",null,Lr("This will also delete all videos inside of the collection.","presto-player")),Object(g.b)(Hr,null,Object(g.b)(zr,{isDestructive:!0,disabled:l,isBusy:l,onClick:y},Lr("Delete","presto-player"))," ",Object(g.b)(zr,{onClick:function(){return n(!1)}},Lr("Cancel","presto-player")))))};function Gr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function qr(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Gr(Object(r),!0).forEach((function(t){Object(c.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Gr(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}wp.components.Icon;var Zr,Kr,Qr,Xr,$r,Jr,en,tn,rn,nn,an,on,ln,cn=wp.element,sn=cn.useState,pn=cn.useEffect,un=(cn.useContext,wp.data),dn=un.useSelect,bn=(un.dispatch,wp.i18n.__),mn=function(e){var t,r=e.file,n=e.name,a=e.onComplete,o=sn(0),l=Object(s.a)(o,2),c=l[0],p=l[1],d=sn(bn("Uploading","presto-player")),b=Object(s.a)(d,2),m=(b[0],b[1]),y=sn(""),h=Object(s.a)(y,2),O=h[0],j=h[1],w=sn(!1),_=Object(s.a)(w,2),E=_[0],R=_[1],k=dn((function(e){return e("presto-player/bunny-popup").requestType()})),P=dn((function(e){return e("presto-player/bunny-popup").currentCollection()})),C=function(){var e=Object(i.a)(u.a.mark((function e(){return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:m(bn("Uploading","presto-player")),t=v({file:null!=r&&r[0]?null==r?void 0:r[0]:r,path:"presto-player/v1/bunny/stream/upload",onProgress:function(e){p(e)},onComplete:x,onError:function(e){j(e.message),m(bn("Error","presto-player")),p(0)}});case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),x=function(){var e=Object(i.a)(u.a.mark((function e(t){var r,n,a;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.path,n=t.name,m(bn("Creating","presto-player")),e.prev=2,e.next=5,wp.apiFetch({path:"presto-player/v1/bunny/stream/videos",method:"POST",data:qr({type:k,name:n},null!=P&&P.guid?{collection:P.guid}:{})});case 5:a=e.sent,R(!0),S({path:r,video:a}),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(2),j(e.t0.message);case 13:return e.prev=13,p(0),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[2,10,13,16]])})));return function(t){return e.apply(this,arguments)}}(),S=function(){var e=Object(i.a)(u.a.mark((function e(t){var r,n;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.path,n=t.video,e.next=3,wp.apiFetch({path:"presto-player/v1/bunny/stream/store",method:"POST",data:{type:k,path:r,guid:n.guid}});case 3:a();case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return pn((function(){return C(),function(){t&&t.cancel()}}),[]),E?"":Object(g.b)("div",{css:Object(g.a)(Bt||(Bt=Object(f.a)(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n animation: components-button__busy-animation 2500ms infinite linear;\n opacity: 1;\n padding: 6px 12px;\n border-radius: 99999px;\n border: 1px solid #dddddd;\n background-size: 100px 100%;\n background-image: linear-gradient(\n -45deg,\n #ffffff 33%,\n #f3f3f3 33%,\n #f3f3f3 70%,\n #ffffff 70%\n );\n "])))},Object(g.b)("div",{css:Object(g.a)(At||(At=Object(f.a)(["\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n max-width: 150px;\n text-overflow: ellipsis;\n font-weight: bold;\n "])))},!!O&&O,!!n&&n," ",r.name,"..."),Object(g.b)("div",{css:Object(g.a)(Lt||(Lt=Object(f.a)(["\n display: flex;\n align-items: center;\n "])))},Object(g.b)(it,{css:Object(g.a)(It||(It=Object(f.a)(["\n width: 50px;\n height: 3px;\n margin: 0 5px;\n background: #e3e3e3;\n border-radius: 9999px;\n overflow: hidden;\n "]))),progress:c})))},yn=wp.data.useSelect,vn=function(e){var t=e.removeUpload,r=(e.isPrivate,yn((function(e){return e("presto-player/bunny-popup").uploads()})));return r.length?Object(g.b)("div",{css:Object(g.a)(Zr||(Zr=Object(f.a)(["\n overflow: auto;\n display: flex;\n align-items: center;\n position: relative;\n "])))},r.length&&r.map((function(e){return Object(g.b)(mn,{css:Object(g.a)(Kr||(Kr=Object(f.a)(["\n margin-right: 0px;\n "]))),file:e,onComplete:function(){return t(e)}})}))):""},fn=wp.i18n.__,hn=wp.components.Modal,On=function(e){var t=e.onClose,r=e.title,n=e.header,a=e.error,o=e.mainContent,l=e.sidebar,c=e.footer;return Object(g.b)(hn,{title:r||fn("Add Media","presto-player"),onRequestClose:t,css:Object(g.a)(Qr||(Qr=Object(f.a)(["\n width: 100%;\n height: 100%;\n max-width: calc(100% - 32px);\n max-height: calc(100% - 32px);\n\n .components-modal__content {\n display: flex;\n flex-direction: column;\n }\n "]))),overlayClassName:"presto-player__modal-overlay"},Object(g.b)("div",{css:Object(g.a)(Xr||(Xr=Object(f.a)(['\n @media screen and (min-width: 780px) {\n margin: -24px;\n display: grid;\n flex: 1;\n max-height: calc(100vh - 68px);\n grid-template-columns: 1fr 1fr minmax(0px, 267px);\n grid-template-rows: minmax(50px, auto) 1fr 60px;\n grid-template-areas:\n "header header sidebar"\n "main main sidebar"\n "footer footer footer";\n overflow: hidden;\n }\n ']))),"data-cy":"media-modal"},Object(g.b)("div",{css:Object(g.a)($r||($r=Object(f.a)(["\n grid-area: header;\n padding: 24px 24px 12px 24px;\n "])))},Object(g.b)("div",{css:Object(g.a)(Jr||(Jr=Object(f.a)(["\n display: flex;\n align-items: center;\n\n > * {\n margin-right: 10px;\n }\n "])))},n),a),Object(g.b)("div",{css:Object(g.a)(en||(en=Object(f.a)(["\n grid-area: main;\n display: grid;\n overflow: hidden;\n\n .components-drop-zone__provider {\n overflow: hidden;\n display: grid;\n }\n\n .components-drop-zone {\n z-index: 99;\n }\n "])))},o),Object(g.b)("div",{css:Object(g.a)(tn||(tn=Object(f.a)(["\n display: none;\n grid-area: sidebar;\n padding: 0 16px;\n z-index: 75;\n background: #f3f3f3;\n border-left: 1px solid #ddd;\n overflow: auto;\n\n @media screen and (min-width: 780px) {\n display: block;\n }\n\n .sidebar-content {\n padding: 16px 0;\n }\n "])))},l),Object(g.b)("div",{css:Object(g.a)(rn||(rn=Object(f.a)(["\n grid-area: footer;\n border-top: 1px solid #ddd;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 8px;\n "])))},c)))},gn=wp.i18n.__,jn=wp.components,wn=(jn.Button,jn.DropZone),_n=jn.DropZoneProvider,En=jn.Notice,Rn=wp.element,kn=(Rn.useState,Rn.useEffect),Pn=(Rn.Fragment,wp.data),Cn=Pn.dispatch,xn=Pn.useSelect,Sn=function(e){var t=e.onClose,r=e.onChoose,n=xn((function(e){return e("presto-player/bunny-popup").isPrivate()})),a=xn((function(e){return e("presto-player/bunny-popup").uploads()})),o=xn((function(e){return e("presto-player/bunny-popup").currentCollection()})),l=xn((function(e){return e("presto-player/bunny-popup").errors()}));kn((function(){Cn("presto-player/bunny-popup").setVideosFetched(!1),Cn("presto-player/bunny-popup").setCollections([]),Cn("presto-player/bunny-popup").setVideos([])}),[]);var c=function(e){Cn("presto-player/bunny-popup").addUploads(e)},i=gn(n?"Private Stream Library":"Public Stream Library","presto-player"),s=Object(g.b)(kr,{afterUpload:Object(g.b)(vn,{uploads:a,removeUpload:function(e){Cn("presto-player/bunny-popup").removeUpload(e)},isPrivate:n})}),p=Object(g.b)(ct,null),u=Object(g.b)(Dr,{onChoose:r});return Object(g.b)(On,{title:i,header:s,mainContent:Object(g.b)(_n,{css:Object(g.a)(nn||(nn=Object(f.a)(["\n overflow: auto;\n display: flex;\n flex-direction: column;\n "])))},Object(g.b)("div",{css:Object(g.a)(an||(an=Object(f.a)(["\n padding: 12px 24px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n "])))},!!l.length&&l.map((function(e){return Object(g.b)(En,{css:Object(g.a)(on||(on=Object(f.a)(["\n margin: 0 0 20px 0;\n "]))),status:"error",onRemove:function(){return Cn("presto-player/bunny-popup").removeError(e)}},e)})),o?Object(g.b)(Yr,null):Object(g.b)(or,null),Object(g.b)("div",{css:Object(g.a)(ln||(ln=Object(f.a)(["\n display: flex;\n align-items: stretch;\n "])))},Object(g.b)(Qt,null)),Object(g.b)(wn,{label:"Drop files",onFilesDrop:c}))),onClose:function(){a.length?confirm("Discard your uploads?")&&(t(),Cn("presto-player/bunny-popup").setUploads([])):t()},footer:u,sidebar:p})},Nn=wp.i18n.__,Tn=wp.element.useEffect,Dn=wp.data.dispatch,Bn=function(e){var t=e.closePopup,r=e.onSelect,n=e.isPrivate;return Tn((function(){Dn("presto-player/bunny-popup").setIsPrivate(n)}),[n]),React.createElement(Sn,{onClose:t,onChoose:function(e){e.url=e.playlistURL,e.thumbnail=e.thumbnailURL,e.preview=e.webPURL,r(e)},header:Nn(n?"Private Stream Library":"Public Stream Library","presto-player"),title:Nn(n?"Private Video Stream":"Public Video Stream","presto-player")})},An=wp.i18n.__,Ln=wp.element.useState,In="".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"bunny/"),Fn=wp.i18n.__,Vn=wp.element.useState,Un="".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"bunny/stream/"),Mn=wp.i18n.__,zn=wp.components,Wn=zn.Button,Hn=zn.TextControl,Yn=zn.Placeholder,Gn=zn.Flex,qn=zn.FlexBlock,Zn=zn.ExternalLink,Kn=zn.Spinner,Qn=zn.FlexItem,Xn=zn.Notice,$n=wp.element.useEffect,Jn=function(e){var t=e.onRefetch,r=e.type,n=e.autoSubmit,a="stream"===r?function(e){var t=Vn(""),r=Object(s.a)(t,2),n=r[0],a=r[1],o=Vn(""),l=Object(s.a)(o,2),c=l[0],p=l[1],d=Vn(!1),b=Object(s.a)(d,2),m=b[0],y=b[1],v=Vn(0),f=Object(s.a)(v,2),h=f[0],O=f[1],g=Vn(""),j=Object(s.a)(g,2),w=j[0],_=j[1],E=function(e){return e.includes("Authorization has been denied")?"Your API key is incorrect. Please double-check to make sure you've copied it correctly.":e.includes("localhost")?"You cannot use a CDN on a local site. Please use Bunny.net on a live, publicly accessible site.":e};return{saveKey:function(){var t=Object(i.a)(u.a.mark((function t(){var r,a;return u.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return _(""),t.prev=1,y(!0),O(0),p(Fn("Validating API Key...","presto-player")),t.next=7,wp.apiFetch({url:"".concat(Un,"api-key"),method:"POST",data:{api_key:n}});case 7:if(r=t.sent,r.success){t.next=11;break}throw{message:"Could not save the API key. Please double check it to make sure it's correct."};case 11:t.next=18;break;case 13:return t.prev=13,t.t0=t.catch(1),O(0),_(null!==t.t0&&void 0!==t.t0&&t.t0.message?E(t.t0.message):"Something went wrong. Please try again"),t.abrupt("return");case 18:return t.prev=18,O(1),y(!1),p(""),t.finish(18);case 23:return t.prev=23,y(!0),p(Fn("Setting up public video library. This make take a few moments...","presto-player")),t.next=28,wp.apiFetch({url:"".concat(Un,"library"),method:"POST",data:{type:"public"}});case 28:a=t.sent,a.id,t.next=37;break;case 32:return t.prev=32,t.t1=t.catch(23),O(0),_(null!==t.t1&&void 0!==t.t1&&t.t1.message?E(t.t1.message):"Something went wrong. Please try again"),t.abrupt("return");case 37:return t.prev=37,O(2),y(!1),p(""),t.finish(37);case 42:return t.prev=42,y(!0),p(Fn("Setting up private video library. This make take a few moments...","presto-player")),t.next=47,wp.apiFetch({url:"".concat(Un,"library"),method:"POST",data:{type:"private"}});case 47:t.next=54;break;case 49:return t.prev=49,t.t2=t.catch(42),O(0),_(null!==t.t2&&void 0!==t.t2&&t.t2.message?E(t.t2.message):"Something went wrong. Please try again"),t.abrupt("return");case 54:return t.prev=54,O(2),y(!1),p(""),t.finish(54);case 59:e();case 60:case"end":return t.stop()}}),t,null,[[1,13,18,23],[23,32,37,42],[42,49,54,59]])})));return function(){return t.apply(this,arguments)}}(),setApikey:a,step:h,saveMessage:c,saving:m,error:w,totalSteps:3}}(t):function(e){var t=Ln(""),r=Object(s.a)(t,2),n=r[0],a=r[1],o=Ln(""),l=Object(s.a)(o,2),c=l[0],p=l[1],d=Ln(!1),b=Object(s.a)(d,2),m=b[0],y=b[1],v=Ln(0),f=Object(s.a)(v,2),h=f[0],O=f[1],g=Ln(""),j=Object(s.a)(g,2),w=j[0],_=j[1],E=function(e){return e.includes("Authorization has been denied")?"Your API key is incorrect. Please double-check to make sure you've copied it correctly.":e.includes("localhost")?"You cannot use a CDN on a local site. Please use Bunny.net on a live, publicly accessible site.":e};return{saveKey:function(){var t=Object(i.a)(u.a.mark((function t(){var r,a,o;return u.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return _(""),t.prev=1,y(!0),O(0),p(An("Validating API Key...","presto-player")),t.next=7,wp.apiFetch({url:"".concat(In,"api-key"),method:"POST",data:{api_key:n}});case 7:if(r=t.sent,r.success){t.next=11;break}throw{message:"Could not save the API key. Please double check it to make sure it's correct."};case 11:t.next=18;break;case 13:return t.prev=13,t.t0=t.catch(1),O(0),_(null!==t.t0&&void 0!==t.t0&&t.t0.message?E(t.t0.message):"Something went wrong. Please try again"),t.abrupt("return");case 18:return t.prev=18,O(1),y(!1),p(""),t.finish(18);case 23:return t.prev=23,y(!0),p(An("Setting up storage zones. This make take a few minutes...","presto-player")),t.next=28,wp.apiFetch({url:"".concat(In,"storage-zones"),method:"POST"});case 28:a=t.sent,a.id,t.next=37;break;case 32:return t.prev=32,t.t1=t.catch(23),O(0),_(null!==t.t1&&void 0!==t.t1&&t.t1.message?E(t.t1.message):"Something went wrong. Please try again"),t.abrupt("return");case 37:return t.prev=37,O(2),y(!1),p(""),t.finish(37);case 42:return t.prev=42,y(!0),p(An("Setting up pull zones. This make take a few minutes...","presto-player")),t.next=47,wp.apiFetch({url:"".concat(In,"pull-zones"),method:"POST"});case 47:o=t.sent,o.id,t.next=56;break;case 51:return t.prev=51,t.t2=t.catch(42),O(0),_(null!==t.t2&&void 0!==t.t2&&t.t2.message?E(t.t2.message):"Something went wrong. Please try again"),t.abrupt("return");case 56:return t.prev=56,O(3),y(!1),p(""),t.finish(56);case 61:e();case 62:case"end":return t.stop()}}),t,null,[[1,13,18,23],[23,32,37,42],[42,51,56,61]])})));return function(){return t.apply(this,arguments)}}(),setApikey:a,step:h,saveMessage:c,saving:m,error:w,totalSteps:3}}(t),o=a.saveKey,l=a.apikey,c=a.setApikey,p=a.saveMessage,d=a.saving,b=a.totalSteps,m=a.step,y=a.error;return $n((function(){n&&o()}),[n]),React.createElement(Yn,{label:Mn("Bunny.net Video","presto-player"),instructions:React.createElement(React.Fragment,null,Mn("Enter your Bunny.net API key, which can be found on your Bunny CDN Account page.","presto-player")," ",React.createElement(Zn,{href:"https://bunnycdn.com/dashboard/account"},Mn("Get My API Key","presto-player")))},d?React.createElement(Gn,null,React.createElement(Qn,null,React.createElement(Kn,null)),React.createElement(qn,null,p,React.createElement("progress",{className:"presto-progress",max:b,value:m,style:{width:"100%"}}))):React.createElement("form",{onSubmit:function(e){e.preventDefault(),o()}},y&&React.createElement(Gn,{style:{width:"100%"}},React.createElement(qn,null,React.createElement(Xn,{status:"error",isDismissible:!1},y))),React.createElement(Gn,{style:{width:"100%",maxWidth:"400px"}},React.createElement(qn,null,React.createElement(Hn,{value:l,onChange:function(e){return c(e)},className:"presto-link-placeholder-input",type:"password",autoComplete:"off",placeholder:Mn("Your Bunny.net API Key","presto-player"),required:!0})),React.createElement(Qn,null,React.createElement(Wn,{isPrimary:!0,style:{marginBottom:"8px"},type:"submit"},Mn("Next","presto-player")," →")))))},ea=r(23),ta=r(14);function ra(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function na(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ra(Object(r),!0).forEach((function(t){Object(c.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ra(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var aa=wp.components,oa=aa.Button,la=aa.Disabled,ca=aa.DropdownMenu,ia=aa.Spinner,sa=aa.Toolbar,pa=aa.withNotices,ua=aa.BaseControl,da=aa.Placeholder,ba=aa.ToggleControl,ma=wp.editor,ya=ma.BlockControls,va=ma.InspectorControls,fa=wp.i18n.__,ha=wp.compose.compose,Oa=wp.element,ga=Oa.useEffect,ja=Oa.useState,wa=Oa.Fragment,_a=wp.data.dispatch,Ea=ha([Object(m.a)(),Object(b.a)()])(pa((function(e){var t,r,n=e.attributes,a=e.setAttributes,o=e.noticeOperations,l=e.branding,c=(e.isSelected,e.presetData),p=e.createVideo,b=e.lockSave,m=e.unlockSave,v=e.onRemoveSrc,f=e.renderKey,h=e.defaultPreset,O=n.poster,g=n.src,j=n.id,w=n.tracks,_=n.visibility,E=n.previewSrc,R=n.thumbnail,k=ja(""),P=Object(s.a)(k,2),C=P[0],x=P[1],S=ja(!1),N=Object(s.a)(S,2),T=N[0],D=N[1],B=ja(""),A=Object(s.a)(B,2),L=A[0],I=A[1],F=ja({stream:!1,storage:!1}),V=Object(s.a)(F,2),U=V[0],M=V[1],z=ja(!1),W=Object(s.a)(z,2),H=W[0],G=W[1],q=ja(!1),Z=Object(s.a)(q,2),K=Z[0],Q=Z[1],X=ja(!1),$=Object(s.a)(X,2),J=($[0],$[1]),ee=ja(!1),te=Object(s.a)(ee,2),re=te[0],ne=te[1],ae=wp.data.useSelect((function(e){return e("core").canUser("read","settings")})),oe="private"===_,le=null===(t=prestoPlayerAdmin)||void 0===t||null===(r=t.bunny)||void 0===r?void 0:r.disable_legacy_storage;function ce(e){e.url?(a(na(na({src:e.url,preset:null==h?void 0:h.id},null!=e&&e.thumbnail?{thumbnail:e.thumbnail}:{}),null!=e&&e.preview?{preview:e.preview}:{})),D(!0),b(),p(na({src:e.url,type:"bunny",title:e.title},null!=e&&e.guid?{external_id:e.guid}:{})).catch((function(e){a({src:""}),console.error(e)})).finally((function(){m(),D(!1)}))):a({src:void 0,id:void 0})}ga((function(){_a("presto-player/bunny-popup").setIsPrivate("private"===_)}),[_]),ga((function(){var e,t,r,n,a,o;M({storage:null===(e=prestoPlayerAdmin)||void 0===e||null===(t=e.isSetup)||void 0===t||null===(r=t.bunny)||void 0===r?void 0:r.storage,stream:null===(n=prestoPlayerAdmin)||void 0===n||null===(a=n.isSetup)||void 0===a||null===(o=a.bunny)||void 0===o?void 0:o.stream})}),[]);var ie=function(){var e=Object(i.a)(u.a.mark((function e(){var t,r,n,a,o,l,c,i;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,wp.apiFetch({path:"wp/v2/settings"});case 3:t=e.sent,r=t.presto_player_bunny_pull_zones,n=t.presto_player_bunny_storage_zones,a=t.presto_player_bunny_stream_private,o=t.presto_player_bunny_stream_public,Q(!0),a||G(!0),c=(l=function(e){return!(null==e||!e.private_id||null==e||!e.public_id)})(r)||l(n),i=(null==a?void 0:a.pull_zone_url)&&(null==o?void 0:o.pull_zone_url),M({storage:c,stream:i}),I(c||i?"":"stream");case 15:return e.prev=15,J(!1),e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[0,,15,18]])})));return function(){return e.apply(this,arguments)}}();ga((function(){ae?ie():Q(!0)}),[ae]);var se=function(){var e=Object(i.a)(u.a.mark((function e(){var t;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!oe){e.next=7;break}return e.next=3,d(g);case 3:t=e.sent,a({previewSrc:t}),e.next=8;break;case 7:a({previewSrc:g});case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();ga((function(){se()}),[g]);var pe=function(){var e=Object(i.a)(u.a.mark((function e(){var t;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!oe){e.next=7;break}return e.next=3,d(R);case 3:(t=e.sent)&&a({previewThumbnail:t}),e.next=8;break;case 7:a({previewThumbnail:R});case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();ga((function(){pe()}),[R]);var ue=function(){var e=[];return!H&&e.push({title:U.stream?fa("Reconnect Stream","presto-player"):fa("Connect Stream","presto-player"),onClick:function(){I("stream"),ne(!1)}}),!le&&e.push({title:U.storage?fa("Reconnect Storage (Classic)","presto-player"):fa("Connect Storage (Classic)","presto-player"),onClick:function(){return I("storage")}}),React.createElement(ca,{icon:"ellipsis",label:fa("Connection Options","presto-player"),controls:e})};return T||!K?React.createElement(da,{className:"presto-player__placeholder is-loading"},React.createElement(ia,null)):"stream"===L?React.createElement(Jn,{type:"stream",autoSubmit:re,onRefetch:function(){Q(!1),ie()}}):"storage"===L?React.createElement(Jn,{type:"storage",onRefetch:function(){Q(!1),ie()}}):j?React.createElement(React.Fragment,null,React.createElement(ya,null,React.createElement(y.a,{tracks:w,onChange:function(e){a({tracks:e})}}),React.createElement(sa,null,React.createElement(oa,{onClick:function(){return v()}},fa("Replace","presto-player")))),React.createElement(va,null,React.createElement(ea.a,{setAttributes:a,attributes:n})),React.createElement("figure",{className:"wp-block-video"},React.createElement(la,null,React.createElement(ta.a,{poster:O,src:E,id:j,type:"bunny",attributes:n,setAttributes:a,preset:c,branding:l,key:f})))):React.createElement("div",null,React.createElement(da,{label:fa(oe?"Bunny.net Private Video":"Bunny.net Video","presto-player"),icon:oe?React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})):React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("polyline",{points:"8 17 12 21 16 17"}),React.createElement("line",{x1:"12",y1:"12",x2:"12",y2:"21"}),React.createElement("path",{d:"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29"})),instructions:React.createElement(React.Fragment,null,fa("Add or select a Bunny.net video","presto-player"))},React.createElement(ua,{className:"presto-player__placeholder-control"},React.createElement(ba,{label:"Private Video",help:oe?"Video is only accessible to those who are logged in.":"Video is accessible to everyone.",checked:oe,onChange:function(e){a({visibility:e?"private":"public"})}})),React.createElement(wa,null,U.stream&&React.createElement(oa,{isPrimary:!0,onClick:function(){return x("stream")}},fa(oe?"Add/Select Private Video Stream":"Add/Select Video Stream","presto-player")),!le&&U.storage&&React.createElement(oa,{isSecondary:U.stream,isPrimary:!U.stream,onClick:function(){return x("storage")}},fa(oe?"Add/Select Private Video (Classic)":"Add/Select Video (Classic)","presto-player")),!U.stream&&!H&&U.storage&&React.createElement(oa,{isSecondary:!0,onClick:function(){ne(!0),I("stream")}},fa("Enable Bunny.net Stream!","presto-player")),!!ae&&ue())),"storage"===C&&React.createElement(Y,{isPrivate:oe,closePopup:function(){return x("")},noticeOperations:o,onSelect:ce}),"stream"===C&&React.createElement(Bn,{isPrivate:oe,closePopup:function(){return x("")},noticeOperations:o,onSelect:ce}))}))),Ra=r(17);function ka(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Pa(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ka(Object(r),!0).forEach((function(t){Object(c.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ka(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var Ca=wp.i18n.__,xa="presto-player/bunny",Sa=Pa(Pa({},Ra.a),{},{attributes:Pa(Pa({},Ra.a.attributes),{thumbnail:{type:String,default:""},preview:{type:String,default:""}}),premium:!0,title:Ca("Presto Bunny.net Video","presto-player"),description:Ca("Serve video through Bunny.net CDN.","presto-player"),variations:[{name:"public",isDefault:!0,title:Ca("Presto Bunny.net Video","presto-player"),description:Ca("Serve public video through Bunny.net CDN.","presto-player"),attributes:{visibility:"public"}},{name:"private",title:Ca("Presto Bunny.net Private Video","presto-player"),icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})),description:Ca("Serve private, secure video through Bunny.net CDN.","presto-player"),attributes:{visibility:"private"}}],icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("polyline",{points:"8 17 12 21 16 17"}),React.createElement("line",{x1:"12",y1:"12",x2:"12",y2:"21"}),React.createElement("path",{d:"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29"})),edit:Ea})},function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return ot})),r.d(t,"options",(function(){return lt}));var n=r(8),a=r(5),o=r(3),l=r(1),c=r(19),i=r.n(c),s=r(16),p=r(4),u=r(13),d=r(15),b=r(25),m=window.location.href,y=function(e){var t=e.src,r=e.onChange,n=e.onSubmit,a=e.onClose;return React.createElement(b.URLPopover,{onClose:a},React.createElement("form",{className:"block-editor-media-placeholder__url-input-form",onSubmit:n},React.createElement("input",{"data-cy":"url-input",className:"block-editor-media-placeholder__url-input-field",type:"url","aria-label":Object(o.__)("URL","presto-player"),placeholder:Object(o.__)("Paste an mp3 URL","presto-player"),onChange:r,value:t}),React.createElement(p.Button,{"data-cy":"url-submit",className:"block-editor-media-placeholder__url-input-submit-button",icon:"editor-break",label:Object(o.__)("Apply","presto-player"),type:"submit"})))};var v=Object(p.withFilters)("editor.MediaPlaceholder")((function(e){var t=e.value,r=void 0===t?{}:t,n=e.allowedTypes,a=void 0===n?[]:n,c=e.className,v=e.icon,f=e.url,h=void 0===f||f,O=e.labels,g=void 0===O?{}:O,j=e.mediaPreview,w=e.notices,_=e.isAppender,E=e.isPrivate,R=e.addToGallery,k=e.onSelect,P=e.onCancel,C=e.onSelectURL,x=e.onDoubleClick,S=e.children,N=e.allowURLs,T=Object(d.useSelect)((function(e){return(0,e("core/block-editor").getSettings)().mediaUpload}),[]),D=Object(u.useState)(""),B=Object(l.a)(D,2),A=B[0],L=B[1],I=Object(u.useState)(!1),F=Object(l.a)(I,2),V=F[0],U=F[1];Object(u.useEffect)((function(){var e;L(null!==(e=null==r?void 0:r.src)&&void 0!==e?e:"")}),[r]);var M=function(e){L(e.target.value)},z=function(){U(!0)},W=function(){U(!1)},H=function(e){e.preventDefault(),A&&C&&(C(A),W())},Y=function(e,t){var r=g.instructions,n=g.title;T||C||(r=Object(o.__)("To edit this block, you need permission to upload media.","presto-player"));var a=i()("block-editor-media-placeholder",c,{"is-appender":_});return React.createElement(p.Placeholder,{icon:v,label:n,instructions:r,className:a,notices:w,onClick:t,onDoubleClick:x,preview:j},S,e)},G=function(){return C&&React.createElement("div",{className:"block-editor-media-placeholder__url-input-container"},h&&!1===E&&React.createElement(p.Button,{className:"block-editor-media-placeholder__button",onClick:z,isPressed:V,isTertiary:!0},Object(o.__)("Audio URL","presto-player")),V&&React.createElement(y,{src:A,onChange:M,onSubmit:H,onClose:W}))};return React.createElement(b.MediaUploadCheck,{fallback:Y(G())},function(){var e=React.createElement(b.MediaUpload,{title:E?Object(o.__)("Select or Upload Private Audio","presto-player"):Object(o.__)("Select or Upload Audio","presto-player"),addToGallery:R,gallery:!1,multiple:!1,onSelect:function(e){s.a.unsetUrlParams(),k(e)},onClose:function(){s.a.unsetUrlParams()},allowedTypes:a,value:Array.isArray(r)?r.map((function(e){return e.id})):r.id,render:function(e){var t=e.open;return React.createElement(p.Button,{isPrimary:!0,onClick:function(e){e.stopPropagation(),s.a.unsetUrlParams(),E?s.a.setUrlPrivate(m):s.a.setUrlPublic(m),t()}},E?Object(o.__)("Add/Select Private Audio","presto-player"):Object(o.__)("Add/Select Audio","presto-player"))}});if(T){var t=React.createElement(React.Fragment,null,e,!!N&&G(),P&&React.createElement(p.Button,{className:"block-editor-media-placeholder__cancel-button",title:Object(o.__)("Cancel","presto-player"),isLink:!0,onClick:P},Object(o.__)("Cancel","presto-player")));return Y(t)}return Y(e)}())})),f=r(11),h=wp.i18n.__,O=wp.components,g=(O.withNotices,O.BaseControl),j=O.ToggleControl,w=O.Notice,E=["audio"],R=function(e){var t,r,n=e.attributes,o=e.setAttributes,l=e.onSelectURL,c=e.onSelect,i=e.children,s="private"===n.visibility;return React.createElement(v,(r={icon:s?React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),React.createElement("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})):React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"presto-block-icon"},React.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"})),labels:{title:h("Presto Audio","presto-player"),instructions:h("Upload a audio file, or pick one from your media library.","presto-player")},accept:"audio/*",setAttributes:o,allowedTypes:E,switcher:!0,isPrivate:s,allowURLs:!s,onSelectURL:l,onSelect:c,value:n},Object(a.a)(r,"allowURLs",!0),Object(a.a)(r,"onError",(function(){return console.log("error")})),r),React.createElement("div",{style:{width:"100%"}},React.createElement(g,{className:"presto-player__placeholder-control"},React.createElement(j,{label:React.createElement("div",null,h("Make Private","presto-player")," ",!(null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium)&&React.createElement(f.a,null)),help:h(s?"This audio is only accessible to those who are logged in.":"This audio is currently accessible to everyone.","presto-player"),checked:s,onChange:function(e){var t;null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium?o({visibility:e?"private":"public"}):Object(d.dispatch)("presto-player/player").setProModal(!0)}})),!!i&&React.createElement("div",{style:{width:"100%"}},i),!!s&&React.createElement(w,{status:"warning",isDismissible:!1},React.createElement("div",null,React.createElement("div",null,React.createElement("strong",null,h("Note","presto-player"))),h("Private audio uses php to stream your audio. Keep in mind this will use up disk space and bandwidth so it may not be an appropriate choice for some hosts.","presto-player")))))},k=r(43),P=r(30),C=r(31),x=r(41),S=r(6),N=r(7),T=r(2),D=r.n(T),B=r(9),A=r(32),L=r(0),I=r(24),F=r(14);function V(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function U(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?V(Object(r),!0).forEach((function(t){Object(a.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):V(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var M,z,W=function(e){var t,r=e.state,n=e.branding,a=e.menu,c=e.src,i=e.poster,s=e.currentTime,d=e.preload,b=e.mediaTitle,m=e.overlays,y=e.isDisabled,v=void 0===y||y,f=Object(u.useState)(1),h=Object(l.a)(f,2),O=h[0],g=h[1],j=r.email_collection,w=r.cta;Object(u.useEffect)((function(){g(O+1)}),[r.skin,r["play-large"],r.rewind,r.play,r["fast-forward"],r.progress,r["current-time"],r.mute,r.volume,r.speed,r.pip,r.fullscreen,r.captions,r.hide_logo]);var _={email:!(null==j||!j.enabled)&&React.createElement(I.b,{className:"email-overlay",slot:"player-end",headline:null==j?void 0:j.headline,style:U(U({"--presto-player-email-border-radiuss":"".concat(null==j?void 0:j.button_radius,"px"),"--plyr-color-main":(null==r?void 0:r.background_color)||(null==n?void 0:n.color)},j.button_color?{"--presto-player-button-color":"".concat(j.button_color)}:{}),j.button_text_color?{"--presto-player-button-text":"".concat(j.button_text_color)}:{}),defaultHeadline:Object(o.__)("Enter your email to play.","presto-player"),bottomText:null==j?void 0:j.bottom_text,allowSkip:null==j?void 0:j.allow_skip,skipText:Object(o.__)("Skip","presto-player"),buttonText:null==j?void 0:j.button_text,placeholder:Object(o.__)("Email address","presto-player"),i18n:window.prestoPlayer.i18n,type:"audio"}),cta:!(null==w||!w.enabled)&&React.createElement(I.a,{className:"cta-overlay",style:U(U(U({"--presto-player-button-border-radius":"".concat(w.button_radius,"px")},null!=w&&w.background_opacity?{"--presto-player-cta-background-opacity":"".concat((null==w?void 0:w.background_opacity)/100)}:{}),w.button_color?{"--presto-player-button-color":"".concat(w.button_color)}:{}),w.button_text_color?{"--presto-player-button-text":"".concat(w.button_text_color)}:{}),slot:"player-end",headline:null==w?void 0:w.headline,"bottom-text":null==w?void 0:w.bottom_text,"button-link":null==w?void 0:w.button_link,"allow-skip":100!==(null==w?void 0:w.percentage)&&(null==w?void 0:w.show_skip),borderRadius:null==w?void 0:w.border_radius,"allow-rewatch":100===(null==w?void 0:w.percentage)&&(null==w?void 0:w.show_rewatch),"skip-text":Object(o.__)("Skip","presto-player"),"show-button":null==w?void 0:w.show_button,"button-text":null==w?void 0:w.button_text,i18n:window.prestoPlayer.i18n,type:"audio"})};return React.createElement(p.Disabled,{isDisabled:v,className:"disable-player"},React.createElement("div",{className:"presto-player__wrapper"},React.createElement(F.a,{src:c||"http://something.mp3",classes:"\n ".concat("cta"===a&&!(null==w||!w.enabled)&&"cta-active"," \n ").concat("email"===a&&!(null==j||!j.enabled)&&"email-active"),preset:r,branding:n,i18n:null===(t=prestoPlayerAdmin)||void 0===t?void 0:t.i18n,preload:d,attributes:{chapters:[],poster:i,title:b},type:"audio",currentTime:s?Object(B.e)(s):"",overlays:m,key:O,adminPreview:(null==_?void 0:_[a])||""})))},H=wp.i18n.__,Y=wp.components,G=Y.ToggleControl,q=Y.BaseControl,Z=(Y.HorizontalRule,Y.__experimentalAlignmentMatrixControl,Y.SelectControl),K=function(e){var t=e.state,r=e.updateState,n=e.className;return React.createElement("div",{className:n},React.createElement(q,null,React.createElement("h3",null,H("Behavior","presto-player"))),React.createElement(q,null,React.createElement(G,{label:H("Save Play Position","presto-player"),help:H("Saves the user's play position so when they come back to the page they can continue the audio from where they left off.","presto-player"),onChange:function(e){r({save_player_position:e})},checked:t.save_player_position})),React.createElement(q,null,React.createElement(G,{label:H("Focus Mode","presto-player"),help:H("Play only when tab is visible and audio is in viewport.","presto-player"),onChange:function(e){r({play_video_viewport:e})},checked:t.play_video_viewport})),React.createElement(q,null,React.createElement(G,{label:H("Sticky On Scroll","presto-player"),help:H("Stick audios to the side of the screen when the page is scrolled and the audio is playing.","presto-player"),onChange:function(e){r({sticky_scroll:e})},checked:t.sticky_scroll})),React.createElement(q,null,React.createElement(Z,{label:H("On Audio End","presto-player"),value:t.on_video_end,options:[{value:"select",label:H("Select","presto-player")},{value:"loop",label:H("Loop","presto-player")},{value:"go-to-start",label:H("Go to start","presto-player")}],onChange:function(e){r({on_video_end:e})}})))},Q=wp.i18n.__,X=wp.components,$=X.ToggleControl,J=X.BaseControl,ee=function(e){var t=e.state,r=e.updateState,n=e.className;return React.createElement("div",{className:n},React.createElement(J,null,React.createElement("h3",null,Q("Controls","presto-player"))),React.createElement(J,{className:"presto-player__control--large-play"},React.createElement($,{label:Q("Large Play Button","presto-player"),help:Q("Adds a large play button over the top of the player.","presto-player"),onChange:function(e){r({"play-large":e})},checked:t["play-large"]})),React.createElement(J,{className:"presto-player__control--rewind"},React.createElement($,{label:Q("Rewind","presto-player"),help:Q("Adds a 10 second rewind button to the player.","presto-player"),onChange:function(e){r({rewind:e})},checked:t.rewind})),React.createElement(J,{className:"presto-player__control--play"},React.createElement($,{label:Q("Small Play Button","presto-player"),help:Q("Adds a small play button to the bottom of the player.","presto-player"),onChange:function(e){r({play:e})},checked:t.play})),React.createElement(J,{className:"presto-player__control--fast-forward"},React.createElement($,{label:Q("Fast Forward","presto-player"),help:Q("Adds a 10 second rewind button to the player.","presto-player"),onChange:function(e){r({"fast-forward":e})},checked:t["fast-forward"]})),React.createElement(J,{className:"presto-player__control--progress"},React.createElement($,{label:Q("Progress Bar","presto-player"),help:Q("Shows a seekable progress bar.","presto-player"),onChange:function(e){r({progress:e})},checked:t.progress})),React.createElement(J,{className:"presto-player__control--current-time"},React.createElement($,{label:Q("Current Time","presto-player"),help:Q("Shows the audio timestamp.","presto-player"),onChange:function(e){r({"current-time":e})},checked:t["current-time"]})),React.createElement(J,{className:"presto-player__control--volume"},React.createElement($,{label:Q("Volume","presto-player"),help:Q("Shows a volume bar.","presto-player"),onChange:function(e){r({volume:e,mute:e})},checked:t.volume})),React.createElement(J,{className:"presto-player__control--speed"},React.createElement($,{label:Q("Speed","presto-player"),help:Q("Shows playback speed controls.","presto-player"),onChange:function(e){r({speed:e})},checked:t.speed})))},te=r(12),re=function(e){var t=e.state,r=e.updateState,n=e.className;return React.createElement("div",{className:n},React.createElement(p.BaseControl,null,React.createElement("h3",null,Object(o.__)("Style","presto-player"))),React.createElement(p.BaseControl,null,React.createElement(p.RangeControl,{label:Object(o.__)("Round Corners","presto-player"),help:Object(o.__)("Player border radius size.","presto-player"),value:(null==t?void 0:t.border_radius)||0,onChange:function(e){return r({border_radius:e})},min:0,max:25})),React.createElement(p.BaseControl,null,React.createElement(p.Flex,null,React.createElement(p.BaseControl.VisualLabel,null,React.createElement("p",null,Object(o.__)("Background Color","presto-player"))),React.createElement(te.a,{color:(null==t?void 0:t.background_color)||"#000000",setColor:function(e){r({background_color:e.hex})}}))),React.createElement(p.BaseControl,null,React.createElement(p.Flex,null,React.createElement(p.BaseControl.VisualLabel,null,React.createElement("p",null,Object(o.__)("Control Color","presto-player"))),React.createElement(te.a,{color:(null==t?void 0:t.control_color)||"#000000",setColor:function(e){r({control_color:e.hex})}}))))},ne=r(42),ae=r(34),oe=r(40);function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ce(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?le(Object(r),!0).forEach((function(t){Object(a.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):le(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var ie=wp.i18n.__,se=wp.components,pe=se.TextControl,ue=se.BaseControl,de=se.Icon,be=se.Notice,me=se.Button,ye=se.Flex,ve=se.FlexItem,fe=se.SelectControl,he=se.FlexBlock,Oe=se.Modal,ge=wp.element,je=ge.useState,we=ge.useEffect,_e=wp.data,Ee=_e.useSelect,Re=_e.dispatch;var ke=function(e){var t=e.type,r=void 0===t?"new":t,n=e.closeModal,a=e.addPreset,o=e.onSave,c=e.updatePreset,i=e.name,s=void 0===i?"":i,p=e.attributes,u=e.preset,d=void 0===u?{"play-large":!0,rewind:!0,play:!0,"fast-forward":!0,progress:!0,"current-time":!0,mute:!0,volume:!0,speed:!1,pip:!1,save_player_position:!1,reset_on_end:!1,sticky_scroll:!1,hide_logo:!1,border_radius:0,skin:"default",background_color:"",control_color:"",cta:{},email_collection:{},action_bar:{}}:u,b=je(!1),m=Object(l.a)(b,2),y=m[0],v=m[1],f=je(""),h=Object(l.a)(f,2),O=h[0],g=h[1],j=je(""),w=Object(l.a)(j,2),_=w[0],E=w[1],R=je(s),k=Object(l.a)(R,2),P=k[0],C=k[1],x=je(d),T=Object(l.a)(x,2),I=T[0],F=T[1],V=Ee((function(e){return e("presto-player/player").branding()})),U=je(""),H=Object(l.a)(U,2),Y=H[0],G=H[1],q={message:ie("The preset could not be saved. Please reload the page and try again.","presto-player")},Z=Ee((function(e){return e("presto-player/player").youtube()}));we((function(){G(Z.channel_id)}),[null==Z?void 0:Z.channel_id]);var Q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};F(ce(ce({},I),e))},X=function(){var e=Object(N.a)(D.a.mark((function e(){var t,r,a,l;return D.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return v(!0),e.prev=1,t=ce(ce({},I),{name:P}),e.next=5,wp.apiFetch({method:"POST",url:wp.url.addQueryArgs("".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"audio-preset/").concat(d.id),{_method:"PUT"}),data:t});case 5:if(r=e.sent){e.next=8;break}throw q;case 8:c(r),n(),o&&o(r),Object(B.d)({message:ie("Preset updated!","presto-player")}),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(1),g(null!==e.t0&&void 0!==e.t0&&e.t0.message?e.t0.message:q);case 17:return e.prev=17,v(!1),e.finish(17);case 20:return Re("presto-player/player").updateYoutube({channel_id:Y}),a=ce(ce({},Z),{channel_id:Y}),e.prev=22,e.next=25,wp.apiFetch({path:"wp/v2/settings",method:"POST",data:{presto_player_youtube:a}});case 25:null!=(l=e.sent)&&l.presto_player_youtube&&(Re("presto-player/player").setYoutube(null==l?void 0:l.presto_player_youtube),onClose()),e.next=32;break;case 29:e.prev=29,e.t1=e.catch(22),console.log(e.t1);case 32:case"end":return e.stop()}}),e,null,[[1,14,17,20],[22,29]])})));return function(){return e.apply(this,arguments)}}(),$=function(){var e=Object(N.a)(D.a.mark((function e(){var t;return D.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return v(!0),e.prev=1,e.next=4,wp.apiFetch({method:"POST",url:prestoPlayer.root+prestoPlayer.prestoVersionString+"audio-preset",data:ce(ce({},{name:P}),I)});case 4:if(t=e.sent){e.next=7;break}throw q;case 7:a(t),n(),o&&o(t),Object(B.d)({message:ie("Preset created!","presto-player")}),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),g(null!==e.t0&&void 0!==e.t0&&e.t0.message?e.t0.message:q);case 16:return e.prev=16,v(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[1,13,16,19]])})));return function(){return e.apply(this,arguments)}}(),J=[{name:"controls",title:ie("Controls","presto-player"),icon:Object(L.b)(de,{icon:"admin-settings"}),component:Object(L.b)(ee,{updateState:Q,state:I})},{name:"behavior",title:ie("Behavior","presto-player"),icon:Object(L.b)(de,{icon:"admin-generic"}),component:Object(L.b)(K,{updateState:Q,state:I})},{name:"style",title:ie("Style","presto-player"),icon:Object(L.b)(de,{icon:"admin-customizer"}),component:Object(L.b)(re,{updateState:Q,state:I})},{name:"email",title:ie("Email Capture","presto-player"),icon:Object(L.b)(de,{icon:"email"}),component:Object(L.b)(oe.a,{updateState:Q,state:I})},{name:"cta",title:ie("Call To Action","presto-player"),icon:Object(L.b)(de,{icon:"megaphone"}),component:Object(L.b)(ae.a,{updateState:Q,state:I})},{name:"action_bar",title:ie("Action Bar","presto-player"),icon:Object(L.b)(de,{icon:"cover-image"}),component:Object(L.b)(ne.a,{updateState:Q,state:I,value:Y,setValue:G})}];return Object(L.b)(Oe,{title:ie("edit"==r?"Edit A Audio Preset":"Create A New Audio Preset","presto-player"),onRequestClose:n,className:"presto-player__modal-presets",overlayClassName:"presto-player__modal-presets-overlay"},Object(L.b)("div",{className:"presto-player__preset-options","data-cy":"preset-modal"},Object(L.b)(pe,{value:P,hideLabelFromVision:!0,label:ie("Preset Name","presto-player"),onChange:function(e){return C(e)},placeholder:ie("Enter a preset name...","presto-player"),className:"presto-player__modal--style-name",autoFocus:!0}),Object(L.b)(ye,{align:"stretch",className:"presto-player__style-preview-area"},Object(L.b)(ve,{className:"presto-player__style-sidebar"},Object(L.b)("div",null,Object(L.b)(A.a,{items:J,title:ie("Customize","presto-player"),onSelect:E},(function(e){return e.component})))),Object(L.b)(he,{className:"presto-player__style-preview-panel"},Object(L.b)("div",{style:{position:"absolute",top:0,left:0,padding:"20px"}},Object(L.b)(fe,{label:ie("Skin","presto-player"),labelPosition:"side",value:null==I?void 0:I.skin,hideLabelFromVision:!0,options:[{label:ie("Basic","presto-player"),value:"default"},{label:ie("Stacked","presto-player"),value:"stacked"}],onChange:function(e){Q({skin:e})}})),Object(L.b)(W,{poster:p.poster,src:p.src,state:I,branding:V,menu:_,mediaTitle:p.title}))),Object(L.b)("br",null),O&&Object(L.b)(ue,null,Object(L.b)(be,{className:"presto-player__modal--error-notice",status:"error",isDismissible:!1,style:{margin:0}},O.replace(/(<([^>]+)>)/gi,""))),Object(L.b)("div",{css:Object(L.a)(M||(M=Object(S.a)(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n "])))},Object(L.b)("div",{css:Object(L.a)(z||(z=Object(S.a)(["\n opacity: 0.5;\n font-size: 12px;\n "])))},"Preset ID: ",d.id),Object(L.b)("div",null,Object(L.b)(me,{isTertiary:!0,onClick:n,style:{margin:"0 6px"}},ie("Cancel","presto-player")),Object(L.b)(me,{isPrimary:!0,isBusy:y,disabled:y,onClick:function(){if(P)return"edit"===r?X():$();g(ie("You must enter a name for the preset.","presto-player"))},"data-cy":"submit-preset"},ie("edit"==r?"Update Preset":"Create Preset","presto-player"))))))},Pe=wp.i18n.__,Ce=wp.components,xe=Ce.Icon,Se=Ce.Spinner,Ne=Ce.Modal,Te=Ce.Button,De=Ce.ButtonGroup,Be=wp.element.useState,Ae=function(e){var t,r,n=e.preset,a=e.index,o=e.isActive,c=e.remove,i=e.setPreset,s=e.onEdit,p=Be(!1),u=Object(l.a)(p,2),d=u[0],b=u[1],m=Be(!1),y=Object(l.a)(m,2),v=y[0],f=y[1],h=function(){return f(!1)},O=function(){var e=Object(N.a)(D.a.mark((function e(){return D.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.id){e.next=3;break}return c(n),e.abrupt("return");case 3:return e.prev=3,b(!0),e.next=7,wp.apiFetch({method:"POST",url:wp.url.addQueryArgs("".concat(prestoPlayer.root).concat(prestoPlayer.prestoVersionString,"audio-preset/").concat(n.id),{_method:"DELETE"})});case 7:e.sent&&(c(n),wp.data.dispatch("core/notices").createNotice("success",Pe("Preset trashed.","presto-player"),{type:"snackbar",isDismissible:!0})),e.next=15;break;case 11:e.prev=11,e.t0=e.catch(3),console.error(e.t0),null!==e.t0&&void 0!==e.t0&&e.t0.message&&wp.data.dispatch("core/notices").createNotice("error",e.t0.message,{type:"snackbar",isDismissible:!0});case 15:return e.prev=15,f(!1),b(!1),e.finish(15);case 19:case"end":return e.stop()}}),e,null,[[3,11,15,19]])})));return function(){return e.apply(this,arguments)}}();return d?React.createElement("div",{className:"block-editor-block-styles__item",role:"button",tabIndex:a,"aria-label":"Fill",style:{color:o?"var(--wp-admin-theme-color)":"inherit"}},React.createElement("div",{className:"block-editor-block-styles__item-preview",style:{border:o?"2px solid var(--wp-admin-theme-color)":"2px solid #e3e3e3",margin:0,display:"flex","align-items":"center","justify-content":"center"}},React.createElement(Se,null))):React.createElement("div",{className:"block-editor-block-styles__item presto-preset-".concat(n.slug),onClick:function(){i(n)},role:"button",tabIndex:a,"aria-label":"Fill",style:{color:o?"var(--wp-admin-theme-color)":"inherit"}},React.createElement("div",{className:"block-editor-block-styles__item-preview",style:{border:o?"2px solid var(--wp-admin-theme-color)":"2px solid #e3e3e3",margin:0}},React.createElement("div",{style:{textAlign:"center",width:"100%",color:o?"var(--wp-admin-theme-color)":"inherit",opacity:o?1:.75}},null!=n&&n.icon?React.createElement(xe,{icon:null==n?void 0:n.icon,style:{fontSize:"30px",width:"30px",height:"30px"}}):React.createElement("h1",{style:{opacity:.75}},(null==n||null===(t=n.name)||void 0===t||null===(r=t.charAt(0))||void 0===r?void 0:r.toUpperCase())||"Untitled"))),React.createElement("div",{className:"block-editor-block-styles__item-label",style:{fontWeight:"bold",textTransform:"capitalize"}},(null==n?void 0:n.name)||"Untitled"),!(null!=n&&n.is_locked)&&React.createElement("div",{className:"block-editor-block-styles__item-edit"},React.createElement("div",{className:"block-editor-block-styles__item-edit-icon",onClick:s},React.createElement(xe,{icon:"edit"})),React.createElement("div",{className:"block-editor-block-styles__item-edit-icon",onClick:function(){return f(!0)}},React.createElement(xe,{icon:"trash"}))),v&&React.createElement(Ne,{title:Pe("Trash Preset?","presto-player"),onRequestClose:h,style:{maxWidth:"250px"}},React.createElement("p",null,React.createElement("strong",null,Pe("Warning!","presto-player")," "),Pe("Any audios assigned to this preset will automatically use the default preset.","presto-player")),React.createElement(De,null,React.createElement(Te,{isDestructive:!0,onClick:O,style:{margin:"0 4px"}},Pe("Trash","presto-player")),React.createElement(Te,{isTertiary:!0,onClick:h,style:{margin:"0 4px",boxShadow:"none"}},Pe("Cancel","presto-player")))))},Le=wp.i18n.__,Ie=wp.components,Fe=Ie.withNotices,Ve=Ie.BaseControl,Ue=Ie.Spinner,Me=Ie.Button,ze=wp.element,We=ze.useState,He=(ze.useEffect,wp.data),Ye=He.useSelect,Ge=He.dispatch;var qe=Fe((function(e){var t,r=e.attributes,n=e.setAttributes,a=We(!1),o=Object(l.a)(a,2),c=o[0],i=o[1],s=function(){return i(!1)},p=We(null),u=Object(l.a)(p,2),d=u[0],b=u[1],m=We(null),y=Object(l.a)(m,2),v=y[0],h=y[1],O=Ye((function(e){return{presets:e("presto-player/player").getAudioPresets(),loading:e("presto-player/player").isResolving("getAudioPresets")}})),g=O.presets,j=O.loading,w=function(e){Ge("presto-player/player").addAudioPreset(e)},_=function(e){Ge("presto-player/player").removeAudioPreset(e)},E=function(e){n({preset:e.id})};return j?React.createElement("div",{className:"presto-settings__loading"},React.createElement(Ue,null)):React.createElement(React.Fragment,null,g.length?React.createElement("p",null,Le("Select a audio configuration preset, or add your own.","presto-player")):"",React.createElement(Ve,null,React.createElement("div",{className:"block-editor-block-styles"},(g||[]).length?g.map((function(e,t){return React.createElement(Ae,{setPreset:E,index:t,isActive:(null==r?void 0:r.preset)===e.id,preset:e,key:e.id,onEdit:function(){h(e.name),b(e),i("edit")},remove:_})})):Le("No style presets. You can create a new style by clicking 'Add New Style'.","presto-plugin"))),React.createElement(Ve,null,React.createElement(Me,{isPrimary:!0,"data-cy":"add-new-preset",onClick:function(){var e;null!==(e=prestoPlayer)&&void 0!==e&&e.isPremium?i("new"):Ge("presto-player/player").setProModal(!0)}},Le("Add New Preset","presto-player")),!(null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium)&&React.createElement(f.a,null)),"new"==c&&React.createElement(ke,{closeModal:s,addPreset:w,type:"new",onSave:E,attributes:r}),"edit"==c&&React.createElement(ke,{closeModal:s,addPreset:w,updatePreset:function(e){Ge("presto-player/player").updateAudioPreset(e)},type:"edit",preset:d,name:v,attributes:r}))})),Ze=["image"];var Ke=function e(t){var r,n,a=t.attributes,l=t.setAttributes,c=Object(C.useInstanceId)(e),i="audio-block__poster-image-description-".concat(c),s=a.autoplay,u=a.poster,d=a.preload,m=a.title;return React.createElement(React.Fragment,null,React.createElement(p.PanelBody,{title:React.createElement(React.Fragment,null,Object(o.__)("Title","presto-player")," "),initialOpen:!0},React.createElement(p.FlexBlock,null,React.createElement(p.TextControl,{className:"presto-player__caption--title",placeholder:Object(o.__)("Title","presto-player"),value:m||"",onChange:function(e){return l({title:e})},autoComplete:"off"}))),React.createElement(p.PanelBody,{title:React.createElement(React.Fragment,null,Object(o.__)("Chapters","presto-player")," ",!(null!==(r=prestoPlayer)&&void 0!==r&&r.isPremium)&&React.createElement(f.a,null)),initialOpen:null===(n=prestoPlayer)||void 0===n?void 0:n.isPremium},React.createElement(x.a,{setAttributes:l,attributes:a})),React.createElement(p.PanelBody,{title:React.createElement(React.Fragment,null,Object(o.__)("Audio Settings","presto-player")," ")},React.createElement(p.ToggleControl,{label:React.createElement(React.Fragment,null,Object(o.__)("Autoplay","presto-player")," "),checked:s,onChange:function(e){l({autoplay:e})}}),React.createElement(p.PanelRow,null,React.createElement(p.SelectControl,{label:React.createElement(p.Flex,null,React.createElement("div",null,Object(o.__)("Performance Preference","presto-player")),React.createElement("a",{href:"https://prestoplayer.com/docs/performance-preferences-explained",target:"_blank",style:{textDecoration:"none"}},React.createElement(p.Icon,{icon:"editor-help"}))),className:"presto-setting__preload",value:d,onChange:function(e){return l({preload:e})},options:[{value:"auto",label:Object(o.__)("Audio Playback Speed","presto-player")},{value:"metadata",label:Object(o.__)("Page Load Speed","presto-player")},{value:"none",label:Object(o.__)("Page Load Speed (Extreme)","presto-player")}]})),React.createElement(b.MediaUploadCheck,null,React.createElement(p.BaseControl,{className:"editor-video-poster-control"},React.createElement(p.BaseControl.VisualLabel,null,React.createElement("p",null,Object(o.__)("Poster image","presto-player"))),React.createElement(b.MediaUpload,{title:Object(o.__)("Select poster image","presto-player"),onSelect:function(e){l({poster:e.url})},allowedTypes:Ze,render:function(e){var t=e.open;return React.createElement(p.Button,{className:"presto-setting__poster",isPrimary:!0,onClick:t,"aria-describedby":i},u?Object(o.__)("Replace","presto-player"):Object(o.__)("Select","presto-player"))}}),React.createElement("p",{id:i,hidden:!0},u?sprintf(Object(o.__)("The current poster image url is %s","presto-player"),u):Object(o.__)("There is no poster image currently selected","presto-player")),!!u&&React.createElement(p.Button,{onClick:function(){l({poster:""})},className:"presto-setting__remove-poster",isTertiary:!0},Object(o.__)("Remove","presto-player"))))),React.createElement(p.PanelBody,{title:Object(o.__)("Audio Preset","presto-player")},React.createElement(qe,{setAttributes:l,attributes:a})),React.createElement(p.PanelBody,{title:React.createElement(React.Fragment,null,Object(o.__)("Global Player Branding","presto-player")),initialOpen:!1},React.createElement(P.a,{setAttributes:l,attributes:a,type:"audio"})))},Qe=r(35);function Xe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function $e(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Xe(Object(r),!0).forEach((function(t){Object(a.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Xe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var Je=wp.data.withSelect;function et(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function tt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?et(Object(r),!0).forEach((function(t){Object(a.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):et(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var rt,nt,at=(0,wp.compose.compose)([Je((function(e){return{branding:e("presto-player/player").branding(),loading:e("presto-player/player").isResolving("getAudioPresets"),presets:e("presto-player/player").getAudioPresets(),defaultPreset:e("presto-player/player").getDefaultAudioPreset()}})),Object(C.createHigherOrderComponent)((function(e){return function(t){var r=t.presets,n=t.attributes,a=t.setAttributes,c=t.defaultPreset,i=t.isSelected,s=t.branding,p=Object(u.useState)({}),b=Object(l.a)(p,2),m=b[0],y=b[1],v=Object(u.useState)(1),f=Object(l.a)(v,2),h=f[0],O=f[1],g=n.poster,j=n.chapters;Object(u.useEffect)((function(){i&&null!=n&&n.id&&Object(d.dispatch)("core/edit-post").openGeneralSidebar("edit-post/block")}),[i]),Object(u.useEffect)((function(){i&&null!=n&&n.selectionOverrideClientId&&Object(d.dispatch)("core/block-editor").selectBlock(null==n?void 0:n.selectionOverrideClientId)}),[i]),Object(u.useEffect)((function(){if(r&&r.length){var e=r.find((function(e){return e.id===(null==n?void 0:n.preset)}));e?y(e):(y(c),a({preset:null==c?void 0:c.id}))}}),[r,null==n?void 0:n.preset]),Object(u.useEffect)((function(){w()}),[g,m,j,s.logo]);var w=function(){O(h+1)},E=Object(B.f)(j);Object(u.useEffect)((function(){var e=null==j?void 0:j.map((function(e){return e.time})),t=null==E?void 0:E.map((function(e){return e.time}));_.difference(e,t).length&&w()}),[j]);var R=function(){var e=Object(N.a)(D.a.mark((function e(t){var r,n,o,l,c,i,s;return D.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.src,n=t.external_id,o=t.attachment_id,l=t.type,c=t.title,r||n||o){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Object(Qe.a)({method:"POST",path:"/presto-player/v1/videos",data:$e($e({attachment_id:o,post_id:wp.data.select("core/editor").getCurrentPostId(),external_id:n},c?{title:c}:{}),{},{src:r,type:l})});case 5:i=e.sent,s=i.id,a({id:s});case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return null!=n&&n.preset||a({preset:null==c?void 0:c.id}),React.createElement(e,Object.assign({},t,{lockSave:function(){return Object(d.dispatch)("core/editor").lockPostSaving("presto-player")},unlockSave:function(){return Object(d.dispatch)("core/editor").unlockPostSaving("presto-player")},createVideo:R,onUpdate:w,onRemoveSrc:function(){confirm(Object(o.__)("Remove this","presto-player"))&&a({src:"",id:void 0})},presetData:m,setPresetData:y,renderKey:h}))}}),"withPlayerEdit")])(Object(p.withNotices)((function(e){var t=e.attributes,r=e.setAttributes,n=e.branding,a=e.presetData,l=e.renderKey,c=e.defaultPreset,i=e.lockSave,s=e.unlockSave,u=e.loading,d=e.createVideo,b=e.onRemoveSrc,m=t.poster,y=t.src,v=t.id;return y?u||!v?React.createElement(p.Placeholder,{className:"presto-player__placeholder is-loading"},React.createElement(p.Spinner,null)):React.createElement(React.Fragment,null,React.createElement(k.BlockControls,null,React.createElement(p.Toolbar,null,React.createElement(p.Button,{onClick:function(){return b()}},Object(o.__)("Replace","presto-player")))),React.createElement(k.InspectorControls,null,React.createElement(Ke,{attributes:t,setAttributes:r})),React.createElement("figure",null,React.createElement(p.Disabled,null,React.createElement(F.a,{poster:m,src:y,id:v,type:"audio",attributes:t,setAttributes:r,preset:a,branding:n,key:l})))):React.createElement(React.Fragment,null,React.createElement(R,{attributes:t,setAttributes:r,onSelectURL:function(e){r(tt(tt({},t),{},{src:e,title:e,preset:null==c?void 0:c.id})),i(),d({src:e,type:"link"}).catch((function(e){r({src:""}),showNotice(e)})).finally(s)},onSelect:function(e){e&&e.url?e.title?(r({src:e.url,preset:null==c?void 0:c.id,title:e.title,attachment_id:e.id}),i(),d({src:e.url,type:"attachment",attachment_id:e.id}).catch((function(e){r({src:""}),showNotice(e)})).finally(s)):r({src:e.url,title:e.url,preset:null==c?void 0:c.id}):r({src:void 0,id:void 0})}}))}))),ot="presto-player/audio",lt={category:"presto",attributes:(rt={src:{type:"string"},autoplay:{type:Boolean,default:!1},poster:{type:"string"},chapters:{type:"array",default:[]},preload:{type:"string"},title:{type:"string"},tracks:{type:"array",items:{type:"object"},default:[]},preset:{type:Number},id:{type:Number},attachment_id:{type:Number}},Object(a.a)(rt,"src",{type:String}),Object(a.a)(rt,"visibility",{type:String,default:"public"}),rt),title:Object(o.__)("Presto Audio","presto-player"),description:Object(o.__)("A audio player wrapper.","presto-player"),variations:[{name:"public",isDefault:!0,title:Object(o.__)("Presto Audio","presto-player"),description:Object(o.__)("Presto self-hosted audio block.","presto-player"),attributes:{visibility:"public"}}].concat(Object(n.a)(null!==(nt=prestoPlayer)&&void 0!==nt&&nt.isPremium?[{name:"private",title:Object(o.__)("Presto Private Audio","presto-player"),icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),React.createElement("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})),description:Object(o.__)("Private self-hosted audio block.","presto-player"),attributes:{visibility:"private"}}]:[])),icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"presto-block-icon"},React.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"})),edit:at}},function(e,t,r){"use strict";r.r(t);var n={};r.r(n),r.d(n,"getPresets",(function(){return v})),r.d(n,"getAudioPresets",(function(){return f})),r.d(n,"getPreset",(function(){return h})),r.d(n,"getReusableVideos",(function(){return O})),r.d(n,"getReusableVideo",(function(){return g})),r.d(n,"getDefaultPreset",(function(){return j})),r.d(n,"getDefaultAudioPreset",(function(){return w})),r.d(n,"presetsLoading",(function(){return _})),r.d(n,"branding",(function(){return E})),r.d(n,"playerCSS",(function(){return R})),r.d(n,"youtube",(function(){return k})),r.d(n,"proModal",(function(){return P}));var a={};r.r(a),r.d(a,"setPresetLoading",(function(){return x})),r.d(a,"setVideosLoading",(function(){return S})),r.d(a,"setProModal",(function(){return N})),r.d(a,"setVideos",(function(){return T})),r.d(a,"updateVideos",(function(){return D})),r.d(a,"appendVideos",(function(){return B})),r.d(a,"addVideo",(function(){return A})),r.d(a,"setPresets",(function(){return L})),r.d(a,"addPreset",(function(){return I})),r.d(a,"updatePreset",(function(){return F})),r.d(a,"removePreset",(function(){return V})),r.d(a,"setAudioPresets",(function(){return U})),r.d(a,"addAudioPreset",(function(){return M})),r.d(a,"updateAudioPreset",(function(){return z})),r.d(a,"removeAudioPreset",(function(){return W})),r.d(a,"setBranding",(function(){return H})),r.d(a,"updateBranding",(function(){return Y})),r.d(a,"saveOptions",(function(){return G})),r.d(a,"fetchOptions",(function(){return q})),r.d(a,"fetchFromAPI",(function(){return Z})),r.d(a,"fetchFromWPAPI",(function(){return K})),r.d(a,"setYoutube",(function(){return Q})),r.d(a,"updateYoutube",(function(){return X})),r.d(a,"setPresetSettings",(function(){return $})),r.d(a,"setPresetAudioSettings",(function(){return J}));var o=r(5),l=r(8);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){Object(o.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var s=wp.data,p=s.combineReducers,u=s.dispatch,d=wp.apiFetch,b=lodash.pick,m=function(e,t){return e.find((function(e){return e.id===t.id}))?e:[].concat(Object(l.a)(e),[t])},y=p({presetReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_PRESET":return t.value;case"ADD_PRESET":return[].concat(Object(l.a)(e),[t.value]);case"UPDATE_PRESET":return e.map((function(e,r){var n;return e.id!==(null===(n=t.value)||void 0===n?void 0:n.id)?e:i(i({},e),t.value)}));case"REMOVE_PRESET":return e.filter((function(e){return e!==t.value}))}return e},audioPresetReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_AUDIO_PRESET":case"SET_AUDIO_PRESET":return t.value;case"ADD_AUDIO_PRESET":return[].concat(Object(l.a)(e),[t.value]);case"UPDATE_AUDIO_PRESET":return e.map((function(e,r){var n;return e.id!==(null===(n=t.value)||void 0===n?void 0:n.id)?e:i(i({},e),t.value)}));case"REMOVE_AUDIO_PRESET":return e.filter((function(e){return e!==t.value}))}return e},presetLoadingReducer:function(){var e=arguments.length>1?arguments[1]:void 0;switch(e.type){case"SET_PRESET_LOADING":return e.value}},videosLoadingReducer:function(){var e=arguments.length>1?arguments[1]:void 0;switch(e.type){case"SET_VIDEOS_LOADING":return e.value}},videosReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{total:0,total_pages:0,videos:[],hasResolved:!1,isError:!1},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_VIDEOS":return t.value;case"UPDATE_VIDEOS":return i(i({},e),t.value);case"APPEND_VIDEOS":var r=e;return(t.value||[]).forEach((function(e){r.videos=m(r.videos,e)})),r;case"ADD_VIDEO":return i(i({},e),{},{videos:m(e.videos,t.value)});case"UPDATE_VIDEO":return i(i({},e),{},{videos:e.videos.map((function(e,r){var n;return e.id!==(null===(n=t.value)||void 0===n?void 0:n.id)?e:i(i({},e),t.value)}))});case"REMOVE_VIDEO":return i(i({},e),{},{videos:e.videos.filter((function(e){return e!==t.value}))})}return e},proModalReducer:function(){var e=arguments.length>1?arguments[1]:void 0;switch(e.type){case"SET_PRO_MODAL":return e.value}},brandingReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_BRANDING":return t.value;case"UPDATE_BRANDING":return i(i({},e),{},Object(o.a)({},t.name,t.value))}return e},youtubeReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_YOUTUBE":return t.value;case"UPDATE_YOUTUBE":return i(i({},e),{},Object(o.a)({},t.name,t.value))}return e},presetSettingsReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_PRESET_SETTINGS":return t.value}return e},optionsApi:function(e,t){switch(t.type){case"FETCH_OPTIONS":return d({path:"/presto-player/v1/settings/"}).then((function(e){u("presto-player/player").setBranding(e.presto_player_branding),u("presto-player/player").setYoutube(e.presto_player_youtube),u("presto-player/player").setPresetSettings(e.presto_player_presets),u("presto-player/player").setPresetAudioSettings(e.presto_player_audio_presets)}));case"SAVE_OPTIONS":var r={presto_player_branding:b(null==t?void 0:t.branding,["logo","color","logo_width","player_css"])};return Object.keys(r).forEach((function(e){return(null==r[e]||!Object.keys((null==r?void 0:r[e])||{}).length)&&delete r[e]})),d({path:"/presto-player/v1/settings",method:"POST",data:r}),r}},audioPresetSettingsReducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_PRESET_AUDIO_SETTINGS":return t.value}return e}});function v(e){return(null==e?void 0:e.presetReducer)||[]}function f(e){return(null==e?void 0:e.audioPresetReducer)||[]}function h(e,t){var r;return null!=e&&null!==(r=e.presetReducer)&&void 0!==r&&r.length?null==e?void 0:e.presetReducer.find((function(e){return e.id===t})):[]}function O(e){return(null==e?void 0:e.videosReducer)||[]}function g(e,t){var r,n;return(null==e||null===(r=e.videosReducer)||void 0===r||null===(n=r.videos)||void 0===n?void 0:n.find((function(e){return(null==e?void 0:e.id)===t})))||[]}function j(e){var t,r=null==e||null===(t=e.presetSettingsReducer)||void 0===t?void 0:t.default_player_preset,n=r&&((null==e?void 0:e.presetReducer)||[]).find((function(e){return e.id&&e.id===r}));return n||(n=((null==e?void 0:e.presetReducer)||[]).find((function(e){return"default"==e.slug}))),n||(n=((null==e?void 0:e.presetReducer)||[])[0]),n}function w(e){var t,r=null==e||null===(t=e.audioPresetSettingsReducer)||void 0===t?void 0:t.default_player_preset,n=r&&((null==e?void 0:e.audioPresetReducer)||[]).find((function(e){return e.id&&e.id===r}));return n||(n=((null==e?void 0:e.audioPresetReducer)||[]).find((function(e){return"default"==e.slug}))),n||(n=((null==e?void 0:e.audioPresetReducer)||[])[0]),n}function _(e){return!(null==e||!e.presetLoadingReducer)}function E(e){return null==e?void 0:e.brandingReducer}function R(e){var t;return null==e||null===(t=e.brandingReducer)||void 0===t?void 0:t.player_css}function k(e){return null==e?void 0:e.youtubeReducer}function P(e){return null==e?void 0:e.proModalReducer}function C(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){return{type:"SET_PRESET_LOADING",value:e}}function S(e){return{type:"SET_VIDEOS_LOADING",value:e}}function N(e){return{type:"SET_PRO_MODAL",value:e}}function T(e){return{type:"SET_VIDEOS",value:e}}function D(e){return{type:"UPDATE_VIDEOS",value:e}}function B(e){return{type:"APPEND_VIDEOS",value:e}}function A(e){return{type:"ADD_VIDEO",value:e}}function L(e){return{type:"SET_PRESET",value:e}}function I(e){return{type:"ADD_PRESET",value:e}}function F(e){return{type:"UPDATE_PRESET",value:e}}function V(e){return{type:"REMOVE_PRESET",value:e}}function U(e){return{type:"SET_AUDIO_PRESET",value:e}}function M(e){return{type:"ADD_AUDIO_PRESET",value:e}}function z(e){return{type:"UPDATE_AUDIO_PRESET",value:e}}function W(e){return{type:"REMOVE_AUDIO_PRESET",value:e}}function H(e){return{type:"SET_BRANDING",value:e}}function Y(e,t){return{type:"UPDATE_BRANDING",name:e,value:t}}function G(e){return function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?C(Object(r),!0).forEach((function(t){Object(o.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):C(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({type:"SAVE_OPTIONS"},e)}function q(){return{type:"FETCH_OPTIONS"}}function Z(e){return{type:"FETCH_FROM_API",path:e}}function K(e,t){return{type:"FETCH_FROM_WP_API",path:e,args:t}}function Q(e){return{type:"SET_YOUTUBE",value:e}}function X(e,t){return{type:"UPDATE_YOUTUBE",name:e,value:t}}function $(e){return{type:"SET_PRESET_SETTINGS",value:e}}function J(e){return{type:"SET_PRESET_AUDIO_SETTINGS",value:e}}var ee=r(7),te=r(2),re=r.n(te);function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(r),!0).forEach((function(t){Object(o.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ne(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var oe=wp.apiFetch,le={FETCH_FROM_API:function(e){return oe({url:prestoPlayer.root+prestoPlayer.prestoVersionString+e.path})},FETCH_FROM_WP_API:function(e){return Object(ee.a)(re.a.mark((function t(){var r,n,a,o,l,c,i;return re.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=e.args,n=e.path,a=void 0===n?"":n,t.next=3,oe(ae(ae(ae({path:wp.url.addQueryArgs("wp/v2/".concat(a),null==r?void 0:r.query)},null!=r&&r.data?{data:r.data}:{}),null==r?void 0:r.options),{},{parse:!1}));case 3:return o=t.sent,t.next=6,o.json();case 6:return l=t.sent,c=o.headers&&o.headers.get("X-WP-Total"),i=o.headers&&o.headers.get("X-WP-TotalPages"),t.abrupt("return",new Promise((function(e,t){e({data:l,total:c,total_pages:i})})));case 10:case"end":return t.stop()}}),t)})))()}},ce={getPresets:re.a.mark((function e(){var t;return re.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Z("preset");case 2:return t=e.sent,e.abrupt("return",L(t));case 4:case"end":return e.stop()}}),e)})),getAudioPresets:re.a.mark((function e(){var t;return re.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Z("audio-preset");case 2:return t=e.sent,e.abrupt("return",U(t));case 4:case"end":return e.stop()}}),e)})),getReusableVideo:re.a.mark((function e(t){var r,n;return re.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r="presto-videos/".concat(t),e.next=3,K(r,{});case 3:return n=e.sent,e.abrupt("return",A((null==n?void 0:n.data)||{}));case 5:case"end":return e.stop()}}),e)}))},ie=(0,wp.data.registerStore)("presto-player/player",{reducer:y,selectors:n,actions:a,controls:le,resolvers:ce}),se=r(11),pe=wp.components,ue=pe.Modal,de=pe.Button,be=wp.data,me=be.dispatch,ye=be.useSelect,ve=function(){return ye((function(e){return e("presto-player/player").proModal()}))?React.createElement(ue,{title:"Pro Feature",onRequestClose:function(){me("presto-player/player").setProModal(!1)}},React.createElement("h2",null,"Unlock Presto Player ",React.createElement(se.a,null)),React.createElement("p",null,"Get this feature and more with the Pro version of Presto Player!"),React.createElement(de,{href:"https://prestoplayer.com",target:"_blank",isPrimary:!0},"Learn More")):""},fe=wp.blocks,he=fe.registerBlockType,Oe=fe.unregisterBlockType,ge=wp.plugins,je=ge.registerPlugin,we=ge.unregisterPlugin,_e=wp.data,Ee=_e.select,Re=_e.dispatch,ke=wp.element.render,Pe=function(){return null},Ce=function(e){var t=e.getContext,r=e.register,n=e.unregister,a=e.before,o=void 0===a?Pe:a,l=e.after,c=void 0===l?Pe:l,i={};!function(){o();var e=t(),a=[];e.keys().forEach((function(t){var o=e(t);o!==i[t]&&(i[t]&&n(i[t]),r(o),a.push(o.name),i[t]=o)})),c(a)}()},xe=null;Ce({getContext:function(){return r(58)},register:function(e){var t,r=e.name,n=e.options;null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium?he(r,n):n.premium||he(r,n)},unregister:function(e){var t=e.name;return Oe(t)},before:function(){xe=Ee("core/editor").getSelectedBlockClientId(),Re("core/editor").clearSelectedBlock()},after:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];Ee("core/editor").getBlocks().forEach((function(t){var r=t.name,n=t.clientId;e.includes(r)&&Re("core/editor").selectBlock(n)})),xe?Re("core/editor").selectBlock(xe):Re("core/editor").clearSelectedBlock(),xe=null}}),Ce({getContext:function(){return r(65)},register:function(e){var t=e.name,r=e.options;return je(t,r)},unregister:function(e){var t=e.name;return we(t)}}),jQuery("body").append('<div id="presto-plugin-app"></div>'),ke(React.createElement(ve,null),document.getElementById("presto-plugin-app")),Re("presto-player/player").fetchOptions();var Se=!1;wp.data.subscribe((function(){var e=wp.data.select("core/editor").isSavingPost(),t=wp.data.select("core/editor").isAutosavingPost();if(e&&!t){if(Se)return;Se=!0;var r=ie.getState().brandingReducer;Re("presto-player/player").saveOptions({branding:r}).then((function(){Se=!1}))}}))},function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return W})),r.d(t,"options",(function(){return H}));var n=r(7),a=r(1),o=r(2),l=r.n(o),c=(r(19),wp.compose.useInstanceId),i=wp.i18n.__,s=wp.components,p=s.VisuallyHidden,u=s.Button,d=s.Icon,b=wp.element.useRef;var m=function e(t){t.className;var r=t.onChange,n=t.value,a=t.placeholder,o=c(e),l=b();return React.createElement("div",{className:"block-editor-inserter__search",style:{padding:0}},React.createElement(p,{as:"label",htmlFor:"block-editor-inserter__search-".concat(o)},a),React.createElement("input",{ref:l,className:"block-editor-inserter__search-input",id:"block-editor-inserter__search-".concat(o),type:"search",placeholder:a,onChange:function(e){return r(e.target.value)},autoComplete:"off",value:n||""}),React.createElement("div",{className:"block-editor-inserter__search-icon"},!!n&&React.createElement(u,{icon:"close-small",label:i("Reset search","presto-player"),onClick:function(){r(""),l.current.focus()}}),!n&&React.createElement(d,{icon:"search"})))},y=r(3),v=r(4);function f(e){return h.apply(this,arguments)}function h(){return(h=Object(n.a)(l.a.mark((function e(t){var r,n,a,o;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=document.getElementById("presto-shortcode-input").value,n=t.currentTarget,a=n.textContent,t.currentTarget.textContent=Object(y.__)("Copied!","presto-player"),setTimeout((function(){n.textContent=a}),1500),!navigator.clipboard||!window.isSecureContext){e.next=9;break}return e.abrupt("return",navigator.clipboard.writeText(r));case 9:return(o=document.createElement("textarea")).value=r,o.style.position="fixed",o.style.left="-999999px",o.style.top="-999999px",document.body.appendChild(o),o.focus(),o.select(),e.abrupt("return",new Promise((function(e,t){document.execCommand("copy")?e():t(),o.remove()})));case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var O=function(){return React.createElement(v.PanelBody,{title:Object(y.__)("Timestamp Shortcode","presto-player")},React.createElement("div",{className:"block-editor-inserter__shortcode-input"},React.createElement("p",null,Object(y.__)("Add convenient links to skip the player to a specific timestamp.","presto-player")),React.createElement("input",{id:"presto-shortcode-input",style:{width:"100%",fontSize:"11px",marginBottom:"10px"},type:"text",readOnly:!0,value:'[pptime time="1:00"]Optional Text[/pptime]'}),React.createElement("button",{type:"button",className:"components-button is-primary",onClick:f},Object(y.__)("Copy to clipboard","presto-player"))))},g=function(e){var t=e.icon,r=e.title,n=e.id,a=e.selectBlock,o=e.i;return React.createElement("button",{type:"button",id:"video-".concat(n),tabIndex:o,onClick:a,role:"option",className:"components-button block-editor-block-types-list__item editor-block-list-item-kadence-spacer"},React.createElement("span",{className:"block-editor-block-types-list__item-icon"},React.createElement("span",{className:"block-editor-block-icon has-colors"},t)),React.createElement("span",{className:"block-editor-block-types-list__item-title"},r))},j=wp.i18n.__,w=wp.components,E=(w.Panel,w.PanelBody),R=w.Button,k=w.Spinner,P=wp.editPost,C=P.PluginSidebar,x=P.PluginSidebarMoreMenuItem,S=wp.element,N=S.Fragment,T=S.useEffect,D=S.useState,B=S.useCallback,A=wp.data,L=A.dispatch,I=A.useSelect,F=wp.blocks,V=F.createBlock,U=F.getBlockType,M=wp.apiFetch,z=wp.blockSerializationDefaultParser.parse;var W="presto-player",H={render:function(){var e,t,r,o=(e=D(0),(t=Object(a.a)(e,2))[0],r=t[1],function(){return r((function(e){return e+1}))}),c=React.createElement("svg",{viewBox:"0 0 35 34",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("g",null,React.createElement("path",{d:"M23.3722 16.9766L33.2059 11.2991L33.2059 22.6541L23.3722 16.9766Z",fillOpacity:"0.7"}),React.createElement("path",{d:"M23.3745 5.6227L33.2082 11.3002L23.3745 16.9776L23.3745 5.6227Z",fillOpacity:"0.75"}),React.createElement("path",{d:"M23.3745 5.62242L23.3745 16.9773L13.5409 11.2999L23.3745 5.62242Z",fillOpacity:"0.8"}),React.createElement("path",{d:"M23.399 5.613L13.5654 11.2905L13.5654 -0.0644536L23.399 5.613Z",fillOpacity:"0.85"}),React.createElement("path",{d:"M13.5699 11.3038L13.5699 22.6587L3.73623 16.9813L13.5699 11.3038Z",fillOpacity:"0.8"}),React.createElement("path",{d:"M13.5699 -0.0245525L13.5699 11.3304L3.73623 5.6529L13.5699 -0.0245525Z",fillOpacity:"0.9"}),React.createElement("path",{d:"M13.5699 22.6451L13.5699 34L3.73623 28.3226L13.5699 22.6451Z",fillOpacity:"0.7"}),React.createElement("path",{d:"M23.3745 16.9774L33.2082 22.6549L23.3745 28.3323L23.3745 16.9774Z",fillOpacity:"0.65"}),React.createElement("path",{d:"M3.73774 16.9774L13.5714 22.6549L3.73774 28.3323L3.73774 16.9774Z",fillOpacity:"0.75"}),React.createElement("path",{d:"M3.73774 5.63149L13.5714 11.3089L3.73774 16.9864L3.73774 5.63149Z",fillOpacity:"0.85"}),React.createElement("path",{d:"M23.3745 16.9772L23.3745 28.3321L13.5409 22.6546L23.3745 16.9772Z",fillOpacity:"0.6"})),React.createElement("defs",null,React.createElement("clipPath",{id:"clip0"},React.createElement("rect",{width:"35",height:"34",fill:"white"})))),i=D(!1),s=Object(a.a)(i,2),p=s[0],u=s[1],d=D(1),b=Object(a.a)(d,2),y=b[0],v=b[1],f=D(!1),h=Object(a.a)(f,2),w=h[0],P=h[1],S=D(""),A=Object(a.a)(S,2),F=A[0],W=A[1],H=B(_.debounce((function(e){K({replace:!0,term:e})}),250),[]);T((function(){H(F)}),[F]),T((function(){P(!0),K({replace:!1})}),[y]);var Y=I((function(e){return e("presto-player/player").getReusableVideos()}),[F,y]),G=Y.videos,q=Y.total_pages,Z=Y.hasResolved,K=function(){var e=Object(n.a)(l.a.mark((function e(t){var r,n,a,c,i,s;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.replace,n=t.term,e.next=3,M({path:wp.url.addQueryArgs("wp/v2/presto-videos",{search:n,page:y,per_page:10}),parse:!1});case 3:return a=e.sent,e.next=6,a.json();case 6:c=e.sent,i=a.headers&&parseInt(a.headers.get("X-WP-Total")),s=a.headers&&parseInt(a.headers.get("X-WP-TotalPages")),r?L("presto-player/player").updateVideos({videos:c,hasResolved:!0,total:i,total_pages:s}):(L("presto-player/player").appendVideos(c),L("presto-player/player").updateVideos({hasResolved:!0,total:i,total_pages:s})),o(),P(!1);case 12:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();T((function(){u(y<q)}),[y,q]);var Q=function(){var e=y+1;v(e=e>q?q:e)},X=function(e){var t,r,n,a,o=z(null==e||null===(t=e.content)||void 0===t?void 0:t.raw);if(null!=o&&null!==(r=o[0])&&void 0!==r&&null!==(n=r.innerBlocks)&&void 0!==n&&null!==(a=n[0])&&void 0!==a&&a.blockName){var l,c,i,s,p=U(null==o||null===(l=o[0])||void 0===l||null===(c=l.innerBlocks)||void 0===c||null===(i=c[0])||void 0===i?void 0:i.blockName);return null!=p&&null!==(s=p.icon)&&void 0!==s&&s.src?p.icon.src:""}return""};return React.createElement(N,null,React.createElement(x,{target:"presto-player-sidebar",icon:c},j("Presto Player","presto-player")),React.createElement(C,{name:"presto-player-sidebar",title:j("Presto Player","presto-player"),icon:c},React.createElement(O,null),React.createElement(E,{title:j("Media Hub","presto-player")},React.createElement(m,{placeholder:"Search media...",value:F,onChange:function(e){return t=e,v(1),void W(t);var t}}),React.createElement("div",{className:"block-editor-inserter__panel-content"},Z?React.createElement("div",{role:"listbox",className:"block-editor-block-types-list presto-player__panel-grid-list",style:{display:"flex",flexWrap:"wrap"},"aria-label":j("Media Hub","presto-player")},G.length?G.map((function(e,t){var r;return React.createElement(g,{selectBlock:function(t){L("core/editor").insertBlock(V("presto-player/reusable-display",{id:null==e?void 0:e.id}))},icon:X(e),title:(null==e||null===(r=e.title)||void 0===r?void 0:r.raw)||"Untitled",id:null==e?void 0:e.id,i:t,key:null==e?void 0:e.id})})):function(){if(!G.length)return F?React.createElement("p",null,j("No videos found.","presto-player")):React.createElement(R,{href:"post-new.php?post_type=pp_video_block",isSecondary:!0},j("Create A Reusable Video","presto-player"))}(),!F&&p&&G.length?React.createElement("div",{style:{"margin-top":"20px","text-align":"center",display:"flex","justify-content":"center",width:"100%"}},React.createElement(R,{isSecondary:!0,isSmall:!0,onClick:Q,isBusy:w},"Load More")):""):React.createElement(k,null)))))}}},function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return ye})),r.d(t,"options",(function(){return ve}));var n=r(8),a=r(5),o=r(1),l=r(18),c=r(21),i=r(22),s=r(19),p=r.n(s),u=r(16),d=(lodash.noop,window.location.href),b=wp.components,m=b.Button,y=(b.Notice,b.Placeholder),v=(b.DropZone,b.withFilters),f=(b.BaseControl,b.ToggleControl,b.FormFileUpload,wp.i18n.__),h=wp.element,O=h.useState,g=h.useEffect,j=wp.data.useSelect,w=(wp.deprecated,wp.editor),_=w.MediaUpload,E=w.MediaUploadCheck,R=w.URLPopover,k=function(e){var t=e.src,r=e.onChange,n=e.onSubmit,a=e.onClose;return React.createElement(R,{onClose:a},React.createElement("form",{className:"block-editor-media-placeholder__url-input-form",onSubmit:n},React.createElement("input",{"data-cy":"url-input",className:"block-editor-media-placeholder__url-input-field",type:"url","aria-label":f("URL","presto-player"),placeholder:f("Paste or type a Youtube, Vimeo or .mp4 video URL","presto-player"),onChange:r,value:t}),React.createElement(m,{"data-cy":"url-submit",className:"block-editor-media-placeholder__url-input-submit-button",icon:"editor-break",label:f("Apply","presto-player"),type:"submit"})))};var P,C=v("editor.MediaPlaceholder")((function(e){var t=e.value,r=void 0===t?{}:t,n=e.allowedTypes,a=void 0===n?[]:n,l=e.className,c=e.icon,i=e.url,s=void 0===i||i,b=e.labels,v=void 0===b?{}:b,h=e.mediaPreview,w=e.notices,R=e.isAppender,P=e.isPrivate,C=e.addToGallery,x=e.onSelect,S=e.onCancel,N=e.onSelectURL,T=e.onDoubleClick,D=e.children,B=e.allowURLs,A=j((function(e){return(0,e("core/block-editor").getSettings)().mediaUpload}),[]),L=O(""),I=Object(o.a)(L,2),F=I[0],V=I[1],U=O(!1),M=Object(o.a)(U,2),z=M[0],W=M[1];g((function(){var e;V(null!==(e=null==r?void 0:r.src)&&void 0!==e?e:"")}),[r]);var H=function(e){V(e.target.value)},Y=function(){W(!0)},G=function(){W(!1)},q=function(e){e.preventDefault(),F&&N&&(N(F),G())},Z=function(e,t){var r=v.instructions,n=v.title;A||N||(r=f("To edit this block, you need permission to upload media.","presto-player"));var a=p()("block-editor-media-placeholder",l,{"is-appender":R});return React.createElement(y,{icon:c,label:n,instructions:r,className:a,notices:w,onClick:t,onDoubleClick:T,preview:h},D,e)},K=function(){return N&&React.createElement("div",{className:"block-editor-media-placeholder__url-input-container"},s&&React.createElement(m,{"data-cy":"video-url",className:"block-editor-media-placeholder__button",onClick:Y,isPressed:z,isTertiary:!0},f("Video URL","presto-player")),z&&React.createElement(k,{src:F,onChange:H,onSubmit:q,onClose:G}))};return React.createElement(E,{fallback:Z(K())},function(){var e=React.createElement(_,{title:f(P?"Select or Upload Private Video":"Select or Upload Video","presto-player"),addToGallery:C,gallery:!1,multiple:!1,onSelect:function(e){u.a.unsetUrlParams(),x(e)},onClose:function(){u.a.unsetUrlParams()},allowedTypes:a,value:Array.isArray(r)?r.map((function(e){return e.id})):r.id,render:function(e){var t=e.open;return React.createElement(m,{"data-cy":"add-video",isPrimary:!0,onClick:function(e){e.stopPropagation(),u.a.unsetUrlParams(),P?u.a.setUrlPrivate(d):u.a.setUrlPublic(d),t()}},f(P?"Add/Select Private Video":"Add/Select Video","presto-player"))}});if(A){var t=React.createElement(React.Fragment,null,e,!!B&&K(),S&&React.createElement(m,{className:"block-editor-media-placeholder__cancel-button",title:f("Cancel","presto-player"),isLink:!0,onClick:S},f("Cancel","presto-player")));return Z(t)}return Z(e)}())})),x=r(11),S=wp.i18n.__,N=wp.components,T=N.withNotices,D=N.BaseControl,B=N.ToggleControl,A=N.Notice,L=wp.data.dispatch,I=["video"],F=T((function(e){var t,r=e.noticeUI,n=e.onSelect,a=e.children,o=e.onSelectURL,l=e.onUploadError,c=e.setAttributes,i=e.attributes,s="private"===i.visibility;return React.createElement("div",null,React.createElement(C,{icon:s?React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),React.createElement("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})):React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("polygon",{points:"23 7 16 12 23 17 23 7"}),React.createElement("rect",{x:"1",y:"5",width:"15",height:"14",rx:"2",ry:"2"})),labels:{title:S(s?"Presto Private Video":"Presto Video","presto-player"),instructions:S(s?"Upload a video file, or pick one from your media library.":"Upload a video file, pick one from your media library, or add one with a URL.","presto-player")},onSelect:n,onSelectURL:o,switcher:!0,isPrivate:s,allowURLs:!s,accept:"video/*",setAttributes:c,allowedTypes:I,value:i,notices:r,onError:l},React.createElement("div",{style:{width:"100%"}},React.createElement(D,{className:"presto-player__placeholder-control"},React.createElement(B,{label:React.createElement("div",null,S("Make Private","presto-player")," ",!(null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium)&&React.createElement(x.a,null)),help:S(s?"This video is only accessible to those who are logged in.":"This video is currently accessible to everyone.","presto-player"),checked:s,onChange:function(e){var t;null!==(t=prestoPlayer)&&void 0!==t&&t.isPremium?c({visibility:e?"private":"public"}):L("presto-player/player").setProModal(!0)}})),!!a&&React.createElement("div",{style:{width:"100%"}},a),!!s&&React.createElement(A,{status:"warning",isDismissible:!1},React.createElement("div",null,React.createElement("div",null,React.createElement("strong",null,S("Note","presto-player"))),S("Private videos use php to stream your video. Keep in mind this will use up disk space and bandwidth so it may not be an appropriate choice for some hosts.","presto-player"))))))})),V=r(36),U=r(23),M=r(14),z=wp.i18n.__,W=wp.blob,H=W.getBlobByURL,Y=W.isBlobURL,G=wp.components,q=G.Button,Z=G.Disabled,K=G.Toolbar,Q=G.Notice,X=G.withNotices,$=G.Placeholder,J=G.Spinner,ee=wp.editor,te=ee.BlockControls,re=ee.InspectorControls,ne=wp.compose.compose,ae=wp.element,oe=ae.useEffect,le=ae.useState,ce=wp.data.dispatch,ie=wp.blocks.createBlock,se=["video"],pe=ne([Object(i.a)(),Object(c.a)()])(X((function(e){e.noticeUI;var t=e.attributes,r=e.setAttributes,n=(e.isSelected,e.noticeOperations),a=e.branding,c=e.loading,i=e.presetData,s=e.createVideo,p=e.onRemoveSrc,u=e.renderKey,d=e.lockSave,b=e.unlockSave,m=e.clientId,y=e.defaultPreset,v=t.poster,f=t.src,h=t.id,O=t.tracks,g=le(""),j=Object(o.a)(g,2),w=j[0],_=j[1],E=function(e){n.removeAllNotices(),n.createErrorNotice(null==e?void 0:e.message)};return oe((function(){if(!h&&Y(f)){var e=H(f);e&&mediaUpload({filesList:[e],onFileChange:function(e){var t=Object(o.a)(e,1)[0].url;r({src:t})},onError:function(e){n.createErrorNotice(e)},allowedTypes:se})}}),[]),f?c||!h?React.createElement($,{className:"presto-player__placeholder is-loading"},React.createElement(J,null)):React.createElement("div",null,React.createElement(te,null,React.createElement(V.a,{tracks:O,onChange:function(e){r({tracks:e})}}),React.createElement(K,null,React.createElement(q,{onClick:function(){return p()}},z("Replace","presto-player")))),React.createElement(re,null,React.createElement(U.a,{setAttributes:r,attributes:t})),React.createElement("figure",null,React.createElement(Z,null,React.createElement(M.a,{poster:v,src:f,id:h,type:"hosted",attributes:t,setAttributes:r,preset:i,branding:a,key:u})))):React.createElement("div",null,React.createElement(F,{onSelect:function(e){e&&e.url?(r({src:e.url,preset:null==y?void 0:y.id,attachment_id:e.id}),d(),s({src:e.url,type:"attachment",attachment_id:e.id}).catch((function(e){r({src:""}),E(e)})).finally(b)):r({src:void 0,id:void 0})},onSelectURL:function(e){var t;if(r({attachment_id:null}),e&&Object(l.d)(e)&&(null===(t=prestoPlayer)||void 0===t||!t.isPremium))return void _(React.createElement(Q,{status:"info",onRemove:function(){return _("")}},React.createElement("div",null,React.createElement("div",null,React.createElement("strong",null,z("Get HLS Streaming and more with Presto Player Pro!","presto-player"))),z("Stream HLS links and more with Presto Player Pro.","presto-player"),React.createElement("div",{style:{marginTop:"1em"}},React.createElement(q,{isPrimary:!0},z("Upgrade","presto-player"))))));if(e!==f){var n=Object(l.a)(e).type;if("youtube"===n){var a=ie("presto-player/youtube",{src:e});return void ce("core/editor").replaceBlock(m,a)}if("vimeo"===n){var o=ie("presto-player/vimeo",{src:e});return void ce("core/editor").replaceBlock(m,o)}r({src:e,attachmend_id:null}),r({preset:null==y?void 0:y.id}),d(),s({src:e,type:"link"}).catch((function(e){r({src:""}),E(e)})).finally(b)}},setAttributes:r,attributes:t,onError:function(e){n.removeAllNotices(),n.createErrorNotice(e)}},w))}))),ue=r(17);function de(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function be(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?de(Object(r),!0).forEach((function(t){Object(a.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):de(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var me=wp.i18n.__,ye="presto-player/self-hosted",ve=be(be({},ue.a),{},{title:me("Presto Video","presto-player"),description:me("Presto Self-hosted video block.","presto-player"),variations:[{name:"public",isDefault:!0,title:me("Presto Video","presto-player"),description:me("Presto Self-hosted video block.","presto-player"),attributes:{visibility:"public"}}].concat(Object(n.a)(null!==(P=prestoPlayer)&&void 0!==P&&P.isPremium?[{name:"private",title:me("Presto Private Video","presto-player"),icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),React.createElement("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})),description:me("Private video self-hosted block.","presto-player"),attributes:{visibility:"private"}}]:[])),icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("polygon",{points:"23 7 16 12 23 17 23 7"}),React.createElement("rect",{x:"1",y:"5",width:"15",height:"14",rx:"2",ry:"2"})),edit:pe})},function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return E})),r.d(t,"options",(function(){return R}));var n=r(1),a=wp.i18n.__,o=wp.blockEditor,l=o.InnerBlocks,c=o.useBlockProps,i=wp.editor,s=(i.BlockControls,i.InspectorControls),p=wp.components,u=p.Disabled,d=(p.Toolbar,p.Button),b=p.PanelBody,m=(p.Panel,p.Placeholder),y=p.Spinner,v=wp.data,f=v.useSelect,h=v.dispatch,O=wp.element,g=O.useState,j=O.useEffect,w=wp.blockSerializationDefaultParser.parse,_=wp.blockEditor,E=(_.InnerBlocks,_.useBlockProps,"presto-player/reusable-display"),R={title:"Reusable Block Display",category:"presto",attributes:{id:Number},supports:{align:!0,inserter:!1,reusable:!1,html:!1},icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("circle",{cx:"12",cy:"12",r:"10"}),React.createElement("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),React.createElement("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})),edit:function(e){var t,r=e.attributes,o=e.isSelected,i=e.clientId,p=r.id,v=c(),O=g(!1),_=Object(n.a)(O,2),E=_[0],R=_[1],k=g([]),P=Object(n.a)(k,2),C=P[0],x=P[1],S=g(""),N=Object(n.a)(S,2),T=N[0],D=N[1],B=f((function(e){if(p)return e("presto-player/player").getReusableVideo(p)}));j((function(){wp.data.dispatch("core/block-editor").selectBlock(i)}),[E]);var A=f((function(e){return e("core/editor").getBlocksByClientId(i)[0].innerBlocks}));return A&&null!=B&&B.id&&A.forEach((function(e){h("core/editor").updateBlockAttributes(e.clientId,{selectionOverrideClientId:i})})),j((function(){if(B.id){var e,t,r;R(!0);var n=w(null==B||null===(e=B.content)||void 0===e?void 0:e.raw);x([null==n||null===(t=n[0])||void 0===t?void 0:t.innerBlocks[0].blockName,null==n||null===(r=n[0])||void 0===r?void 0:r.innerBlocks[0].attrs]),D("post.php?post=".concat(B.id,"&action=edit"))}}),[B]),E?C?React.createElement(React.Fragment,null,React.createElement(s,null,React.createElement(b,null,React.createElement("p",null,"This is a reusable video that you can edit once and place anywhere."),React.createElement(d,{isSecondary:!0,href:"edit.php?post_type=pp_video_block"},a("Manage Media Hub","presto-player")))),React.createElement("div",{className:"block-library-block__reusable-block-container"},React.createElement("div",v,o&&React.createElement("div",{className:"reusable-block-edit-panel"},React.createElement("b",{className:"reusable-block-edit-panel__info"},null==B||null===(t=B.title)||void 0===t?void 0:t.raw),React.createElement(d,{isSecondary:!0,href:T,className:"reusable-block-edit-panel__button"},a("Edit Reusable Video","presto-player"))),React.createElement(u,null,React.createElement(l,{template:[C],templateLock:"all",renderAppender:!1}))))):void 0:React.createElement("div",v,React.createElement(m,null,React.createElement(y,null)))},save:function(){return null}}},function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return C})),r.d(t,"options",(function(){return x}));var n=r(5),a=r(21),o=r(22),l=r(23),c=r(14),i=r(39),s=r(18),p=r(9),u=wp.components,d=u.Button,b=u.Disabled,m=u.Toolbar,y=u.Placeholder,v=u.Spinner,f=u.withNotices,h=wp.editor,O=h.BlockControls,g=h.InspectorControls,j=wp.element.useEffect,w=wp.i18n.__,_=(0,wp.compose.compose)([Object(o.a)(),Object(a.a)()])(f((function(e){var t=e.attributes,r=e.setAttributes,n=e.branding,a=e.noticeOperations,o=e.loading,u=e.createVideo,f=e.lockSave,h=e.unlockSave,_=e.presetData,E=e.onRemoveSrc,R=e.renderKey,k=t.poster,P=t.src,C=t.id,x=Object(p.f)(P);return j((function(){x&&r({id:0});var e=Object(s.b)(P);r({video_id:e}),f(),u({src:P,external_id:e,type:"vimeo"}).catch((function(e){r({src:""}),function(e){a.removeAllNotices(),a.createErrorNotice(null==e?void 0:e.message)}(e)})).finally(h)}),[P]),P?o||!C?React.createElement(y,{className:"presto-player__placeholder is-loading"},React.createElement(v,null)):React.createElement(React.Fragment,null,React.createElement(O,null,React.createElement(m,null,React.createElement(d,{onClick:function(){return E()}},w("Replace","presto-player")))),React.createElement(g,null,React.createElement(l.a,{setAttributes:r,attributes:t})),React.createElement("figure",null,React.createElement(b,null,React.createElement(c.a,{poster:k,src:P,type:"vimeo",id:C,attributes:t,setAttributes:r,preset:_,branding:n,key:R})))):React.createElement("div",null,React.createElement(i.a,{icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("path",{d:"M22.875 10.063c-2.442 5.217-8.337 12.319-12.063 12.319-3.672 0-4.203-7.831-6.208-13.043-.987-2.565-1.624-1.976-3.474-.681l-1.128-1.455c2.698-2.372 5.398-5.127 7.057-5.28 1.868-.179 3.018 1.098 3.448 3.832.568 3.593 1.362 9.17 2.748 9.17 1.08 0 3.741-4.424 3.878-6.006.243-2.316-1.703-2.386-3.392-1.663 2.673-8.754 13.793-7.142 9.134 2.807z"})),label:w("Presto Vimeo Video","presto-player"),instructions:w("Enter Vimeo Video URL","presto-player"),placeholder:w("Vimeo URL","presto-player"),attributes:t,setAttributes:r,onSelectURL:function(e){e!==P&&r({src:e})}}))}))),E=r(17);function R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?R(Object(r),!0).forEach((function(t){Object(n.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):R(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=wp.i18n.__,C="presto-player/vimeo",x=k(k({},E.a),{},{attributes:k(k({},E.a.attributes),{},{video_id:{type:String}}),title:P("Presto Vimeo Video","presto-player"),description:P("A vimeo video wrapped in an awesome player.","presto-player"),icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("path",{d:"M22.875 10.063c-2.442 5.217-8.337 12.319-12.063 12.319-3.672 0-4.203-7.831-6.208-13.043-.987-2.565-1.624-1.976-3.474-.681l-1.128-1.455c2.698-2.372 5.398-5.127 7.057-5.28 1.868-.179 3.018 1.098 3.448 3.832.568 3.593 1.362 9.17 2.748 9.17 1.08 0 3.741-4.424 3.878-6.006.243-2.316-1.703-2.386-3.392-1.663 2.673-8.754 13.793-7.142 9.134 2.807z"})),edit:_})},function(e,t,r){"use strict";r.r(t),r.d(t,"name",(function(){return C})),r.d(t,"options",(function(){return x}));var n=r(5),a=r(21),o=r(22),l=r(23),c=r(14),i=r(39),s=r(18),p=r(9),u=wp.components,d=u.Button,b=u.Disabled,m=u.Toolbar,y=u.Placeholder,v=u.Spinner,f=u.withNotices,h=wp.editor,O=h.BlockControls,g=h.InspectorControls,j=wp.element.useEffect,w=wp.i18n.__,_=(0,wp.compose.compose)([Object(o.a)(),Object(a.a)()])(f((function(e){var t=e.attributes,r=e.setAttributes,n=e.noticeOperations,a=e.branding,o=e.createVideo,u=e.loading,f=e.presetData,h=e.onRemoveSrc,_=e.lockSave,E=e.unlockSave,R=e.renderKey,k=t.poster,P=t.src,C=t.id,x=Object(p.f)(P);return j((function(){x&&r({id:0});var e=Object(s.c)(P);r({video_id:e}),_(),o({src:P,external_id:e,type:"youtube"}).catch((function(e){r({src:""}),function(e){n.removeAllNotices(),n.createErrorNotice(null==e?void 0:e.message)}(e)})).finally(E)}),[P]),P?u||!C?React.createElement(y,{className:"presto-player__placeholder is-loading"},React.createElement(v,null)):React.createElement(React.Fragment,null,React.createElement(O,null,React.createElement(m,null,React.createElement(d,{onClick:function(){return h()}},w("Replace","presto-player")))),React.createElement(g,null,React.createElement(l.a,{setAttributes:r,attributes:t})),React.createElement("figure",null,React.createElement(b,null,React.createElement(c.a,{poster:k,src:P,type:"youtube",id:C,attributes:t,setAttributes:r,preset:f,branding:a,key:R})))):React.createElement("div",null,React.createElement(i.a,{icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("path",{d:"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"}),React.createElement("polygon",{points:"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"})),label:w("Presto Youtube Video","presto-player"),instructions:w("Enter Youtube Video URL","presto-player"),placeholder:w("Youtube URL","presto-player"),attributes:t,setAttributes:r,onSelectURL:function(e){e!==P&&r({src:e})}}))}))),E=r(17);function R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?R(Object(r),!0).forEach((function(t){Object(n.a)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):R(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=wp.i18n.__,C="presto-player/youtube",x=k(k({},E.a),{},{attributes:k(k({},E.a.attributes),{},{video_id:{type:String}}),title:P("Presto Youtube Video","presto-player"),description:P("A youtube video wrapped in an awesome player.","presto-player"),icon:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"presto-block-icon"},React.createElement("path",{d:"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"}),React.createElement("polygon",{points:"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"})),edit:_})}],[[54,1,2]]]);
19
- //# sourceMappingURL=admin-54e2cae1.js.map
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dist/blocks/admin-54e2cae1.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///external [\"wp\",\"i18n\"]","webpack:///external [\"wp\",\"components\"]","webpack:///./src/admin/blocks/util.js","webpack:///./src/admin/blocks/shared/components/ProBadge.js","webpack:///./src/admin/blocks/shared/components/ColorPopup.js","webpack:///external [\"wp\",\"element\"]","webpack:///./src/admin/blocks/shared/Player.js","webpack:///external [\"wp\",\"data\"]","webpack:///./src/admin/blocks/shared/helpers.js","webpack:///./src/admin/blocks/blocks/attributes.js","webpack:///./src/admin/blocks/blocks/block-options.js","webpack:///./src/shared/util.js","webpack:///./src/admin/blocks/blocks/with-player-edit.js","webpack:///./src/admin/blocks/blocks/with-player-data.js","webpack:///./src/admin/blocks/shared/overlays/index.js","webpack:///./src/admin/blocks/shared/presets/Behavior.js","webpack:///./src/admin/blocks/shared/presets/Controls.js","webpack:///./src/admin/blocks/shared/presets/Watermark.js","webpack:///./src/admin/blocks/shared/presets/Style.js","webpack:///./src/admin/blocks/shared/presets/Edit.js","webpack:///./src/admin/blocks/shared/presets/Preset.js","webpack:///./src/admin/blocks/shared/presets/index.js","webpack:///./src/admin/blocks/shared/settings/MutedPreviewOptions.js","webpack:///./src/admin/blocks/shared/settings/index.js","webpack:///./src/admin/blocks/shared/BlockInspectorControls.js","webpack:///../../../src/components/react-component-lib/utils/case.ts","webpack:///../../../src/components/react-component-lib/utils/attachProps.ts","webpack:///../../../src/components/react-component-lib/utils/index.tsx","webpack:///../../src/components/react-component-lib/createComponent.tsx","webpack:///../src/components/index.ts","webpack:///external [\"wp\",\"blockEditor\"]","webpack:///./src/admin/blocks/shared/components/UrlSelect.js","webpack:///./src/admin/blocks/shared/branding/index.js","webpack:///external [\"wp\",\"compose\"]","webpack:///./src/admin/ui/Menu.js","webpack:///./src/admin/blocks/shared/presets/CTA.js","webpack:///./src/shared/services/fetch.js","webpack:///./src/admin/blocks/shared/tracks/TracksEditor.js","webpack:///./src/admin/blocks/shared/Preview.js","webpack:///./src/admin/blocks/shared/overlays/components/DynamicText.js","webpack:///./src/admin/blocks/shared/LinkPlaceholder.js","webpack:///./src/admin/blocks/shared/components/LoadSelect.js","webpack:///./src/admin/blocks/shared/presets/parts/MailchimpConfig.js","webpack:///./src/admin/blocks/shared/presets/parts/MailerLiteConfig.js","webpack:///./src/admin/blocks/shared/presets/parts/ActiveCampaignConfig.js","webpack:///./src/admin/blocks/shared/presets/parts/FluentCRMConfig.js","webpack:///./src/admin/blocks/shared/presets/parts/ChooseProvider.js","webpack:///./src/admin/blocks/shared/presets/Email.js","webpack:///./src/admin/blocks/shared/chapters/components/Chapter.js","webpack:///./src/admin/blocks/shared/chapters/index.js","webpack:///./src/admin/blocks/shared/presets/parts/YoutubeChannelId.js","webpack:///./src/admin/blocks/shared/presets/ActionBar.js","webpack:///external [\"wp\",\"editor\"]","webpack:///./src/admin/blocks/shared/overlays/Edit.js","webpack:///./src/admin/blocks/shared/overlays/components/Overlay.js","webpack:///./src/admin/blocks/blocks sync index\\.js$","webpack:///./src/admin/blocks/blocks/reusable-edit/index.js","webpack:///./src/admin/blocks/plugins sync index\\.js$","webpack:///./src/admin/blocks/shared/services/bunny.js","webpack:///./src/admin/blocks/shared/media/chunk-upload.js","webpack:///./src/admin/blocks/shared/media/MediaItem.js","webpack:///./src/admin/blocks/shared/media/MediaFolder.js","webpack:///./src/admin/blocks/shared/media/MediaPopup.js","webpack:///./src/admin/blocks/blocks/bunny/StorageMedia.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/store/reducer.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/store/selectors.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/store/actions.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/store/store.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/utils.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/Sidebar.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/ProgressBar.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/ProgressOverlay.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/ThumbTemplate.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/video/Video.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/Loading.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/video/Videos.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/collections/Collection.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/collections/Collections.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/collections/CreateCollection.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/Header.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/Footer.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/BackButton.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/CollectionHeader.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/upload/Upload.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/upload/Uploads.js","webpack:///./src/admin/blocks/shared/media/MediaPopupTemplate.js","webpack:///./src/admin/blocks/blocks/bunny/popup/stream/Popup.js","webpack:///./src/admin/blocks/blocks/bunny/StreamMedia.js","webpack:///./src/admin/blocks/blocks/bunny/useStorageConnection.js","webpack:///./src/admin/blocks/blocks/bunny/useStreamConnection.js","webpack:///./src/admin/blocks/blocks/bunny/APIPlaceholder.js","webpack:///./src/admin/blocks/blocks/bunny/edit.js","webpack:///./src/admin/blocks/blocks/bunny/index.js","webpack:///./src/admin/blocks/shared/audio-placeholder.js","webpack:///./src/admin/blocks/blocks/audio/HostedAudioPlaceholder.js","webpack:///./src/admin/blocks/shared/audioPresets/Preview.js","webpack:///./src/admin/blocks/shared/audioPresets/Behavior.js","webpack:///./src/admin/blocks/shared/audioPresets/Controls.js","webpack:///./src/admin/blocks/shared/audioPresets/Style.js","webpack:///./src/admin/blocks/shared/audioPresets/Edit.js","webpack:///./src/admin/blocks/shared/audioPresets/Preset.js","webpack:///./src/admin/blocks/shared/audioPresets/index.js","webpack:///./src/admin/blocks/blocks/audio/AudioBlockInspectorControl.js","webpack:///./src/admin/blocks/blocks/audio/with-player-edit.js","webpack:///./src/admin/blocks/blocks/audio/with-player-data.js","webpack:///./src/admin/blocks/blocks/audio/edit.js","webpack:///./src/admin/blocks/blocks/audio/index.js","webpack:///./src/admin/blocks/store/player/reducer.js","webpack:///./src/admin/blocks/store/player/selectors.js","webpack:///./src/admin/blocks/store/player/actions.js","webpack:///./src/admin/blocks/store/player/controls.js","webpack:///./src/admin/blocks/store/player/resolvers.js","webpack:///./src/admin/blocks/store/player/index.js","webpack:///./src/admin/blocks/shared/ProUpgradeModal.js","webpack:///./src/admin/blocks/blocks.js","webpack:///./src/admin/blocks/plugins/reusable-videos/SearchForm.js","webpack:///./src/admin/blocks/plugins/reusable-videos/ShortcodeInput.js","webpack:///./src/admin/blocks/plugins/reusable-videos/Video.js","webpack:///./src/admin/blocks/plugins/reusable-videos/render.js","webpack:///./src/admin/blocks/plugins/reusable-videos/index.js","webpack:///./src/admin/blocks/shared/placeholder.js","webpack:///./src/admin/blocks/blocks/hosted/HostedPlaceholder.js","webpack:///./src/admin/blocks/blocks/hosted/edit.js","webpack:///./src/admin/blocks/blocks/hosted/index.js","webpack:///./src/admin/blocks/blocks/reusable-display/edit.js","webpack:///./src/admin/blocks/blocks/reusable-display/index.js","webpack:///./src/admin/blocks/blocks/vimeo/edit.js","webpack:///./src/admin/blocks/blocks/vimeo/index.js","webpack:///./src/admin/blocks/blocks/youtube/edit.js","webpack:///./src/admin/blocks/blocks/youtube/index.js"],"names":["module","exports","window","wp","element","useRef","useEffect","usePrevious","value","ref","current","snackbarNotice","status","message","data","dispatch","createNotice","type","timeToSeconds","time","seconds","pieces","split","length","parseInt","secondsToTime","number","minutes","Math","floor","sanitizeTime","draft","replace","includes","substr","indexOf","index","substring","getProvider","src","match","__","i18n","className","components","ColorPicker","ColorIndicator","Popover","Button","Flex","useState","color","setColor","onFocus","open","setOpen","original","setOriginal","css","width","height","borderRadius","colorValue","onClick","position","focusOnMount","onFocusOutside","e","onChangeComplete","hex","disableAlpha","display","alignItems","justifyContent","padding","margin","isTertiary","isPrimary","useSelect","classes","preset","branding","attributes","adminPreview","currentTime","preload","overlays","chapters","mutedOverlay","mutedPreview","youtube","select","playerCSS","style","border_radius","background_color","control_color","hexCode","opacity","r","g","b","convertHex","caption_background","email_collection","logo_width","isAdmin","bunny","thumbnail","previewThumbnail","preview","channelId","channel_id","tracks","captions","kind","label","srclang","default","blockAttributes","poster","provider","mediaTitle","title","slot","enabled","left","focalPoint","x","top","y","transform","helpers","setUrlPrivate","separator","location","href","newurl","history","pushState","path","setUrlPublic","unsetUrlParams","removed","url","parameters","parsedUrl","URL","forEach","param","searchParams","delete","removeURLParameters","visibility","String","blockAlignment","Object","mutedPreviewCaptions","Boolean","mutedOverlayType","mutedOverlayText","mutedOverlaySrc","mutedOverlayImageWidth","Number","mutedOverlayFocalPoint","text","Array","items","category","supports","align","save","getYoutubeId","getVimeoId","parseUrl","exec","determineVideoUrlType","youtube_id","video_id","vimeo_id","$video_id","$type","isHLS","createHigherOrderComponent","compose","WrappedComponent","props","presets","setAttributes","defaultPreset","isSelected","presetData","setPresetData","count","setCount","id","openGeneralSidebar","selectionOverrideClientId","selectBlock","thisPreset","find","onUpdate","logo","prevChapters","times","map","item","prevTimes","_","difference","createVideo","a","external_id","attachment_id","apiFetch","method","post_id","getCurrentPostId","lockSave","lockPostSaving","unlockSave","unlockPostSaving","onRemoveSrc","confirm","undefined","previewSrc","renderKey","withSelect","loading","isResolving","getPresets","getDefaultPreset","BaseControl","withNotices","Spinner","VideoOverlays","modal","setModal","prestoPlayer","isPremium","setProModal","ProBadge","Edit","closeModal","updateOverlayAttribute","ToggleControl","HorizontalRule","AlignmentMatrixControl","__experimentalAlignmentMatrixControl","SelectControl","state","updateState","help","onChange","auto_hide","checked","save_player_position","captions_enabled","play_video_viewport","sticky_scroll","sticky_scroll_position","on_video_end","options","hide_youtube","lazy_load_youtube","play","rewind","progress","volume","mute","speed","pip","fullscreen","RadioControl","RangeControl","watermark","defaults","backgroundColor","keys","key","updateWatermarkState","updated","DynamicText","update","selected","VisualLabel","ColorPopup","min","max","hide_logo","labelPosition","caption_style","TextControl","Icon","Notice","FlexItem","FlexBlock","Modal","EditPlayerPreset","addPreset","onSave","updatePreset","name","reset_on_end","skin","cta","action_bar","setLoading","error","setError","menu","setMenu","thisName","setThisName","setState","setValue","genericError","putPreset","addQueryArgs","root","prestoVersionString","_method","saved","updateYoutube","presto_player_youtube","response","setYoutube","onClose","console","log","createPreset","tabs","icon","component","Controls","Behavior","Style","Email","CTA","ActionBar","Watermark","onRequestClose","overlayClassName","data-cy","hideLabelFromVision","placeholder","autoFocus","Menu","onSelect","Preview","isDismissible","isBusy","disabled","ButtonGroup","isActive","remove","setPreset","onEdit","confirmOpen","setConfirmOpen","closeConfirm","trashPreset","role","tabIndex","aria-label","border","slug","textAlign","fontSize","charAt","toUpperCase","fontWeight","textTransform","is_locked","maxWidth","isDestructive","boxShadow","setName","removePreset","i","Preset","PanelRow","FocalPointPicker","blockEditor","MediaUpload","MediaUploadCheck","VIDEO_OVERLAY_ALLOWED_MEDIA_TYPES","instanceId","videoOverlayDescription","image","allowedTypes","render","hidden","sprintf","dimensions","VIDEO_POSTER_ALLOWED_MEDIA_TYPES","useInstanceId","VideoSettings","autoplay","playsInline","videoPosterDescription","toggleAttribute","attribute","newValue","MutedPreviewOptions","target","textDecoration","aria-describedby","PanelBody","initialOpen","eventNameSuffix","LinkControl","__experimentalLinkControl","prependHTTP","setSettings","settings","visible","setVisible","nextLinkValue","setNextLinkValue","linkValue","opensInNewTab","onChangeLink","nextValue","didToggleSettingForNewLink","newUrl","isSmall","VIDEO_LOGO_ALLOWED_MEDIA_TYPES","PlayerSettings","pickerRender","setPickerRender","saveOptions","updateBranding","isSecondary","lodash","partial","noop","NavigableMenu","Animate","children","orientation","activeClass","setSelected","setOrigin","handleClick","itemKey","onNavigate","childIndex","child","click","selectedTab","selectedId","origin","aria-labelledby","classnames","class","xmlns","viewBox","aria-hidden","focusable","d","itemId","aria-controls","ariaHidden","percentage","show_rewatch","show_skip","headline","show_button","button_text","button_link","updateCTAState","marks","shiftStep","isLink","val","bottom_text","button_radius","button_color","button_text_color","background_opacity","defaultProps","catName","eyeColor","age","use","createNonceMiddleware","nonce","createRootURLMiddleware","MenuItem","FormFileUpload","MenuGroup","ToolbarGroup","ToolbarButton","Dropdown","SVG","Rect","Path","ALLOWED_TYPES","captionIcon","fill","fillRule","clipRule","TrackList","content","onEditPress","track","SingleTrackEditor","onRemove","srcLang","fileName","startsWith","lastIndexOf","newLabel","newSrcLang","changes","hasChanges","TracksEditor","mediaUpload","getSettings","trackBeingEdited","setTrackBeingEdited","contentClassName","renderToggle","isOpen","onToggle","showTooltip","aria-expanded","aria-haspopup","renderContent","newTrack","newTracks","filter","_track","trackIndex","event","files","filesList","onFileChange","accept","openFileDialog","Disabled","isDisabled","setRenderKey","previews","email","defaultHeadline","bottomText","allowSkip","allow_skip","skipText","buttonText","bottom-text","button-link","allow-skip","allow-rewatch","skip-text","show-button","button-text","prestoPlayerAdmin","TextareaControl","more","setMore","preventDefault","marginTop","autoComplete","Placeholder","onSelectURL","instructions","onSubmit","marginBottom","updateEmailState","fetching","setFetching","lists","setLists","fetchLists","fetched","listOptions","list","LoadSelect","provider_list","provider_tag","groups","setGroups","fetchGroups","fetchingLists","setFetchingLists","fetchingTags","setFetchingTags","tags","setTags","fetchTags","tagOptions","tag","optionsMap","presto_player_activecampaign","presto_player_mailchimp","presto_player_mailerlite","presto_player_fluentcrm","fetchSettings","settingsToSet","connected","found","setting","MailchimpConfig","MailerLiteConfig","ActiveCampaignConfig","FluentCRMConfig","emailProviderOptions","ChooseProvider","Chapter","add","showNotice","draftTime","setDraftTime","onBlur","setDraft","sort","chapter","itemIndex","updateChapter","removeChapter","ExternalLink","saving","setSaving","userCanReadSettings","canUser","handleSubmit","editYoutube","setEditYoutube","updateActionBar","button_type","percentage_start","button_count","YoutubeChannelId","renderYoutubeChannelForm","UrlSelect","EditOverlay","setCurrentTime","getPreset","addOverlay","defaultOverlay","startTime","endTime","link","nanoid","shouldCloseOnClickOutside","overlay","overlayIndex","updateOverlay","removeOverlay","updateCurrentTime","process","nextTick","updateCurrentTimeState","invert_time","withFocusReturn","Overlay","draftStartTime","setDraftStartTime","draftEndTime","setDraftEndTime","draftPosition","setDraftPosition","startControl","updateStartTime","justify","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","resolve","InnerBlocks","useBlockProps","plugins","unregisterPlugin","getPlugins","inserter","reusable","html","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","x1","y1","x2","y2","edit","blockProps","clientId","innerBlocks","getBlock","setTemplateValidity","insertBlockType","block","blocks","createBlock","insertBlock","templateLock","renderAppender","ButtonBlockAppender","points","rx","ry","Content","signURL","file","onProgress","onComplete","onError","chunk","cancelled","max_request_size","wp_max_upload_size","slice_size","upload_file","start","next_slice","blob","slice","chunks","ceil","size","body","FormData","append","file_url","percent_done","FileReader","cancel","date","isEncoding","encodeProgress","bytes","round","pow","bytesToSize","updated_at","Date","toLocaleString","Card","CardBody","DropZone","DropZoneProvider","header","onLoad","folders","progressMessage","onDelete","onUpload","deleteConfirm","setDeleteConfirm","buttonRef","hours","ampm","deleteSelected","jQuery","folder","MediaFolder","MediaItem","align-items","onFilesDrop","previewUrl","created_at","getHours","getMinutes","getDate","getMonth","getFullYear","closePopup","noticeOperations","isPrivate","videos","setVideos","setProgress","setProgressMessage","endpoint","uploadFile","chunkUpload","percent","storeFile","deleteVideo","video","loadVideos","MediaPopup","removeAllNotices","createErrorNotice","combineReducers","videosReducer","action","guid","collectionsReducer","uploadsReducer","requestReducer","private","collection","search","UIReducer","videosFetched","createCollection","errorReducer","collections","uploads","isLoading","errors","currentCollection","ui","arg","requestType","addVideos","removeVideo","setCollections","addCollection","setIsPrivate","setSearch","setCollectionRequest","setUploads","addUploads","removeUpload","setVideosFetched","setUI","addError","removeError","registerStore","reducer","selectors","actions","isPlayable","availableResolutions","isSelectable","getStatusText","getLengthToTime","toISOString","toString","toFixed","useContext","deleting","setDeleting","setVideo","controlCSS","getThumbnail","webPURLSigned","webPURL","ProgressBar","footer","badge","before","after","ProgressOverlay","thumbnailURLSigned","thumbnailURL","renderThumbnail","storageSize","Fragment","notice","setNotice","fetch","interval","setInterval","sync","clearInterval","items_per_page","Loading","flex","collectionId","Video","videoCount","fetchCollections","Collection","busy","setBusy","onCreate","afterUpload","multiple","CreateCollection","onChoose","canSelect","setCanSelect","deleteCollection","BackButton","uploader","setMessage","created","setCreated","upload","storeVideo","Upload","mainContent","sidebar","addUpload","Header","Uploads","Sidebar","Footer","MediaPopupTemplate","CollectionHeader","Collections","Videos","playlistURL","baseUrl","onRefetch","autoSubmit","apikey","setApikey","saveMessage","setSaveMessage","step","setStep","getError","errorString","saveKey","api_key","success","totalSteps","useStreamConnection","useStorageConnection","required","DropdownMenu","Toolbar","editor","BlockControls","InspectorControls","withPlayerData","withPlayerEdit","mediaPopup","setMediaPopup","setup","setSetup","stream","storage","isSetup","setIsSetup","disableStream","setDisableStream","isAPILoaded","setIsAPILoaded","setFetchingSettings","autoSubmitStream","setAutoSubmitStream","disableLegacyStorage","disable_legacy_storage","selectVideo","media","catch","finally","presto_player_bunny_pull_zones","presto_player_bunny_storage_zones","presto_player_bunny_stream_private","presto_player_bunny_stream_public","storageSetup","option","private_id","public_id","streamSetup","pull_zone_url","setPreview","setThumbnail","moreButtons","controls","push","APIPlaceholder","BlockInspectorControls","Player","StorageMedia","StreamMedia","blockOptions","premium","description","variations","isDefault","baseCurrentUrl","InsertFromURLPopover","withFilters","labels","mediaPreview","notices","isAppender","addToGallery","onCancel","onDoubleClick","allowURLs","setSrc","isURLInputVisible","setIsURLInputVisible","onChangeSrc","openURLInput","closeURLInput","onSubmitSrc","renderPlaceholder","placeholderClassName","renderUrlSelectionUI","isPressed","fallback","mediaLibraryButton","gallery","isArray","stopPropagation","renderMediaUploadChecked","ALLOWED_MEDIA_TYPES","switcher","getAudioPresets","addAudioPreset","removeAudioPreset","updateAudioPreset","AUDIO_POSTER_ALLOWED_MEDIA_TYPES","AudioBlockInspectorControl","audioPosterDescription","getDefaultAudioPreset","HostedAudioPlaceholder","audio","pick","addVideo","presetReducer","audioPresetReducer","presetLoadingReducer","videosLoadingReducer","total","total_pages","hasResolved","isError","proModalReducer","brandingReducer","youtubeReducer","presetSettingsReducer","optionsApi","then","setBranding","presto_player_branding","setPresetSettings","presto_player_presets","setPresetAudioSettings","presto_player_audio_presets","audioPresetSettingsReducer","getReusableVideos","getReusableVideo","default_preset","default_player_preset","presetsLoading","player_css","proModal","setPresetLoading","setVideosLoading","updateVideos","appendVideos","setPresets","setAudioPresets","args","fetchOptions","fetchFromAPI","fetchFromWPAPI","FETCH_FROM_API","FETCH_FROM_WP_API","query","parse","res","json","headers","get","Promise","reject","resolvers","registerBlockType","unregisterBlockType","registerPlugin","autoload","getContext","register","unregister","cache","context","changedNames","loadModules","selectedBlockId","require","getSelectedBlockClientId","clearSelectedBlock","getBlocks","ProUpgradeModal","document","getElementById","subscribe","isSavingPost","isAutosavingPost","store","getState","VisuallyHidden","InserterSearchForm","searchInput","as","htmlFor","focus","copyTextToClipboard","textToCopy","btn","currentTarget","textContent","setTimeout","navigator","clipboard","isSecureContext","writeText","textArea","createElement","appendChild","rej","execCommand","InserterShortcodeInput","readOnly","Panel","editPost","PluginSidebar","PluginSidebarMoreMenuItem","useCallback","getBlockType","blockSerializationDefaultParser","forceUpdate","fillOpacity","hasMore","setHasMore","page","setPage","setIsLoading","debounceOnSearch","debounce","term","doFetch","per_page","nextPage","newPage","getIcon","raw","blockName","SearchForm","flexWrap","emptyPlaceholder","deprecated","URLPopover","noticeUI","onUploadError","getBlobByURL","isBlobURL","upgradeNotice","setUpgradeNotice","HostedPlaceholder","newSrc","youtubeBlock","replaceBlock","vimeoBlock","attachmend_id","setHasResolved","setBlock","setLink","getBlocksByClientId","updateBlockAttributes","attrs","template","prevSrc","LinkPlaceholder"],"mappings":"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","file":"blocks/admin-54e2cae1.js","sourcesContent":["(function() { module.exports = window[\"wp\"][\"i18n\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","const { useRef, useEffect } = wp.element;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function snackbarNotice({ status = \"success\", message }) {\n wp.data.dispatch(\"core/notices\").createNotice(\n status, // Can be one of: success, info, warning, error.\n message, // Text string to display.\n { type: \"snackbar\" }\n );\n}\n\nexport const bytesToSize = (bytes) => {\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes == 0) return \"0 Byte\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return Math.round(bytes / Math.pow(1024, i), 2) + \" \" + sizes[i];\n};\n\nexport const toDate = (d) => {\n d = new Date(d);\n var hours = d.getHours();\n var minutes = d.getMinutes();\n var ampm = hours >= 12 ? \"pm\" : \"am\";\n hours = hours % 12;\n hours = hours ? hours : 12;\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n\n return (\n d.getDate() +\n \"-\" +\n (d.getMonth() + 1) +\n \"-\" +\n d.getFullYear() +\n \" at \" +\n hours +\n \":\" +\n minutes +\n ampm\n );\n};\n\nexport function timeToSeconds(time) {\n let pieces = time.split(\":\");\n let seconds;\n if (pieces.length > 1) {\n seconds = parseInt(pieces[0]) * 60;\n }\n return parseInt(pieces[1]) + parseInt(seconds);\n}\n\nexport function secondsToTime(number) {\n let seconds = parseInt(number, 10);\n let minutes = Math.floor(seconds / 60);\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n return minutes + \":\" + seconds;\n}\n\nexport function sanitizeTime(time) {\n let draft = time;\n // remove any letters\n draft = draft.replace(/[^\\d\\d:\\d\\d.-]/g, \"\");\n // make sure we have :\n if (!draft.includes(\":\")) {\n return `${draft}:00`;\n }\n\n // must have something before :00\n if (draft.substr(0, draft.indexOf(\":\")).length === 0) {\n draft = `0${draft}`;\n }\n\n // only allow 2 characters after :\n let index = draft.indexOf(\":\");\n draft = draft.substring(0, index + 3);\n return draft;\n}\n\nexport function getProvider(src) {\n const provider = \"self-hosted\";\n\n if (src) {\n const yt_rx = /^(?:https?:\\/\\/)?(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n const has_match_youtube = src.match(yt_rx);\n\n if (has_match_youtube) {\n return \"youtube\";\n }\n\n const vm_rx = /(https?:\\/\\/)?(www\\.)?(player\\.)?vimeo\\.com\\/([a-z]*\\/)*([‌​0-9]{6,11})[?]?.*/;\n const has_match_vimeo = src.match(vm_rx);\n\n if (has_match_vimeo) {\n return \"vimeo\";\n }\n\n if (src.indexOf(\"https://vz-\") > -1 && src.indexOf(\"b-cdn.net\") > -1) {\n return \"bunny\";\n }\n\n if (src.indexOf(\".mp3\") > -1) {\n return \"audio\";\n }\n }\n return provider;\n}\n","const { __ } = wp.i18n;\n\nexport default function () {\n return (\n <div className=\"presto-player__pro-badge\">{__(\"Pro\", \"presto-player\")}</div>\n );\n}\n","/** @jsx jsx */\nconst { ColorPicker, ColorIndicator, Popover, Button, Flex } = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { __ } = wp.i18n;\nimport { jsx } from \"@emotion/core\";\n\nexport default ({ color, setColor, onFocus }) => {\n const [open, setOpen] = useState(false);\n const [original, setOriginal] = useState(color);\n\n useEffect(() => {\n if (open && color) {\n setOriginal(color);\n }\n }, [open]);\n\n return (\n <span>\n <ColorIndicator\n css={{ width: \"25px\", height: \"25px\", borderRadius: \"9999px\" }}\n colorValue={color}\n onClick={() => {\n setOpen(!open);\n onFocus && onFocus();\n }}\n />\n {!!open && (\n <Popover\n position=\"bottom left\"\n focusOnMount\n onFocusOutside={(e) => {\n setOpen(false);\n }}\n >\n <ColorPicker\n color={color || \"\"}\n onChangeComplete={(value) => value?.hex && setColor(value)}\n disableAlpha\n />\n <div\n css={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"10px\",\n }}\n >\n <Button\n css={{ margin: \"0 5px\" }}\n isTertiary\n onClick={() => {\n setColor({ hex: null });\n setOpen(false);\n }}\n >\n {__(\"Reset\", \"presto-player\")}\n </Button>\n <div\n css={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n padding: \"10px\",\n }}\n >\n <Button\n css={{ margin: \"0 5px\" }}\n isTertiary\n onClick={() => {\n setColor({ hex: original });\n setOpen(false);\n }}\n >\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n <Button isPrimary onClick={() => setOpen(false)}>\n {__(\"Apply\", \"presto-player\")}\n </Button>\n </div>\n </div>\n </Popover>\n )}\n </span>\n );\n};\n","(function() { module.exports = window[\"wp\"][\"element\"]; }());","import { PrestoPlayer } from \"@presto-player/react\";\nimport { getProvider } from \"../util\";\nconst { useSelect } = wp.data;\n\nexport default ({\n src,\n classes,\n preset,\n branding,\n attributes,\n adminPreview,\n currentTime,\n preload = \"metadata\",\n overlays,\n type,\n}) => {\n const { chapters, mutedOverlay, mutedPreview } = attributes;\n\n const youtube = useSelect((select) => {\n return select(\"presto-player/player\")?.youtube();\n });\n\n const css = useSelect((select) => {\n return select(\"presto-player/player\")?.playerCSS();\n });\n\n const convertHex = (hexCode, opacity = 1) => {\n var hex = hexCode.replace(\"#\", \"\");\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n\n var r = parseInt(hex.substring(0, 2), 16),\n g = parseInt(hex.substring(2, 4), 16),\n b = parseInt(hex.substring(4, 6), 16);\n\n /* Backward compatibility for whole number based opacity values. */\n if (opacity > 1 && opacity <= 100) {\n opacity = opacity / 100;\n }\n\n return \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + opacity + \")\";\n };\n\n const mutedOverlayContent = () => {\n return (\n <div\n className=\"presto-player__overlay is-image\"\n style={{\n position: \"absolute\",\n width: `${mutedOverlay?.width || 100}%`,\n left: `${(mutedOverlay?.focalPoint?.x || 0.5) * 100}%`,\n top: `${(mutedOverlay?.focalPoint?.y || 0.5) * 100}%`,\n }}\n >\n <img\n src={mutedOverlay?.src}\n style={{\n transform: \"translateX(-50%) translateY(-50%)\",\n }}\n />\n </div>\n );\n };\n\n return (\n <div\n className={\"wp-block-video presto-block-video\"}\n style={\n type === \"audio\"\n ? {\n \"--presto-player-border-radius\": `${preset?.border_radius}px`,\n ...(preset?.background_color\n ? {\n \"--plyr-audio-controls-background\": preset.background_color,\n }\n : { \"--plyr-audio-controls-background\": branding?.color }),\n ...(preset?.control_color\n ? {\n \"--plyr-audio-control-color\": preset.control_color,\n \"--plyr-range-thumb-background\": preset.control_color,\n \"--plyr-range-fill-background\": preset.control_color,\n \"--plyr-audio-progress-buffered-background\": convertHex(\n preset.control_color || branding?.color || \"#00b3ff\",\n 0.5\n ),\n }\n : {\n \"--plyr-audio-control-color\": \"#ffffff\",\n \"--plyr-range-thumb-background\": \"#ffffff\",\n \"--plyr-range-fill-background\": \"#ffffff\",\n }),\n \"--plyr-range-thumb-shadow\": `0px`,\n }\n : {\n \"--presto-player-border-radius\": `${preset?.border_radius}px`,\n ...(preset?.caption_background\n ? { \"--plyr-captions-background\": preset.caption_background }\n : {}),\n ...(branding?.color\n ? { \"--plyr-color-main\": branding.color }\n : {}),\n \"--presto-player-email-border-radius\": `${\n preset?.email_collection?.border_radius || 0\n }px`,\n \"--presto-player-logo-width\": `${branding?.logo_width || 75}px`,\n }\n }\n >\n <PrestoPlayer\n src={src}\n css={css}\n classes={classes}\n currentTime={currentTime}\n overlays={overlays}\n isAdmin={true}\n preload={preload}\n preset={preset}\n bunny={{\n thumbnail: attributes?.previewThumbnail,\n preview: attributes?.preview,\n }}\n youtube={{\n channelId: youtube?.channel_id,\n }}\n tracks={\n !!preset?.captions && [\n {\n kind: \"captions\",\n label: \"English\",\n srclang: \"en\",\n src: \"/path/to/captions.en.vtt\",\n default: true,\n },\n ]\n }\n branding={branding}\n chapters={chapters}\n blockAttributes={attributes}\n poster={attributes.poster}\n provider={type === \"audio\" ? \"audio\" : getProvider(src)}\n mediaTitle={attributes.title}\n >\n <div slot=\"player-end\">\n {mutedPreview?.enabled &&\n mutedOverlay?.enabled &&\n mutedOverlayContent()}\n {adminPreview}\n </div>\n </PrestoPlayer>\n </div>\n );\n};\n","(function() { module.exports = window[\"wp\"][\"data\"]; }());","const helpers = {\n setUrlPrivate: () => {\n const separator = window.location.href.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n const newurl =\n window.location.href + separator + \"presto_video_type=private\";\n window.history.pushState({ path: newurl }, \"\", newurl);\n },\n setUrlPublic: () => {\n const separator = window.location.href.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n const newurl =\n window.location.href + separator + \"presto_video_type=public\";\n window.history.pushState({ path: newurl }, \"\", newurl);\n },\n unsetUrlParams: () => {\n let removed = removeURLParameters(window.location.href, [\n \"presto_video_type\",\n ]);\n window.history.pushState({ path: removed }, \"\", removed);\n },\n};\n\nfunction removeURLParameters(url, parameters = []) {\n const parsedUrl = new URL(url);\n parameters.forEach((param) => {\n parsedUrl.searchParams.delete(param);\n });\n\n return parsedUrl.href;\n}\n\nexport default helpers;\n","export default {\n visibility: {\n type: String,\n default: \"public\",\n },\n color: {\n type: String,\n default: \"#00b3ff\",\n },\n blockAlignment: {\n type: String,\n },\n mutedPreview: {\n type: Object,\n default: {\n enabled: false,\n captions: false,\n },\n },\n mutedOverlay: {\n type: Object,\n default: {\n enabled: false,\n src: \"\",\n width: 200,\n focalPoint: {\n x: 0.5,\n y: 0.5,\n },\n },\n },\n mutedPreviewCaptions: {\n type: Boolean,\n },\n mutedOverlayType: {\n type: String,\n default: \"text\",\n },\n mutedOverlayText: {\n type: String,\n default: \"Click to play\",\n },\n mutedOverlaySrc: {\n type: String,\n },\n mutedOverlayImageWidth: {\n type: Number,\n default: 200,\n },\n mutedOverlayFocalPoint: {\n type: Object,\n },\n mutedOverlay: {\n type: Object,\n default: {\n enabled: false,\n type: \"text\",\n text: \"\",\n src: \"\",\n width: 200,\n focalPoint: {\n x: 0.5,\n y: 0.5,\n },\n },\n },\n autoplay: {\n type: Boolean,\n },\n preload: {\n type: String,\n },\n playsInline: {\n type: Boolean,\n },\n id: {\n type: Number,\n },\n attachment_id: {\n type: Number,\n },\n src: {\n type: String,\n },\n imageID: {\n type: Number,\n },\n poster: {\n type: String,\n },\n content: {\n type: Boolean,\n },\n preset: {\n type: Number,\n },\n chapters: {\n type: Array,\n default: [],\n },\n overlays: {\n type: Array,\n default: [],\n },\n tracks: {\n type: \"array\",\n items: {\n type: \"object\",\n },\n default: [],\n },\n};\n","import attributes from \"./attributes\";\n\nexport default {\n attributes,\n\n category: \"presto\",\n\n supports: {\n align: true,\n },\n\n // dynamic save function\n save: function () {\n return null;\n },\n};\n","export function getYoutubeId(url) {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = (url || \"\").match(regExp);\n return match && match?.[2]?.length === 11 ? match[2] : null;\n}\n\nexport function getVimeoId(url) {\n const regExp = /^.*(vimeo\\.com\\/)((channels\\/[A-z]+\\/)|(groups\\/[A-z]+\\/videos\\/))?([0-9]+)/;\n const parseUrl = regExp.exec(url || \"\");\n return parseUrl?.[5] || \"\";\n}\n\nexport function saveAttachment({ video_id, src, type }) {\n return new Promise((resolve, reject) => {\n jQuery.post(\n prestoPlayer.ajaxurl,\n {\n action: \"presto_save_external_attachment\",\n _wpnonce: prestoPlayer.nonce,\n post_id: wp.data.select(\"core/editor\").getCurrentPostId(),\n video_id,\n src,\n type,\n },\n function ({ data }) {\n resolve(data);\n }\n );\n });\n}\n\nexport function determineVideoUrlType(url) {\n const youtube_id = getVimeoId(url);\n if (youtube_id) {\n return {\n video_id: youtube_id,\n type: \"vimeo\",\n };\n }\n\n const vimeo_id = getYoutubeId(url);\n if (vimeo_id) {\n return {\n video_id: vimeo_id,\n type: \"youtube\",\n };\n }\n\n return {\n $video_id: 0,\n $type: \"none\",\n };\n}\n\nexport function convertChapter(chapter) {\n let draft = time;\n // remove any letters\n draft = draft.replace(/[^\\d\\d:\\d\\d.-]/g, \"\");\n // make sure we have :\n if (!draft.includes(\":\")) {\n return `${draft}:00`;\n }\n\n // must have something before :00\n if (draft.substr(0, draft.indexOf(\":\")).length === 0) {\n draft = `0${draft}`;\n }\n\n // only allow 2 characters after :\n let index = draft.indexOf(\":\");\n draft = draft.substring(0, index + 3);\n return draft;\n}\n\n// get file extension\nexport function getFileExtension(url) {\n return url.split(/[#?]/)[0].split(\".\").pop().trim();\n}\n\n// is the source hls?\nexport function isHLS(url) {\n return typeof url === \"string\" && url.includes(\".m3u8\");\n}\n","/**\n * WordPress dependencies\n */\nconst { createHigherOrderComponent } = wp.compose;\nconst { useEffect, useState } = wp.element;\nimport { usePrevious } from \"@/admin/blocks/util\";\nimport apiFetch from \"@/shared/services/fetch\";\n\n/**\n * Higher order component factory for injecting the editor colors as the\n * `colors` prop in the `withColors` HOC.\n *\n * @return {Function} The higher order component.\n */\nexport default () =>\n createHigherOrderComponent(\n (WrappedComponent) => (props) => {\n const {\n presets,\n attributes,\n setAttributes,\n defaultPreset,\n isSelected,\n branding,\n } = props;\n const [presetData, setPresetData] = useState({});\n const [count, setCount] = useState(1);\n let { poster, chapters } = attributes;\n\n useEffect(() => {\n if (isSelected && attributes?.id) {\n wp.data\n .dispatch(\"core/edit-post\")\n .openGeneralSidebar(\"edit-post/block\");\n }\n }, [isSelected]);\n\n // don't allow selection if there is an override\n useEffect(() => {\n if (isSelected && attributes?.selectionOverrideClientId) {\n wp.data\n .dispatch(\"core/block-editor\")\n .selectBlock(attributes?.selectionOverrideClientId);\n }\n }, [isSelected]);\n\n // set preset data when presets are loaded\n useEffect(() => {\n if (presets && presets.length) {\n const thisPreset = presets.find((preset) => {\n return preset.id === attributes?.preset;\n });\n if (thisPreset) {\n setPresetData(thisPreset);\n } else {\n setPresetData(defaultPreset);\n setAttributes({ preset: defaultPreset?.id });\n }\n }\n }, [presets, attributes?.preset]);\n\n // re-render the player if presetdata, poster or chapters change\n useEffect(() => {\n onUpdate();\n }, [poster, presetData, chapters, branding.logo]);\n\n // increment update key\n const onUpdate = () => {\n setCount(count + 1);\n };\n\n // re-render only if times change\n const prevChapters = usePrevious(chapters);\n useEffect(() => {\n let times = chapters?.map((item) => item.time);\n let prevTimes = prevChapters?.map((item) => item.time);\n if (_.difference(times, prevTimes).length) {\n onUpdate();\n }\n }, [chapters]);\n\n const createVideo = async ({\n src,\n external_id,\n attachment_id,\n type,\n title,\n }) => {\n if (!src && !external_id && !attachment_id) {\n return;\n }\n const { id } = await apiFetch({\n method: \"POST\",\n path: \"/presto-player/v1/videos\",\n data: {\n attachment_id,\n post_id: wp.data.select(\"core/editor\").getCurrentPostId(),\n external_id,\n ...(title ? { title } : {}),\n src,\n type,\n },\n });\n setAttributes({ id });\n };\n\n const lock = () => {\n return wp.data.dispatch(\"core/editor\").lockPostSaving(\"presto-player\");\n };\n\n const unlock = () => {\n return wp.data\n .dispatch(\"core/editor\")\n .unlockPostSaving(\"presto-player\");\n };\n\n function onRemoveSrc() {\n let r = confirm(\"Remove this video?\");\n if (r) {\n setAttributes({\n src: \"\",\n id: undefined,\n ...(attributes?.thumbnail ? { thumbnail: null } : {}),\n ...(attributes?.preview ? { preview: null } : {}),\n ...(attributes?.previewSrc ? { previewSrc: null } : {}),\n ...(attributes?.previewThumbnail ? { previewThumbnail: null } : {}),\n });\n }\n }\n\n // make sure it's the default\n if (!attributes?.preset) {\n setAttributes({ preset: defaultPreset?.id });\n }\n\n return (\n <WrappedComponent\n {...props}\n lockSave={lock}\n unlockSave={unlock}\n createVideo={createVideo}\n onUpdate={onUpdate}\n onRemoveSrc={onRemoveSrc}\n presetData={presetData}\n setPresetData={setPresetData}\n renderKey={count}\n />\n );\n },\n \"withPlayerEdit\"\n );\n","const { withSelect } = wp.data;\n\nexport default function (props) {\n return withSelect((select) => {\n return {\n branding: select(\"presto-player/player\").branding(),\n loading: select(\"presto-player/player\").isResolving(\"getPresets\"),\n presets: select(\"presto-player/player\").getPresets(),\n defaultPreset: select(\"presto-player/player\").getDefaultPreset(),\n };\n });\n}\n","/** @jsx jsx */\n\nconst { __ } = wp.i18n;\nconst { useState } = wp.element;\nconst { useSelect, dispatch } = wp.data;\nconst { withNotices, BaseControl, Spinner, Button } = wp.components;\n\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\nimport EditOverlay from \"./Edit\";\n\nimport { css, jsx } from \"@emotion/core\";\n\nconst VideoOverlays = ({ setAttributes, attributes }) => {\n // modal\n const { overlays } = attributes;\n const [modal, setModal] = useState(false);\n const openModal = () => setModal(true);\n const closeModal = () => setModal(false);\n\n const updateOverlayAttribute = (overlays) => {\n setAttributes({ overlays: overlays });\n };\n\n return (\n <>\n <BaseControl>\n <Button\n isPrimary\n onClick={() => {\n if (!prestoPlayer?.isPremium) {\n dispatch(\"presto-player/player\").setProModal(true);\n return;\n }\n openModal(\"new\");\n }}\n >\n {!!overlays.length\n ? __(\"Update Overlays\", \"presto-player\")\n : __(\"Add Overlay\", \"presto-player\")}\n {!!overlays.length && (\n <div\n css={css`\n font-size: 10px;\n background: #fff;\n color: var(--wp-admin-theme-color);\n font-weight: bold;\n display: inline-block;\n line-height: 6px;\n padding: 5px;\n border-radius: 9999px;\n margin-left: 10px;\n `}\n >\n {overlays.length}\n </div>\n )}\n </Button>\n\n {!prestoPlayer?.isPremium && <ProBadge />}\n </BaseControl>\n\n {modal && (\n <EditOverlay\n closeModal={closeModal}\n attributes={attributes}\n setAttributes={setAttributes}\n updateOverlayAttribute={updateOverlayAttribute}\n />\n )}\n </>\n );\n};\n\nexport default VideoOverlays;\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n ToggleControl,\n BaseControl,\n HorizontalRule,\n __experimentalAlignmentMatrixControl: AlignmentMatrixControl,\n SelectControl,\n} = wp.components;\n\nexport default function ({ state, updateState, className }) {\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Behavior\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Auto-Hide Controls\", \"presto-player\")}\n help={__(\n \"Hide video controls automatically after 2 seconds of no mouse movement.\",\n \"presto-player\"\n )}\n onChange={(auto_hide) => {\n updateState({ auto_hide });\n }}\n checked={state.auto_hide}\n />\n </BaseControl>\n {/* <BaseControl>\n <ToggleControl\n label={__(\"Reset On End\", \"presto-player\")}\n help={__(\n \"Reset the video to the beginning when it completes.\",\n \"presto-player\"\n )}\n onChange={(reset_on_end) => {\n updateState({ reset_on_end });\n }}\n checked={state.reset_on_end}\n />\n </BaseControl> */}\n <BaseControl>\n <ToggleControl\n label={__(\"Save Play Position\", \"presto-player\")}\n help={__(\n \"Saves the user's play position so when they come back to the page they can continue the video from where they left off.\",\n \"presto-player\"\n )}\n onChange={(save_player_position) => {\n updateState({ save_player_position });\n }}\n checked={state.save_player_position}\n />\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Captions On By Default\", \"presto-player\")}\n help={__(\n \"Toggles if captions should be active by default.\",\n \"presto-player\"\n )}\n onChange={(captions_enabled) => {\n updateState({ captions_enabled });\n }}\n checked={state.captions_enabled}\n />\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Focus Mode\", \"presto-player\")}\n help={__(\n \"Play only when tab is visible and video is in viewport.\",\n \"presto-player\"\n )}\n onChange={(play_video_viewport) => {\n updateState({ play_video_viewport });\n }}\n checked={state.play_video_viewport}\n />\n </BaseControl>\n\n <BaseControl>\n <ToggleControl\n label={__(\"Sticky On Scroll\", \"presto-player\")}\n help={__(\n \"Stick videos to the side of the screen when the page is scrolled and the video is playing.\",\n \"presto-player\"\n )}\n onChange={(sticky_scroll) => {\n updateState({ sticky_scroll });\n }}\n checked={state.sticky_scroll}\n />\n </BaseControl>\n {!!state.sticky_scroll && (\n <>\n <BaseControl\n label={__(\n \"Choose a position for your sticky player.\",\n \"presto-player\"\n )}\n >\n <AlignmentMatrixControl\n value={state.sticky_scroll_position}\n onChange={(sticky_scroll_position) => {\n updateState({ sticky_scroll_position });\n }}\n />\n </BaseControl>\n </>\n )}\n <BaseControl>\n <SelectControl\n label={__(\"On Video End\", \"presto-player\")}\n value={state.on_video_end}\n options={[\n {\n value: \"select\",\n label: __(\"Select\", \"presto-player\"),\n },\n {\n value: \"loop\",\n label: __(\"Loop\", \"presto-player\"),\n },\n {\n value: \"go-to-start\",\n label: __(\"Go to start\", \"presto-player\"),\n },\n ]}\n onChange={(on_video_end) => {\n updateState({ on_video_end });\n }}\n />\n </BaseControl>\n\n <HorizontalRule />\n <BaseControl />\n <BaseControl>\n <h3>{__(\"Youtube\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Hide Youtube UI (Experimental)\", \"presto-player\")}\n help={__(\n \"Hides the Youtube logo and related videos.\",\n \"presto-player\"\n )}\n onChange={(hide_youtube) => {\n updateState({ hide_youtube });\n }}\n checked={state.hide_youtube}\n />\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Lazy Load Videos\", \"presto-player\")}\n help={__(\n \"Improves page loading performance by only loading the video when clicked.\",\n \"presto-player\"\n )}\n onChange={(lazy_load_youtube) => {\n updateState({ lazy_load_youtube });\n }}\n checked={state.lazy_load_youtube}\n />\n </BaseControl>\n </div>\n );\n}\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { ToggleControl, BaseControl } = wp.components;\n\nexport default function ({ state, updateState, className }) {\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Controls\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl className=\"presto-player__control--large-play\">\n <ToggleControl\n label={__(\"Large Play Button\", \"presto-player\")}\n help={__(\n \"Adds a large play button over the top of the player.\",\n \"presto-player\"\n )}\n onChange={(play) => {\n updateState({ \"play-large\": play });\n }}\n checked={state[\"play-large\"]}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--rewind\">\n <ToggleControl\n label={__(\"Rewind\", \"presto-player\")}\n help={__(\n \"Adds a 10 second rewind button to the player.\",\n \"presto-player\"\n )}\n onChange={(rewind) => {\n updateState({ rewind });\n }}\n checked={state.rewind}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--play\">\n <ToggleControl\n label={__(\"Small Play Button\", \"presto-player\")}\n help={__(\n \"Adds a small play button to the bottom of the player.\",\n \"presto-player\"\n )}\n onChange={(play) => {\n updateState({ play });\n }}\n checked={state.play}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--fast-forward\">\n <ToggleControl\n label={__(\"Fast Forward\", \"presto-player\")}\n help={__(\n \"Adds a 10 second rewind button to the player.\",\n \"presto-player\"\n )}\n onChange={(value) => {\n updateState({ \"fast-forward\": value });\n }}\n checked={state[\"fast-forward\"]}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--progress\">\n <ToggleControl\n label={__(\"Progress Bar\", \"presto-player\")}\n help={__(\"Shows a seekable progress bar.\", \"presto-player\")}\n onChange={(progress) => {\n updateState({ progress });\n }}\n checked={state.progress}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--current-time\">\n <ToggleControl\n label={__(\"Current Time\", \"presto-player\")}\n help={__(\"Shows the video timestamp.\", \"presto-player\")}\n onChange={(value) => {\n updateState({ \"current-time\": value });\n }}\n checked={state[\"current-time\"]}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--volume\">\n <ToggleControl\n label={__(\"Volume\", \"presto-player\")}\n help={__(\"Shows a volume bar.\", \"presto-player\")}\n onChange={(value) => {\n updateState({ volume: value, mute: value });\n }}\n checked={state.volume}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--speed\">\n <ToggleControl\n label={__(\"Speed\", \"presto-player\")}\n help={__(\"Shows playback speed controls.\", \"presto-player\")}\n onChange={(speed) => {\n updateState({ speed });\n }}\n checked={state.speed}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--pip\">\n <ToggleControl\n label={__(\"Picture In Picture (HTML5 only)\", \"presto-player\")}\n help={__(\n \"Allows users to dock the player on their screen and watch when using other app on their computer.\",\n \"presto-player\"\n )}\n onChange={(pip) => {\n updateState({ pip });\n }}\n checked={state.pip}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--fullscreen\">\n <ToggleControl\n label={__(\"Fullscreen\", \"presto-player\")}\n help={__(\n \"Adds a button to allow the player to be fullscreen.\",\n \"presto-player\"\n )}\n onChange={(fullscreen) => {\n updateState({ fullscreen });\n }}\n checked={state.fullscreen}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--captions\">\n <ToggleControl\n label={__(\"Captions\", \"presto-player\")}\n help={__(\"Shows a dedicated caption toggle button.\", \"presto-player\")}\n onChange={(value) => {\n updateState({ captions: value });\n }}\n checked={state[\"captions\"]}\n />\n </BaseControl>\n </div>\n );\n}\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\n\nconst {\n ToggleControl,\n BaseControl,\n RadioControl,\n Flex,\n RangeControl,\n} = wp.components;\n\nconst { useEffect } = wp.element;\n\nimport DynamicText from \"../overlays/components/DynamicText\";\n\nimport ColorPopup from \"../components/ColorPopup\";\n\nexport default ({ state, updateState, className }) => {\n const { watermark } = state;\n\n const defaults = {\n text: __(\"Enter your watermark text.\", \"presto-player\"),\n position: \"top-right\",\n color: \"#fff\",\n backgroundColor: \"#333\",\n opacity: 80,\n };\n useEffect(() => {\n Object.keys(defaults).forEach((key) => {\n if (state?.watermark?.[key] === undefined) {\n updateWatermarkState({\n [key]: defaults[key],\n });\n }\n });\n }, [state]);\n\n const updateWatermarkState = (updated) => {\n updateState({\n ...state,\n watermark: {\n ...watermark,\n ...updated,\n },\n });\n };\n\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Dynamic Watermark Text\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl className=\"presto-player__control--watermark\">\n <ToggleControl\n label={__(\"Enable\", \"presto-player\")}\n help={__(\n \"Add a simulated dynamic watermark over your video.\",\n \"presto-player\"\n )}\n onChange={(enabled) => {\n updateWatermarkState({\n enabled,\n });\n }}\n checked={watermark?.enabled}\n />\n </BaseControl>\n\n {watermark?.enabled && (\n <div>\n <DynamicText\n text={watermark?.text}\n update={({ text }) => {\n updateWatermarkState({\n text,\n });\n }}\n />\n\n <BaseControl className={className}>\n <RadioControl\n label={__(\"Position\", \"presto-player\")}\n options={[\n { label: \"Top Right\", value: \"top-right\" },\n { label: \"Top Left\", value: \"top-left\" },\n { label: \"Change Every 10 Seconds\", value: \"randomize\" },\n ]}\n selected={watermark?.position || \"top-right\"}\n onChange={(position) =>\n updateWatermarkState({\n position,\n })\n }\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control-text-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Text Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={watermark?.color || \"#fff\"}\n setColor={(value) =>\n updateWatermarkState({\n color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n\n <BaseControl className=\"presto-player__control-text-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Background Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={watermark?.backgroundColor || \"#333\"}\n setColor={(value) =>\n updateWatermarkState({\n backgroundColor: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n\n <BaseControl>\n <RangeControl\n label={__(\"Opacity\", \"presto-player\")}\n help={__(\"Opacity percentage of the watermark.\", \"presto-player\")}\n value={watermark?.opacity || 100}\n onChange={(opacity) => updateWatermarkState({ opacity })}\n min={0}\n max={100}\n />\n </BaseControl>\n </div>\n )}\n </div>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n ToggleControl,\n BaseControl,\n RangeControl,\n SelectControl,\n ColorPicker,\n} = wp.components;\n\nexport default function ({ state, updateState, className }) {\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Style\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Hide Logo\", \"presto-player\")}\n help={__(\"Hides the logo on this video.\", \"presto-player\")}\n onChange={(hide_logo) => {\n updateState({ hide_logo });\n }}\n checked={state.hide_logo}\n />\n </BaseControl>\n <BaseControl>\n <RangeControl\n label={__(\"Round Corners\", \"presto-player\")}\n help={__(\"Player border radius size.\", \"presto-player\")}\n value={state?.border_radius || 0}\n onChange={(border_radius) => updateState({ border_radius })}\n min={0}\n max={25}\n />\n </BaseControl>\n\n <BaseControl>\n <SelectControl\n label={__(\"Caption Style\", \"presto-player\")}\n labelPosition=\"top\"\n value={state?.caption_style}\n options={[\n { label: __(\"Default\", \"presto-player\"), value: \"default\" },\n { label: __(\"Full\", \"presto-player\"), value: \"full\" },\n ]}\n onChange={(caption_style) => {\n updateState({ caption_style });\n }}\n />\n </BaseControl>\n <BaseControl>\n <BaseControl.VisualLabel>\n <p>{__(\"Caption Background\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n\n <ColorPicker\n color={state?.caption_background || \"#000000\"}\n onChangeComplete={(value) => {\n updateState({ caption_background: value.hex });\n }}\n disableAlpha\n />\n </BaseControl>\n </div>\n );\n}\n","/** @jsx jsx */\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n TextControl,\n BaseControl,\n Icon,\n Notice,\n Button,\n Flex,\n FlexItem,\n SelectControl,\n FlexBlock,\n Modal,\n} = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { useSelect, dispatch } = wp.data;\n\nimport { snackbarNotice } from \"@/admin/blocks/util\";\nimport Menu from \"@/admin/ui/Menu\";\nimport { css, jsx } from \"@emotion/core\";\nimport Preview from \"../Preview\";\nimport ActionBar from \"./ActionBar\";\nimport Behavior from \"./Behavior\";\nimport Controls from \"./Controls\";\nimport Watermark from \"./Watermark\";\nimport CTA from \"./CTA\";\nimport Email from \"./Email\";\nimport Style from \"./Style\";\n\nfunction EditPlayerPreset({\n type = \"new\",\n closeModal,\n addPreset,\n onSave,\n updatePreset,\n name = \"\",\n preset = {\n \"play-large\": true,\n rewind: true,\n play: true,\n \"fast-forward\": true,\n progress: true,\n \"current-time\": true,\n mute: true,\n volume: true,\n speed: false,\n pip: false,\n fullscreen: true,\n captions: false,\n // behavior\n save_player_position: false,\n reset_on_end: false,\n auto_hide: true,\n sticky_scroll: false,\n // style\n hide_logo: false,\n border_radius: 0,\n skin: \"default\",\n caption_style: \"default\",\n caption_background: \"#000000\",\n // youtube\n hide_youtube: false,\n lazy_load_youtube: false,\n\n // features\n cta: {},\n email_collection: {},\n action_bar: {},\n },\n}) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(\"\");\n const [menu, setMenu] = useState(\"\");\n const [thisName, setThisName] = useState(name);\n const [state, setState] = useState(preset);\n const branding = useSelect((select) => {\n return select(\"presto-player/player\").branding();\n });\n\n const [value, setValue] = useState(\"\");\n\n const genericError = {\n message: __(\n \"The preset could not be saved. Please reload the page and try again.\",\n \"presto-player\"\n ),\n };\n\n //you tube feature\n const youtube = useSelect((select) => {\n return select(\"presto-player/player\").youtube();\n });\n\n useEffect(() => {\n setValue(youtube.channel_id);\n }, [youtube?.channel_id]);\n\n // update state\n const updateState = (updated = {}) => {\n setState({ ...state, ...updated });\n };\n\n const putPreset = async () => {\n setLoading(true);\n try {\n const data = {\n ...state,\n ...{ name: thisName },\n };\n let saved = await wp.apiFetch({\n method: \"POST\",\n url: wp.url.addQueryArgs(\n `${prestoPlayer.root}${prestoPlayer.prestoVersionString}preset/${preset.id}`,\n { _method: \"PUT\" }\n ),\n data,\n });\n\n if (!saved) {\n throw genericError;\n }\n\n // update or create here\n updatePreset(saved);\n closeModal();\n !!onSave && onSave(saved);\n snackbarNotice({ message: __(\"Preset updated!\", \"presto-player\") });\n } catch (e) {\n setError(e?.message ? e.message : genericError);\n } finally {\n setLoading(false);\n }\n\n // youtube id save\n dispatch(\"presto-player/player\").updateYoutube({ channel_id: value });\n\n const data = {\n ...youtube,\n ...{ channel_id: value },\n };\n\n try {\n let response = await wp.apiFetch({\n path: \"wp/v2/settings\",\n method: \"POST\",\n data: {\n presto_player_youtube: data,\n },\n });\n if (response?.presto_player_youtube) {\n dispatch(\"presto-player/player\").setYoutube(\n response?.presto_player_youtube\n );\n onClose();\n }\n } catch (e) {\n console.log(e);\n }\n };\n\n const createPreset = async () => {\n setLoading(true);\n try {\n let saved = await wp.apiFetch({\n method: \"POST\",\n url: prestoPlayer.root + prestoPlayer.prestoVersionString + \"preset\",\n data: {\n ...{ name: thisName },\n ...state,\n },\n });\n if (!saved) {\n throw genericError;\n }\n\n // update or create here\n addPreset(saved);\n closeModal();\n !!onSave && onSave(saved);\n snackbarNotice({ message: __(\"Preset created!\", \"presto-player\") });\n } catch (e) {\n setError(e?.message ? e.message : genericError);\n } finally {\n setLoading(false);\n }\n };\n\n // validate and save\n const save = () => {\n if (!thisName) {\n setError(__(\"You must enter a name for the preset.\", \"presto-player\"));\n return;\n }\n return type === \"edit\" ? putPreset() : createPreset();\n };\n\n const tabs = [\n {\n name: \"controls\",\n title: __(\"Controls\", \"presto-player\"),\n icon: <Icon icon=\"admin-settings\" />,\n component: <Controls updateState={updateState} state={state} />,\n },\n {\n name: \"behavior\",\n title: __(\"Behavior\", \"presto-player\"),\n icon: <Icon icon=\"admin-generic\" />,\n component: <Behavior updateState={updateState} state={state} />,\n },\n {\n name: \"style\",\n title: __(\"Style\", \"presto-player\"),\n icon: <Icon icon=\"admin-customizer\" />,\n component: <Style updateState={updateState} state={state} />,\n },\n {\n name: \"email\",\n title: __(\"Email Capture\", \"presto-player\"),\n icon: <Icon icon=\"email\" />,\n component: <Email updateState={updateState} state={state} />,\n },\n {\n name: \"cta\",\n title: __(\"Call To Action\", \"presto-player\"),\n icon: <Icon icon=\"megaphone\" />,\n component: <CTA updateState={updateState} state={state} />,\n },\n {\n name: \"action_bar\",\n title: __(\"Action Bar\", \"presto-player\"),\n icon: <Icon icon=\"cover-image\" />,\n component: (\n <ActionBar\n updateState={updateState}\n state={state}\n value={value}\n setValue={setValue}\n />\n ),\n },\n {\n name: \"watermark\",\n title: __(\"Dynamic Watermark\", \"presto-player\"),\n icon: <Icon icon=\"lock\" />,\n component: <Watermark updateState={updateState} state={state} />,\n },\n // {\n // name: \"cta\",\n // title: __(\"Call to Action\", \"presto-player\"),\n // icon: <Icon icon=\"megaphone\" />,\n // },\n ];\n\n return (\n <Modal\n title={\n type == \"edit\"\n ? __(\"Edit A Video Preset\", \"presto-player\")\n : __(\"Create A New Video Preset\", \"presto-player\")\n }\n onRequestClose={closeModal}\n className=\"presto-player__modal-presets\"\n overlayClassName=\"presto-player__modal-presets-overlay\"\n >\n <div className=\"presto-player__preset-options\" data-cy=\"preset-modal\">\n <TextControl\n value={thisName}\n hideLabelFromVision={true}\n label={__(\"Preset Name\", \"presto-player\")}\n onChange={(name) => setThisName(name)}\n placeholder={__(\"Enter a preset name...\", \"presto-player\")}\n className=\"presto-player__modal--style-name\"\n autoFocus\n />\n\n <Flex align=\"stretch\" className=\"presto-player__style-preview-area\">\n <FlexItem className=\"presto-player__style-sidebar\">\n <div>\n <Menu\n items={tabs}\n title={__(\"Customize\", \"presto-player\")}\n onSelect={setMenu}\n >\n {(item) => item.component}\n </Menu>\n </div>\n </FlexItem>\n <FlexBlock className=\"presto-player__style-preview-panel\">\n <div\n style={{ position: \"absolute\", top: 0, left: 0, padding: \"20px\" }}\n >\n <SelectControl\n label={__(\"Skin\", \"presto-player\")}\n labelPosition=\"side\"\n value={state?.skin}\n hideLabelFromVision={true}\n options={[\n { label: __(\"Basic\", \"presto-player\"), value: \"default\" },\n { label: __(\"Stacked\", \"presto-player\"), value: \"stacked\" },\n ]}\n onChange={(skin) => {\n updateState({ skin });\n }}\n />\n </div>\n {/*\n Disable the video tag so the user clicking on it won't play the\n video when the controls are enabled.\n\t\t\t\t*/}\n\n <Preview\n poster=\"https://source.unsplash.com/daily\"\n state={state}\n branding={branding}\n menu={menu}\n />\n </FlexBlock>\n </Flex>\n\n <br />\n\n {error && (\n <BaseControl>\n <Notice\n className=\"presto-player__modal--error-notice\"\n status=\"error\"\n isDismissible={false}\n style={{ margin: 0 }}\n >\n {error.replace(/(<([^>]+)>)/gi, \"\")}\n </Notice>\n </BaseControl>\n )}\n <div\n css={css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n `}\n >\n <div\n css={css`\n opacity: 0.5;\n font-size: 12px;\n `}\n >\n Preset ID: {preset.id}\n </div>\n <div>\n <Button isTertiary onClick={closeModal} style={{ margin: \"0 6px\" }}>\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n <Button\n isPrimary\n isBusy={loading}\n disabled={loading}\n onClick={save}\n data-cy=\"submit-preset\"\n >\n {type == \"edit\"\n ? __(\"Update Preset\", \"presto-player\")\n : __(\"Create Preset\", \"presto-player\")}\n </Button>\n </div>\n </div>\n </div>\n </Modal>\n );\n}\nexport default EditPlayerPreset;\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { Icon, Spinner, Modal, Button, ButtonGroup } = wp.components;\nconst { useState } = wp.element;\n\nexport default function ({\n preset,\n index,\n isActive,\n remove,\n setPreset,\n onEdit,\n}) {\n const [loading, setLoading] = useState(false);\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n const openConfirm = () => setConfirmOpen(true);\n const closeConfirm = () => setConfirmOpen(false);\n\n const untrashPreset = async () => {};\n\n const trashPreset = async () => {\n // remove unsaved\n if (!preset.id) {\n remove(preset);\n return;\n }\n\n try {\n setLoading(true);\n let deleted = await wp.apiFetch({\n method: \"POST\",\n url: wp.url.addQueryArgs(\n `${prestoPlayer.root}${prestoPlayer.prestoVersionString}preset/${preset.id}`,\n { _method: \"DELETE\" }\n ),\n });\n if (deleted) {\n remove(preset);\n wp.data.dispatch(\"core/notices\").createNotice(\n \"success\", // Can be one of: success, info, warning, error.\n __(\"Preset trashed.\", \"presto-player\"),\n {\n type: \"snackbar\",\n isDismissible: true,\n // actions: [\n // {\n // label: __(\"Undo\", \"presto-player\"),\n // onClick: () => {\n // console.log(\"untrash\");\n // },\n // },\n // ],\n }\n );\n }\n } catch (e) {\n console.error(e);\n if (e?.message) {\n wp.data.dispatch(\"core/notices\").createNotice(\n \"error\", // Can be one of: success, info, warning, error.\n e.message,\n {\n type: \"snackbar\",\n isDismissible: true, // Whether the user can dismiss the notice.\n }\n );\n }\n } finally {\n setConfirmOpen(false);\n setLoading(false);\n }\n };\n\n if (loading) {\n return (\n <div\n className=\"block-editor-block-styles__item\"\n role=\"button\"\n tabIndex={index}\n aria-label=\"Fill\"\n style={{ color: isActive ? \"var(--wp-admin-theme-color)\" : \"inherit\" }}\n >\n <div\n className=\"block-editor-block-styles__item-preview\"\n style={{\n border: isActive\n ? \"2px solid var(--wp-admin-theme-color)\"\n : \"2px solid #e3e3e3\",\n margin: 0,\n display: \"flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\",\n }}\n >\n <Spinner />\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`block-editor-block-styles__item presto-preset-${preset.slug}`}\n onClick={() => {\n setPreset(preset);\n }}\n role=\"button\"\n tabIndex={index}\n aria-label=\"Fill\"\n style={{ color: isActive ? \"var(--wp-admin-theme-color)\" : \"inherit\" }}\n >\n <div\n className=\"block-editor-block-styles__item-preview\"\n style={{\n border: isActive\n ? \"2px solid var(--wp-admin-theme-color)\"\n : \"2px solid #e3e3e3\",\n margin: 0,\n }}\n >\n <div\n style={{\n textAlign: \"center\",\n width: \"100%\",\n color: isActive ? \"var(--wp-admin-theme-color)\" : \"inherit\",\n opacity: isActive ? 1 : 0.75,\n }}\n >\n {preset?.icon ? (\n <Icon\n icon={preset?.icon}\n style={{\n fontSize: \"30px\",\n width: \"30px\",\n height: \"30px\",\n }}\n />\n ) : (\n <h1 style={{ opacity: 0.75 }}>\n {preset?.name?.charAt(0)?.toUpperCase() || \"Untitled\"}\n </h1>\n )}\n </div>\n </div>\n <div\n className=\"block-editor-block-styles__item-label\"\n style={{ fontWeight: \"bold\", textTransform: \"capitalize\" }}\n >\n {preset?.name || \"Untitled\"}\n </div>\n\n {!preset?.is_locked && (\n <div className=\"block-editor-block-styles__item-edit\">\n <div\n className=\"block-editor-block-styles__item-edit-icon\"\n onClick={onEdit}\n >\n <Icon icon=\"edit\" />\n </div>\n <div\n className=\"block-editor-block-styles__item-edit-icon\"\n onClick={openConfirm}\n >\n <Icon icon=\"trash\" />\n </div>\n </div>\n )}\n\n {confirmOpen && (\n <Modal\n title={__(\"Trash Preset?\", \"presto-player\")}\n onRequestClose={closeConfirm}\n style={{ maxWidth: \"250px\" }}\n >\n <p>\n <strong>{__(\"Warning!\", \"presto-player\")} </strong>\n {__(\n \"Any videos assigned to this preset will automatically use the default preset.\",\n \"presto-player\"\n )}\n </p>\n\n <ButtonGroup>\n <Button\n isDestructive\n onClick={trashPreset}\n style={{ margin: \"0 4px\" }}\n >\n {__(\"Trash\", \"presto-player\")}\n </Button>\n <Button\n isTertiary\n onClick={closeConfirm}\n style={{ margin: \"0 4px\", boxShadow: \"none\" }}\n >\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n </ButtonGroup>\n </Modal>\n )}\n </div>\n );\n}\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { withNotices, BaseControl, Spinner, Button } = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { useSelect, dispatch } = wp.data;\n\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\nimport EditPreset from \"./Edit\";\nimport Preset from \"./Preset\";\n\nfunction PlayerPresets({ attributes, setAttributes }) {\n // modal\n const [modal, setModal] = useState(false);\n const openModal = (type) => setModal(type);\n const closeModal = () => setModal(false);\n const [presetData, setPresetData] = useState(null);\n const [name, setName] = useState(null);\n\n // preset data\n const { presets, loading } = useSelect((select) => {\n return {\n presets: select(\"presto-player/player\").getPresets(),\n loading: select(\"presto-player/player\").isResolving(\"getPresets\"),\n };\n });\n\n // preset actions\n const addPreset = (preset) => {\n dispatch(\"presto-player/player\").addPreset(preset);\n };\n const updatePreset = (preset) => {\n dispatch(\"presto-player/player\").updatePreset(preset);\n };\n const removePreset = (preset) => {\n dispatch(\"presto-player/player\").removePreset(preset);\n };\n\n // set this preset id\n const setPreset = (preset) => {\n setAttributes({ preset: preset.id });\n };\n\n if (loading) {\n return (\n <div className=\"presto-settings__loading\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <>\n {presets.length ? (\n <p>\n {__(\n \"Select a video configuration preset, or add your own.\",\n \"presto-player\"\n )}\n </p>\n ) : (\n \"\"\n )}\n\n <BaseControl>\n <div className=\"block-editor-block-styles\">\n {(presets || []).length\n ? presets.map((preset, i) => {\n return (\n <Preset\n setPreset={setPreset}\n index={i}\n isActive={attributes?.preset === preset.id}\n preset={preset}\n key={preset.id}\n onEdit={() => {\n setName(preset.name);\n setPresetData(preset);\n setModal(\"edit\");\n }}\n remove={removePreset}\n />\n );\n })\n : __(\n \"No style presets. You can create a new style by clicking 'Add New Style'.\",\n \"presto-plugin\"\n )}\n </div>\n </BaseControl>\n <BaseControl>\n <Button\n isPrimary\n data-cy=\"add-new-preset\"\n onClick={() => {\n if (!prestoPlayer?.isPremium) {\n dispatch(\"presto-player/player\").setProModal(true);\n return;\n }\n openModal(\"new\");\n }}\n >\n {__(\"Add New Preset\", \"presto-player\")}\n </Button>\n {!prestoPlayer?.isPremium && <ProBadge />}\n </BaseControl>\n {modal == \"new\" && (\n <EditPreset\n closeModal={closeModal}\n addPreset={addPreset}\n type=\"new\"\n onSave={setPreset}\n />\n )}\n {modal == \"edit\" && (\n <EditPreset\n closeModal={closeModal}\n addPreset={addPreset}\n updatePreset={updatePreset}\n type=\"edit\"\n preset={presetData}\n name={name}\n />\n )}\n </>\n );\n}\n\nexport default withNotices(PlayerPresets);\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n PanelRow,\n TextControl,\n SelectControl,\n BaseControl,\n Button,\n FocalPointPicker,\n RangeControl,\n} = wp.components;\nconst { MediaUpload, MediaUploadCheck } = wp.blockEditor;\nconst { useState } = wp.element;\n\nconst VIDEO_OVERLAY_ALLOWED_MEDIA_TYPES = [\"image\"];\n\n// import font for text\nimport \"./settings-styles.css\";\n\nexport default ({ attributes, setAttributes, instanceId }) => {\n const { mutedOverlay } = attributes;\n\n const videoOverlayDescription = `video-block__overlay-image-description-${instanceId}`;\n\n // handle poster select\n function onSelectOverlay(image) {\n setAttributes({\n mutedOverlay: {\n ...mutedOverlay,\n ...{ src: image.url },\n },\n });\n }\n\n function onRemoveOverlay() {\n setAttributes({\n mutedOverlay: {\n ...mutedOverlay,\n ...{ src: \"\" },\n },\n });\n }\n\n return (\n <>\n <MediaUploadCheck>\n <BaseControl className=\"editor-video-overlay-control\">\n <BaseControl.VisualLabel>\n <p>{__(\"Overlay Image\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n <MediaUpload\n title={__(\"Select overlay image\", \"presto-player\")}\n onSelect={onSelectOverlay}\n allowedTypes={VIDEO_OVERLAY_ALLOWED_MEDIA_TYPES}\n render={({ open }) => (\n <Button\n className=\"presto-setting__poster\"\n isPrimary\n onClick={open}\n >\n {!mutedOverlay?.src\n ? __(\"Select\", \"presto-player\")\n : __(\"Replace\", \"presto-player\")}\n </Button>\n )}\n />\n <p id={videoOverlayDescription} hidden>\n {mutedOverlay?.src\n ? sprintf(\n __(\"The current overlay image url is %s\", \"presto-player\"),\n mutedOverlay?.src\n )\n : __(\n \"There is no overlay image currently selected\",\n \"presto-player\"\n )}\n </p>\n {!!mutedOverlay?.src && (\n <Button\n onClick={onRemoveOverlay}\n className=\"presto-setting__remove-poster\"\n isTertiary\n >\n {__(\"Remove\", \"presto-player\")}\n </Button>\n )}\n </BaseControl>\n </MediaUploadCheck>\n {!!mutedOverlay?.src && (\n <FocalPointPicker\n url={\"\"}\n dimensions={{ width: 160, height: 90 }}\n value={mutedOverlay?.focalPoint}\n onChange={(focalPoint) =>\n setAttributes({\n mutedOverlay: {\n ...mutedOverlay,\n ...{ focalPoint },\n },\n })\n }\n />\n )}\n {!!mutedOverlay?.src && (\n <RangeControl\n label={__(\"Max Width (%)\", \"presto-player\")}\n value={mutedOverlay?.width}\n onChange={(width) =>\n setAttributes({\n mutedOverlay: {\n ...mutedOverlay,\n ...{ width },\n },\n })\n }\n min={1}\n max={100}\n />\n )}\n </>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n ToggleControl,\n SelectControl,\n BaseControl,\n Button,\n PanelRow,\n Icon,\n Flex,\n} = wp.components;\nconst { dispatch } = wp.data;\nimport { isHLS } from \"@/shared/util\";\n\nconst { MediaUpload, MediaUploadCheck } = wp.blockEditor;\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\nimport MutedPreviewOptions from \"./MutedPreviewOptions\";\n\nconst VIDEO_POSTER_ALLOWED_MEDIA_TYPES = [\"image\"];\n\nconst { useInstanceId } = wp.compose;\n\nconst VideoSettings = ({ setAttributes, attributes }) => {\n const {\n mutedPreview,\n autoplay,\n playsInline,\n preload,\n poster,\n mutedOverlay,\n } = attributes;\n\n const instanceId = useInstanceId(VideoSettings);\n\n const videoPosterDescription = `video-block__poster-image-description-${instanceId}`;\n\n const getAutoplayHelp = (checked) => {\n return checked\n ? __(\n \"Note: Autoplaying videos may cause usability issues for some visitors.\",\n \"presto-player\"\n )\n : null;\n };\n\n const posterRecommended = () => {\n // if is hls and we've selected metadata or none, recommend a poster\n if (\n attributes?.src &&\n isHLS(attributes?.src) &&\n [\"metadata\", \"none\"].includes(preload)\n ) {\n return true;\n }\n\n return preload === \"none\" && !poster;\n };\n\n const toggleAttribute = (attribute) => {\n return (newValue) => {\n setAttributes({ [attribute]: newValue });\n };\n };\n\n // handle poster select\n function onSelectPoster(image) {\n setAttributes({ poster: image.url });\n }\n\n function onRemovePoster() {\n setAttributes({ poster: \"\" });\n }\n\n const mutedPreviewControls = () => {\n return (\n <>\n <ToggleControl\n label={\n <>\n {__(\"Muted Autoplay Preview\", \"presto-player\")}{\" \"}\n {!prestoPlayer?.isPremium && <ProBadge />}\n </>\n }\n onChange={(value) => {\n if (!prestoPlayer?.isPremium) {\n dispatch(\"presto-player/player\").setProModal(true);\n return;\n }\n setAttributes({\n mutedPreview: {\n ...mutedPreview,\n ...{ enabled: value },\n },\n });\n }}\n checked={mutedPreview?.enabled}\n className=\"presto-setting__mutedPreview\"\n help={__(\"Shows a muted preview of the video.\", \"presto-player\")}\n />\n {!!mutedPreview?.enabled && !attributes?.video_id && (\n <PanelRow>\n <ToggleControl\n label={__(\"Muted Preview Captions\", \"presto-player\")}\n onChange={(value) => {\n setAttributes({\n mutedPreview: {\n ...mutedPreview,\n ...{ captions: value },\n },\n });\n }}\n checked={mutedPreview?.captions}\n className=\"presto-setting__mutedPreviewCaptions\"\n help={__(\"Play captions during muted autoplay\", \"presto-player\")}\n />\n </PanelRow>\n )}\n\n {!!mutedPreview.enabled && (\n <PanelRow>\n <ToggleControl\n label={\n <>\n {__(\"Muted Preview Overlay\", \"presto-player\")}{\" \"}\n {!prestoPlayer?.isPremium && <ProBadge />}\n </>\n }\n onChange={(value) => {\n if (!prestoPlayer?.isPremium) {\n dispatch(\"presto-player/player\").setProModal(true);\n return;\n }\n setAttributes({\n mutedOverlay: {\n ...mutedOverlay,\n ...{ enabled: value },\n },\n });\n }}\n checked={mutedOverlay?.enabled}\n className=\"presto-setting__mutedOverlay\"\n help={__(\n \"Show an image over the top of the video either before or after the video.\",\n \"presto-player\"\n )}\n />\n </PanelRow>\n )}\n {mutedOverlay?.enabled && mutedPreview?.enabled && (\n <MutedPreviewOptions\n attributes={attributes}\n setAttributes={setAttributes}\n />\n )}\n </>\n );\n };\n\n return (\n <>\n {!autoplay && mutedPreviewControls()}\n\n {!mutedPreview?.enabled && (\n <ToggleControl\n label={__(\"Autoplay\", \"presto-player\")}\n className=\"presto-setting__autoplay\"\n onChange={toggleAttribute(\"autoplay\")}\n checked={autoplay}\n help={getAutoplayHelp}\n />\n )}\n <PanelRow>\n <ToggleControl\n label={__(\"Play inline\", \"presto-player\")}\n className=\"presto-setting__playsInline\"\n data-cy={\"playsInline\"}\n onChange={toggleAttribute(\"playsInline\")}\n checked={playsInline}\n help={__(\n \"On mobile browsers, play the video on the page instead of opening it up fullscreen.\",\n \"presto-player\"\n )}\n />\n </PanelRow>\n {!attributes?.video_id && (\n <PanelRow>\n <SelectControl\n label={\n <Flex>\n <div>{__(\"Performance Preference\", \"presto-player\")}</div>\n <a\n href=\"https://prestoplayer.com/docs/performance-preferences-explained\"\n target=\"_blank\"\n style={{ textDecoration: \"none\" }}\n >\n <Icon icon=\"editor-help\" />\n </a>\n </Flex>\n }\n className=\"presto-setting__preload\"\n value={preload}\n onChange={(value) => setAttributes({ preload: value })}\n help={\n posterRecommended() &&\n __(\n \"A poster image is recommended for this setting.\",\n \"presto-player\"\n )\n }\n options={[\n {\n value: \"auto\",\n label: __(\"Video Playback Speed\", \"presto-player\"),\n },\n {\n value: \"metadata\",\n label: __(\"Page Load Speed\", \"presto-player\"),\n },\n {\n value: \"none\",\n label: __(\"Page Load Speed (Extreme)\", \"presto-player\"),\n },\n ]}\n />\n </PanelRow>\n )}\n <MediaUploadCheck>\n <BaseControl className=\"editor-video-poster-control\">\n <BaseControl.VisualLabel>\n <p>{__(\"Poster image\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n <MediaUpload\n title={__(\"Select poster image\", \"presto-player\")}\n onSelect={onSelectPoster}\n allowedTypes={VIDEO_POSTER_ALLOWED_MEDIA_TYPES}\n render={({ open }) => (\n <Button\n className=\"presto-setting__poster\"\n isPrimary\n onClick={open}\n aria-describedby={videoPosterDescription}\n >\n {!poster\n ? __(\"Select\", \"presto-player\")\n : __(\"Replace\", \"presto-player\")}\n </Button>\n )}\n />\n <p id={videoPosterDescription} hidden>\n {poster\n ? sprintf(\n __(\"The current poster image url is %s\", \"presto-player\"),\n poster\n )\n : __(\n \"There is no poster image currently selected\",\n \"presto-player\"\n )}\n </p>\n {!!poster && (\n <Button\n onClick={onRemovePoster}\n className=\"presto-setting__remove-poster\"\n isTertiary\n >\n {__(\"Remove\", \"presto-player\")}\n </Button>\n )}\n </BaseControl>\n </MediaUploadCheck>\n </>\n );\n};\n\nexport default VideoSettings;\n","const { PanelBody } = wp.components;\nconst { __ } = wp.i18n;\nimport VideoBranding from \"@/admin/blocks/shared/branding\";\nimport VideoChapters from \"@/admin/blocks/shared/chapters\";\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\nimport VideoOverlays from \"@/admin/blocks/shared/overlays\";\nimport VideoPresets from \"@/admin/blocks/shared/presets\";\nimport VideoSettings from \"@/admin/blocks/shared/settings\";\n\nexport default function ({ attributes, setAttributes }) {\n return (\n <>\n <PanelBody\n title={\n <>\n {__(\"Chapters\", \"presto-player\")}{\" \"}\n {!prestoPlayer?.isPremium && <ProBadge />}\n </>\n }\n initialOpen={prestoPlayer?.isPremium}\n >\n <VideoChapters setAttributes={setAttributes} attributes={attributes} />\n </PanelBody>\n\n <PanelBody\n title={\n <>\n {__(\"Overlays\", \"presto-player\")}{\" \"}\n {!prestoPlayer?.isPremium && <ProBadge />}\n </>\n }\n initialOpen={prestoPlayer?.isPremium}\n >\n <VideoOverlays setAttributes={setAttributes} attributes={attributes} />\n </PanelBody>\n\n <PanelBody title={__(\"Video settings\", \"presto-player\")}>\n <VideoSettings setAttributes={setAttributes} attributes={attributes} />\n </PanelBody>\n\n <PanelBody title={__(\"Video Preset\", \"presto-player\")}>\n <VideoPresets setAttributes={setAttributes} attributes={attributes} />\n </PanelBody>\n\n <PanelBody\n title={__(\"Global Player Branding\", \"presto-player\")}\n initialOpen={false}\n >\n <VideoBranding setAttributes={setAttributes} attributes={attributes} />\n </PanelBody>\n </>\n );\n}\n","export const dashToPascalCase = (str) => str\n .toLowerCase()\n .split('-')\n .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))\n .join('');\nexport const camelToDashCase = (str) => str.replace(/([A-Z])/g, (m) => `-${m[0].toLowerCase()}`);\n//# sourceMappingURL=case.js.map","import { camelToDashCase } from './case';\nexport const attachProps = (node, newProps, oldProps = {}) => {\n // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first\n if (node instanceof Element) {\n // add any classes in className to the class list\n const className = getClassName(node.classList, newProps, oldProps);\n if (className !== '') {\n node.className = className;\n }\n Object.keys(newProps).forEach((name) => {\n if (name === 'children' ||\n name === 'style' ||\n name === 'ref' ||\n name === 'class' ||\n name === 'className' ||\n name === 'forwardedRef') {\n return;\n }\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n if (!isCoveredByReact(eventNameLc)) {\n syncEvent(node, eventNameLc, newProps[name]);\n }\n }\n else {\n node[name] = newProps[name];\n const propType = typeof newProps[name];\n if (propType === 'string') {\n node.setAttribute(camelToDashCase(name), newProps[name]);\n }\n }\n });\n }\n};\nexport const getClassName = (classList, newProps, oldProps) => {\n const newClassProp = newProps.className || newProps.class;\n const oldClassProp = oldProps.className || oldProps.class;\n // map the classes to Maps for performance\n const currentClasses = arrayToMap(classList);\n const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []);\n const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []);\n const finalClassNames = [];\n // loop through each of the current classes on the component\n // to see if it should be a part of the classNames added\n currentClasses.forEach((currentClass) => {\n if (incomingPropClasses.has(currentClass)) {\n // add it as its already included in classnames coming in from newProps\n finalClassNames.push(currentClass);\n incomingPropClasses.delete(currentClass);\n }\n else if (!oldPropClasses.has(currentClass)) {\n // add it as it has NOT been removed by user\n finalClassNames.push(currentClass);\n }\n });\n incomingPropClasses.forEach((s) => finalClassNames.push(s));\n return finalClassNames.join(' ');\n};\n/**\n * Checks if an event is supported in the current execution environment.\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nexport const isCoveredByReact = (eventNameSuffix) => {\n if (typeof document === 'undefined') {\n return true;\n }\n else {\n const eventName = 'on' + eventNameSuffix;\n let isSupported = eventName in document;\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n return isSupported;\n }\n};\nexport const syncEvent = (node, eventName, newEventHandler) => {\n const eventStore = node.__events || (node.__events = {});\n const oldEventHandler = eventStore[eventName];\n // Remove old listener so they don't double up.\n if (oldEventHandler) {\n node.removeEventListener(eventName, oldEventHandler);\n }\n // Bind new listener.\n node.addEventListener(eventName, (eventStore[eventName] = function handler(e) {\n if (newEventHandler) {\n newEventHandler.call(this, e);\n }\n }));\n};\nconst arrayToMap = (arr) => {\n const map = new Map();\n arr.forEach((s) => map.set(s, s));\n return map;\n};\n//# sourceMappingURL=attachProps.js.map","import React from 'react';\nexport const setRef = (ref, value) => {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref != null) {\n // Cast as a MutableRef so we can assign current\n ref.current = value;\n }\n};\nexport const mergeRefs = (...refs) => {\n return (value) => {\n refs.forEach(ref => {\n setRef(ref, value);\n });\n };\n};\nexport const createForwardRef = (ReactComponent, displayName) => {\n const forwardRef = (props, ref) => {\n return React.createElement(ReactComponent, Object.assign({}, props, { forwardedRef: ref }));\n };\n forwardRef.displayName = displayName;\n return React.forwardRef(forwardRef);\n};\nexport const defineCustomElement = (tagName, customElement) => {\n if (customElement !== undefined &&\n typeof customElements !== 'undefined' &&\n !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\nexport * from './attachProps';\nexport * from './case';\n//# sourceMappingURL=index.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { attachProps, createForwardRef, dashToPascalCase, isCoveredByReact, mergeRefs, } from './utils';\nexport const createReactComponent = (tagName, ReactComponentContext, manipulatePropsFunction, defineCustomElement) => {\n if (defineCustomElement !== undefined) {\n defineCustomElement();\n }\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component {\n constructor(props) {\n super(props);\n this.setComponentElRef = (element) => {\n this.componentEl = element;\n };\n }\n componentDidMount() {\n this.componentDidUpdate(this.props);\n }\n componentDidUpdate(prevProps) {\n attachProps(this.componentEl, this.props, prevProps);\n }\n render() {\n const _a = this.props, { children, forwardedRef, style, className, ref } = _a, cProps = __rest(_a, [\"children\", \"forwardedRef\", \"style\", \"className\", \"ref\"]);\n let propsToPass = Object.keys(cProps).reduce((acc, name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {\n acc[name] = cProps[name];\n }\n }\n else {\n acc[name] = cProps[name];\n }\n return acc;\n }, {});\n if (manipulatePropsFunction) {\n propsToPass = manipulatePropsFunction(this.props, propsToPass);\n }\n const newProps = Object.assign(Object.assign({}, propsToPass), { ref: mergeRefs(forwardedRef, this.setComponentElRef), style });\n return React.createElement(tagName, newProps, children);\n }\n static get displayName() {\n return displayName;\n }\n };\n // If context was passed to createReactComponent then conditionally add it to the Component Class\n if (ReactComponentContext) {\n ReactComponent.contextType = ReactComponentContext;\n }\n return createForwardRef(ReactComponent, displayName);\n};\n//# sourceMappingURL=createComponent.js.map","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated react proxies */\nimport { createReactComponent } from './react-component-lib';\nexport const PrestoActionBar = /*@__PURE__*/ createReactComponent('presto-action-bar');\nexport const PrestoActionBarController = /*@__PURE__*/ createReactComponent('presto-action-bar-controller');\nexport const PrestoActionBarUi = /*@__PURE__*/ createReactComponent('presto-action-bar-ui');\nexport const PrestoAudio = /*@__PURE__*/ createReactComponent('presto-audio');\nexport const PrestoBunny = /*@__PURE__*/ createReactComponent('presto-bunny');\nexport const PrestoCtaOverlay = /*@__PURE__*/ createReactComponent('presto-cta-overlay');\nexport const PrestoCtaOverlayController = /*@__PURE__*/ createReactComponent('presto-cta-overlay-controller');\nexport const PrestoCtaOverlayUi = /*@__PURE__*/ createReactComponent('presto-cta-overlay-ui');\nexport const PrestoDynamicOverlayUi = /*@__PURE__*/ createReactComponent('presto-dynamic-overlay-ui');\nexport const PrestoDynamicOverlays = /*@__PURE__*/ createReactComponent('presto-dynamic-overlays');\nexport const PrestoEmailOverlay = /*@__PURE__*/ createReactComponent('presto-email-overlay');\nexport const PrestoEmailOverlayController = /*@__PURE__*/ createReactComponent('presto-email-overlay-controller');\nexport const PrestoEmailOverlayUi = /*@__PURE__*/ createReactComponent('presto-email-overlay-ui');\nexport const PrestoMutedOverlay = /*@__PURE__*/ createReactComponent('presto-muted-overlay');\nexport const PrestoPlayer = /*@__PURE__*/ createReactComponent('presto-player');\nexport const PrestoPlayerButton = /*@__PURE__*/ createReactComponent('presto-player-button');\nexport const PrestoPlayerSkeleton = /*@__PURE__*/ createReactComponent('presto-player-skeleton');\nexport const PrestoPlayerSpinner = /*@__PURE__*/ createReactComponent('presto-player-spinner');\nexport const PrestoTimestamp = /*@__PURE__*/ createReactComponent('presto-timestamp');\nexport const PrestoVideo = /*@__PURE__*/ createReactComponent('presto-video');\nexport const PrestoVideoCurtainUi = /*@__PURE__*/ createReactComponent('presto-video-curtain-ui');\nexport const PrestoVimeo = /*@__PURE__*/ createReactComponent('presto-vimeo');\nexport const PrestoYoutube = /*@__PURE__*/ createReactComponent('presto-youtube');\nexport const PrestoYoutubeSubscribeButton = /*@__PURE__*/ createReactComponent('presto-youtube-subscribe-button');\n//# sourceMappingURL=index.js.map","(function() { module.exports = window[\"wp\"][\"blockEditor\"]; }());","/** @jsx jsx */\nconst { __ } = wp.i18n;\nconst { Button, Popover, Icon } = wp.components;\n\nconst { __experimentalLinkControl: LinkControl } = wp.blockEditor;\nconst { useState } = wp.element;\nconst { prependHTTP } = wp.url;\n\nimport { css, jsx } from \"@emotion/core\";\n\nexport default ({ setSettings, settings }) => {\n const [visible, setVisible] = useState(false);\n const { url } = settings;\n\n /**\n * Pending settings to be applied to the next link. When inserting a new\n * link, toggle values cannot be applied immediately, because there is not\n * yet a link for them to apply to. Thus, they are maintained in a state\n * value until the time that the link can be inserted or edited.\n *\n * @type {[Object|undefined,Function]}\n */\n const [nextLinkValue, setNextLinkValue] = useState();\n\n const linkValue = {\n url: settings?.url,\n type: settings?.type,\n id: settings?.id,\n opensInNewTab: settings?.opensInNewTab,\n ...nextLinkValue,\n };\n\n const onChangeLink = (nextValue) => {\n // Merge with values from state, both for the purpose of assigning the\n // next state value, and for use in constructing the new link format if\n // the link is ready to be applied.\n nextValue = {\n ...nextLinkValue,\n ...nextValue,\n };\n\n // LinkControl calls `onChange` immediately upon the toggling a setting.\n const didToggleSetting =\n linkValue.opensInNewTab !== nextValue.opensInNewTab &&\n linkValue.url === nextValue.url;\n\n // If change handler was called as a result of a settings change during\n // link insertion, it must be held in state until the link is ready to\n // be applied.\n const didToggleSettingForNewLink =\n didToggleSetting && nextValue.url === undefined;\n\n // If link will be assigned, the state value can be considered flushed.\n // Otherwise, persist the pending changes.\n setNextLinkValue(didToggleSettingForNewLink ? nextValue : undefined);\n\n if (didToggleSettingForNewLink) {\n return;\n }\n\n const newUrl = prependHTTP(nextValue.url);\n setSettings({\n url: newUrl,\n type: nextValue.type,\n id:\n nextValue.id !== undefined && nextValue.id !== null\n ? String(nextValue.id)\n : undefined,\n opensInNewTab: nextValue.opensInNewTab,\n });\n };\n\n const confirmTrash = () => {\n const r = confirm(\n __(\"Are you sure you wish to remove this link?\", \"presto-player\")\n );\n if (r) {\n setSettings({});\n }\n };\n\n return (\n <span>\n {url ? (\n <div\n css={css`\n display: flex;\n justify-content: space-between;\n `}\n >\n <div\n css={css`\n max-width: 85%;\n overflow: hidden;\n display: flex;\n align-items: center;\n `}\n >\n <a\n href=\"#\"\n css={css`\n padding: 10px;\n background: #f3f3f3;\n border-radius: 4px;\n width: 100%;\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-decoration: none;\n `}\n onClick={() => setVisible(!visible)}\n >\n <Icon\n icon=\"edit\"\n css={css`\n cursor: pointer;\n opacity: 0.75;\n margin: 0 2px;\n font-size: 16px;\n width: 16px;\n height: 16px;\n text-decoration: none;\n `}\n />\n {url}\n </a>\n {visible && (\n <Popover\n position=\"bottom center\"\n onClose={() => setVisible(false)}\n >\n <LinkControl value={settings} onChange={onChangeLink} />\n </Popover>\n )}\n </div>\n <div\n css={css`\n display: flex;\n align-items: center;\n `}\n >\n <Icon\n onClick={confirmTrash}\n icon=\"trash\"\n className=\"presto-icon\"\n css={css`\n cursor: pointer;\n opacity: 0.75;\n margin: 0 2px;\n fontsize: 18px;\n width: 18px;\n height: 18px;\n\n &:hover {\n color: #cc1818;\n }\n `}\n />\n </div>\n </div>\n ) : (\n <span>\n <Button isPrimary isSmall onClick={() => setVisible(!visible)}>\n {__(\"Add Link\", \"presto-player\")}\n </Button>\n {visible && (\n <Popover position=\"bottom center\" onClose={() => setVisible(false)}>\n <LinkControl value={settings} onChange={onChangeLink} />\n </Popover>\n )}\n </span>\n )}\n </span>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n ColorPicker,\n Button,\n withNotices,\n BaseControl,\n RangeControl,\n} = wp.components;\nconst { MediaUpload, MediaUploadCheck } = wp.blockEditor;\nconst { useInstanceId } = wp.compose;\nconst { useState } = wp.element;\nconst { dispatch, useSelect } = wp.data;\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\n\nconst VIDEO_LOGO_ALLOWED_MEDIA_TYPES = [\"image\"];\n\nfunction PlayerSettings({ setAttributes, attributes, type }) {\n const instanceId = useInstanceId(PlayerSettings);\n const [pickerRender, setPickerRender] = useState(1);\n\n // get branding options\n const branding = useSelect((select) => {\n return select(\"presto-player/player\").branding();\n });\n // save options\n const saveOptions = async () => {\n await dispatch(\"presto-player/player\").saveOptions({\n branding,\n });\n wp.data.dispatch(\"core/notices\").createNotice(\n \"success\", // Can be one of: success, info, warning, error.\n \"Player branding saved.\", // Text string to display.\n {\n type: \"snackbar\",\n isDismissible: true, // Whether the user can dismiss the notice.\n // Any actions the user can perform.\n }\n );\n };\n\n function onSelectLogo(image) {\n dispatch(\"presto-player/player\").updateBranding(\"logo\", image.url);\n }\n\n function onRemoveLogo() {\n dispatch(\"presto-player/player\").updateBranding(\"logo\", \"\");\n }\n\n return (\n <div className=\"presto-player__panel--branding\">\n {type !== \"audio\" && (\n <p>\n {__(\n \"Here you can select the global player branding This will apply to all players on the site.\",\n \"presto-player\"\n )}\n </p>\n )}\n\n <MediaUploadCheck>\n <BaseControl className=\"editor-video-poster-control\">\n {type !== \"audio\" && (\n <>\n <BaseControl.VisualLabel>\n <p>\n {__(\"Logo Overlay\", \"presto-player\")}{\" \"}\n {!prestoPlayer?.isPremium && <ProBadge />}\n </p>\n </BaseControl.VisualLabel>\n <MediaUpload\n title={__(\"Select logo overlay image\", \"presto-player\")}\n onSelect={onSelectLogo}\n allowedTypes={VIDEO_LOGO_ALLOWED_MEDIA_TYPES}\n render={({ open }) => (\n <Button\n className=\"presto-setting__logo\"\n isSecondary\n onClick={() => {\n if (!prestoPlayer?.isPremium) {\n dispatch(\"presto-player/player\").setProModal(true);\n return;\n }\n open();\n }}\n aria-describedby={`video-block__logo-image-description-${instanceId}`}\n >\n {!branding?.logo\n ? __(\"Select\", \"presto-player\")\n : __(\"Replace\", \"presto-player\")}\n </Button>\n )}\n />\n </>\n )}\n\n <p id={`video-block__logo-image-description-${instanceId}`} hidden>\n {branding?.logo\n ? sprintf(\n /* translators: %s: poster image URL. */\n __(\"The current logo image url is %s\", \"presto-player\"),\n branding?.logo\n )\n : __(\n \"There is no logo image currently selected\",\n \"presto-player\"\n )}\n </p>\n {!!branding?.logo && (\n <Button onClick={onRemoveLogo} isTertiary>\n {__(\"Remove\", \"presto-player\")}\n </Button>\n )}\n </BaseControl>\n </MediaUploadCheck>\n\n {!!branding?.logo && (\n <RangeControl\n label={__(\"Logo Max Width\", \"presto-player\")}\n value={branding?.logo_width || 150}\n onChange={(width) =>\n dispatch(\"presto-player/player\").updateBranding(\"logo_width\", width)\n }\n min={1}\n max={400}\n />\n )}\n\n <ColorPicker\n color={branding?.color}\n onChangeComplete={(value) => {\n dispatch(\"presto-player/player\").updateBranding(\"color\", value.hex);\n }}\n key={pickerRender}\n disableAlpha\n />\n\n {branding?.color && (\n <BaseControl>\n <Button\n isSecondary\n onClick={() => {\n dispatch(\"presto-player/player\").updateBranding(\n \"color\",\n prestoPlayer?.defaults?.color || \"#00b3ff\"\n );\n setPickerRender(pickerRender + 1);\n }}\n >\n {__(\"Reset Color\", \"presto-player\")}\n </Button>\n </BaseControl>\n )}\n\n <Button isPrimary onClick={saveOptions}>\n {__(\"Save Branding\", \"presto-player\")}\n </Button>\n </div>\n );\n}\n\nexport default withNotices(PlayerSettings);\n","(function() { module.exports = window[\"wp\"][\"compose\"]; }());","/**\n * External dependencies\n */\nimport classnames from \"classnames\";\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { useState, useEffect } = wp.element;\n\nconst { partial, noop, find } = lodash;\n\n/**\n * WordPress components\n */\nconst { NavigableMenu, Animate } = wp.components;\n\nexport default ({\n className,\n children,\n items,\n title,\n orientation = \"horizontal\",\n activeClass = \"is-active\",\n onSelect = noop,\n}) => {\n const [selected, setSelected] = useState(null);\n const [origin, setOrigin] = useState(\"left\");\n\n const handleClick = (itemKey) => {\n setSelected(itemKey);\n onSelect && onSelect(itemKey);\n };\n\n const onNavigate = (childIndex, child) => {\n child.click();\n };\n\n const selectedTab = find(items, { name: selected });\n const selectedId = `${selectedTab?.name ?? \"none\"}`;\n\n useEffect(() => {\n setOrigin(selected ? \"right\" : \"left\");\n }, [selected]);\n\n return (\n <div className={className}>\n <Animate type=\"slide-in\" origin={!!selectedTab ? \"right\" : \"left\"}>\n {({ className }) =>\n !selectedTab ? (\n <div className={classnames(className, \"is-from-right\")}>\n {!!title && <h2>{title}</h2>}\n <NavigableMenu\n role=\"itemlist\"\n orientation={orientation}\n onNavigate={onNavigate}\n className={classnames(\"presto-player__menu-items\")}\n >\n {items.map((item) => (\n <div\n className={classnames(\n \"presto-player__menu-item\",\n item.className,\n {\n [activeClass]: item.name === selected,\n }\n )}\n itemId={`${item.name}`}\n aria-controls={`${item.name}-view`}\n selected={item.name === selected}\n key={item.name}\n onClick={partial(handleClick, item.name)}\n >\n {!!item.icon && (\n <div class=\"presto-player__menu-icon\">{item.icon}</div>\n )}\n {item.title}\n <svg\n className=\"submenu-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n role=\"img\"\n ariaHidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z\"></path>\n </svg>\n </div>\n ))}\n </NavigableMenu>\n </div>\n ) : (\n <div\n key={selectedId}\n aria-labelledby={selectedId}\n role=\"itempanel\"\n id={`${selectedId}-view`}\n className={classnames(className, \"presto-player__menu-content\")}\n >\n <div className=\"presto-player__menu-items\">\n <div\n className=\"presto-player__menu-item is-back-button\"\n onClick={() => handleClick(\"\")}\n >\n <svg\n class=\"back-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n role=\"img\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z\"></path>\n </svg>\n {__(\"Back\", \"presto-player\")}\n </div>\n </div>\n {children(selectedTab)}\n </div>\n )\n }\n </Animate>\n </div>\n );\n};\n","/** @jsx jsx */\n\n/**\n * WordPress dependencies\n */\nimport { __ } from \"@wordpress/i18n\";\nimport {\n ToggleControl,\n BaseControl,\n RangeControl,\n TextControl,\n Flex,\n Button,\n TextareaControl,\n Notice,\n} from \"@wordpress/components\";\nimport { useEffect } from \"@wordpress/element\";\nimport { useSelect } from \"@wordpress/data\";\n\nimport UrlSelect from \"../components/UrlSelect\";\nimport ColorPopup from \"../components/ColorPopup\";\n\nimport { css, jsx } from \"@emotion/core\";\n\nfunction CTA({ state, updateState, className }) {\n const { cta, email_collection } = state;\n\n const branding = useSelect((select) => {\n return select(\"presto-player/player\").branding();\n });\n\n // set defaults\n const defaults = {\n percentage: 100,\n show_rewatch: true,\n show_skip: true,\n headline: __(\"Want to learn more?\", \"presto-player\"),\n show_button: true,\n button_text: __(\"Click Here\", \"presto-player\"),\n button_link: {\n opensInNewTab: true,\n },\n };\n useEffect(() => {\n Object.keys(defaults).forEach((key) => {\n if (state?.cta?.[key] === undefined) {\n updateCTAState({\n [key]: defaults[key],\n });\n }\n });\n }, [state]);\n\n const updateCTAState = (updated) => {\n updateState({\n ...state,\n cta: {\n ...cta,\n ...updated,\n },\n });\n };\n\n const disableEmailCapture = () => {\n updateState({\n ...state,\n email_collection: {\n ...email_collection,\n ...{ enabled: false },\n },\n });\n };\n\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Call To Action\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl className=\"presto-player__control--large-play\">\n <ToggleControl\n label={__(\"Enable\", \"presto-player\")}\n help={__(\n \"Show an email collection form and message over your player.\",\n \"presto-player\"\n )}\n onChange={(enabled) => {\n updateCTAState({\n enabled,\n });\n }}\n checked={cta?.enabled}\n />\n </BaseControl>\n {!!cta?.enabled && (\n <>\n <BaseControl className=\"presto-player__control--percentage-watched\">\n <RangeControl\n label={__(\"Display At (Percentage)\", \"presto-player\")}\n labelPosition=\"top\"\n onChange={(percentage) => {\n updateCTAState({\n percentage,\n });\n }}\n marks={[\n {\n value: 0,\n label: __(\"Start\", \"presto-player\"),\n },\n {\n value: 50,\n label: __(\"50% Watched\", \"presto-player\"),\n },\n {\n value: 100,\n label: __(\"End\", \"presto-player\"),\n },\n ]}\n shiftStep={5}\n value={cta?.percentage}\n />\n </BaseControl>\n\n {email_collection?.enabled &&\n email_collection?.percentage === cta?.percentage && (\n <Notice\n css={css`\n margin: 0 0 30px 0 !important;\n `}\n status=\"warning\"\n isDismissible={false}\n >\n {__(\n \"You already have an email capture set display at the same time.\",\n \"presto-player\"\n )}\n <Button\n onClick={disableEmailCapture}\n isLink\n css={css`\n margin-top: 10px !important;\n `}\n >\n {__(\"Disable Email Capture\", \"presto-player\")}\n </Button>\n </Notice>\n )}\n\n {cta?.percentage === 100 ? (\n <BaseControl className=\"presto-player__control--show-rewatch\">\n <ToggleControl\n label={__(\"Show Rewatch Button\", \"presto-player\")}\n help={__(\n \"Show a rewatch button at the end of the player.\",\n \"presto-player\"\n )}\n onChange={(show_rewatch) => {\n updateCTAState({\n show_rewatch,\n });\n }}\n checked={cta?.show_rewatch}\n />\n </BaseControl>\n ) : (\n <BaseControl className=\"presto-player__control--show-skip\">\n <ToggleControl\n label={__(\"Allow Skipping\", \"presto-player\")}\n help={__(\n \"Let the user continue watching the player.\",\n \"presto-player\"\n )}\n onChange={(show_skip) => {\n updateCTAState({\n show_skip,\n });\n }}\n checked={cta?.show_skip}\n />\n </BaseControl>\n )}\n\n <BaseControl className=\"presto-player__control--button-link\">\n <BaseControl.VisualLabel>\n <p> {__(\"Link\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n <UrlSelect\n setSettings={(val) => {\n updateCTAState({\n button_link: val,\n });\n }}\n settings={cta?.button_link || {}}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--headline\">\n <TextareaControl\n label={__(\"Headline\", \"presto-player\")}\n help={__(\"The headline for your form.\", \"presto-player\")}\n value={cta?.headline}\n onChange={(headline) => {\n updateCTAState({\n headline,\n });\n }}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--bottom-text\">\n <TextareaControl\n label={__(\"Bottom Text\", \"presto-player\")}\n help={__(\n \"Text displayed below the form. HTML allowed.\",\n \"presto-player\"\n )}\n value={cta?.bottom_text}\n onChange={(bottom_text) => {\n updateCTAState({\n bottom_text,\n });\n }}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--show-button\">\n <ToggleControl\n label={__(\"Show Button\", \"presto-player\")}\n help={__(\"Show a call to action button.\", \"presto-player\")}\n onChange={(show_button) => {\n updateCTAState({\n show_button,\n });\n }}\n checked={cta?.show_button}\n />\n </BaseControl>\n\n {!!cta?.show_button && (\n <div>\n <BaseControl className=\"presto-player__control--button-text\">\n <TextControl\n label={__(\"Button Text\", \"presto-player\")}\n help={\n <p>\n {__(\n \"Button text for the Call To Action\",\n \"presto-player\"\n )}\n </p>\n }\n value={cta?.button_text}\n onChange={(button_text) => updateCTAState({ button_text })}\n />\n </BaseControl>\n\n <h3>{__(\"Style\", \"presto-player\")}</h3>\n\n <BaseControl>\n <RangeControl\n label={__(\"Round Corners\", \"presto-player\")}\n help={__(\"Border radius of form elements.\", \"presto-player\")}\n value={cta?.button_radius || 0}\n onChange={(button_radius) =>\n updateCTAState({ button_radius })\n }\n min={0}\n max={25}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--button-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Button Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={cta?.button_color || branding?.color}\n setColor={(value) =>\n updateCTAState({\n button_color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n <BaseControl className=\"presto-player__control--button-text-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Button Text Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={cta?.button_text_color || \"#ffffff\"}\n setColor={(value) =>\n updateCTAState({\n button_text_color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n </div>\n )}\n <BaseControl>\n <RangeControl\n label={__(\"Background Opacity\", \"presto-player\")}\n help={__(\n \"Opacity percentage of the cover background.\",\n \"presto-player\"\n )}\n value={cta?.background_opacity || 75}\n onChange={(background_opacity) =>\n updateCTAState({ background_opacity })\n }\n min={0}\n max={100}\n />\n </BaseControl>\n </>\n )}\n </div>\n );\n}\n\nCTA.defaultProps = {\n catName: \"Sandy\",\n eyeColor: \"deepblue\",\n age: \"120\",\n};\n\nexport default CTA;\n","// import apiFetch from \"@wordpress/api-fetch\";\nconst { apiFetch } = wp;\n\n// nonce and root\napiFetch.use(apiFetch.createNonceMiddleware(prestoPlayer.nonce));\napiFetch.use(\n apiFetch.createRootURLMiddleware(\n prestoPlayer.root + prestoPlayer.prestoVersionString\n )\n);\n\nexport default apiFetch;\n","/**\n * WordPress dependencies\n */\n// import { __, sprintf } from '@wordpress/i18n';\nconst { __, sprintf } = wp.i18n;\nconst {\n NavigableMenu,\n MenuItem,\n FormFileUpload,\n MenuGroup,\n ToolbarGroup,\n ToolbarButton,\n Dropdown,\n SVG,\n Rect,\n Path,\n Button,\n TextControl,\n SelectControl,\n} = wp.components;\nconst { MediaUpload, MediaUploadCheck } = wp.blockEditor;\nconst { useSelect } = wp.data;\nconst { useState } = wp.element;\n\nconst ALLOWED_TYPES = [\"text/vtt\"];\n\nconst DEFAULT_KIND = \"subtitles\";\n\n// const KIND_OPTIONS = [\n// { label: __(\"Subtitles\"), value: \"subtitles\" },\n// { label: __(\"Captions\"), value: \"captions\" },\n// { label: __(\"Descriptions\"), value: \"descriptions\" },\n// { label: __(\"Chapters\"), value: \"chapters\" },\n// { label: __(\"Metadata\"), value: \"metadata\" },\n// ];\n\nconst captionIcon = (\n <svg viewBox=\"0 0 29 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17.5014 20.2854H28.6316V0.764648H0.110825V20.2854H11.241L14.3712 24.2854L17.5014 20.2854ZM14.3712 21.0401L16.5269 18.2854H26.6316V2.76465H2.11082V18.2854H12.2155L14.3712 21.0401Z\"\n />\n <path d=\"M10.4503 14.9446C9.56226 14.9446 8.76226 14.7606 8.05026 14.3926C7.33826 14.0166 6.77826 13.4966 6.37026 12.8326C5.97026 12.1606 5.77026 11.4006 5.77026 10.5526C5.77026 9.70464 5.97026 8.94864 6.37026 8.28464C6.77826 7.61264 7.33826 7.09264 8.05026 6.72464C8.76226 6.34864 9.56226 6.16064 10.4503 6.16064C11.2663 6.16064 11.9943 6.30464 12.6343 6.59264C13.2743 6.88064 13.8023 7.29664 14.2183 7.84064L12.4303 9.43664C11.9103 8.78064 11.2983 8.45264 10.5943 8.45264C10.0023 8.45264 9.52626 8.64464 9.16626 9.02864C8.80626 9.40464 8.62626 9.91264 8.62626 10.5526C8.62626 11.1926 8.80626 11.7046 9.16626 12.0886C9.52626 12.4646 10.0023 12.6526 10.5943 12.6526C11.2983 12.6526 11.9103 12.3246 12.4303 11.6686L14.2183 13.2646C13.8023 13.8086 13.2743 14.2246 12.6343 14.5126C11.9943 14.8006 11.2663 14.9446 10.4503 14.9446Z\" />\n <path d=\"M19.2042 14.9446C18.3162 14.9446 17.5162 14.7606 16.8042 14.3926C16.0922 14.0166 15.5322 13.4966 15.1242 12.8326C14.7242 12.1606 14.5242 11.4006 14.5242 10.5526C14.5242 9.70464 14.7242 8.94864 15.1242 8.28464C15.5322 7.61264 16.0922 7.09264 16.8042 6.72464C17.5162 6.34864 18.3162 6.16064 19.2042 6.16064C20.0202 6.16064 20.7482 6.30464 21.3882 6.59264C22.0282 6.88064 22.5562 7.29664 22.9722 7.84064L21.1842 9.43664C20.6642 8.78064 20.0522 8.45264 19.3482 8.45264C18.7562 8.45264 18.2802 8.64464 17.9202 9.02864C17.5602 9.40464 17.3802 9.91264 17.3802 10.5526C17.3802 11.1926 17.5602 11.7046 17.9202 12.0886C18.2802 12.4646 18.7562 12.6526 19.3482 12.6526C20.0522 12.6526 20.6642 12.3246 21.1842 11.6686L22.9722 13.2646C22.5562 13.8086 22.0282 14.2246 21.3882 14.5126C20.7482 14.8006 20.0202 14.9446 19.2042 14.9446Z\" />\n </svg>\n);\n\nfunction TrackList({ tracks, onEditPress }) {\n let content;\n if (tracks.length === 0) {\n content = (\n <p className=\"block-library-video-tracks-editor__tracks-informative-message\">\n {__(\n \"Captions are .vtt files that help make your content more accesible to a wider range of users.\",\n \"presto-player\"\n )}\n </p>\n );\n } else {\n content = tracks.map((track, index) => {\n return (\n <div\n key={index}\n className=\"block-library-video-tracks-editor__track-list-track\"\n >\n <span>{track.label} </span>\n <Button\n isTertiary\n onClick={() => onEditPress(index)}\n aria-label={sprintf(\n /* translators: %s: Label of the video text track e.g: \"French subtitles\" */\n __(\"Edit %s\", \"presto-player\"),\n track.label\n )}\n >\n {__(\"Edit\", \"presto-player\")}\n </Button>\n </div>\n );\n });\n }\n return (\n <MenuGroup\n label={__(\"Captions\", \"presto-player\")}\n className=\"block-library-video-tracks-editor__track-list\"\n >\n {content}\n </MenuGroup>\n );\n}\n\nfunction SingleTrackEditor({ track, onChange, onClose, onRemove }) {\n const { src = \"\", label = \"\", srcLang = \"\", kind = DEFAULT_KIND } = track;\n const fileName = src.startsWith(\"blob:\")\n ? \"\"\n : src.substring(src.lastIndexOf(\"/\") + 1);\n return (\n <NavigableMenu>\n <div className=\"block-library-video-tracks-editor__single-track-editor\">\n <span className=\"block-library-video-tracks-editor__single-track-editor-edit-track-label\">\n {__(\"Edit caption track\", \"presto-player\")}\n </span>\n <span>\n {__(\"File\", \"presto-player\")}: <b>{fileName}</b>\n </span>\n <div className=\"block-library-video-tracks-editor__single-track-editor-label-language\">\n <TextControl\n /* eslint-disable jsx-a11y/no-autofocus */\n autoFocus\n /* eslint-enable jsx-a11y/no-autofocus */\n onChange={(newLabel) =>\n onChange({\n ...track,\n label: newLabel,\n })\n }\n label={__(\"Label\", \"presto-player\")}\n value={label}\n help={__(\"Title of track\", \"presto-player\")}\n />\n <TextControl\n onChange={(newSrcLang) =>\n onChange({\n ...track,\n srcLang: newSrcLang,\n })\n }\n label={__(\"Source language\", \"presto-player\")}\n value={srcLang}\n help={__(\"Language tag (en, fr, etc.)\", \"presto-player\")}\n />\n </div>\n {/* <SelectControl\n className=\"block-library-video-tracks-editor__single-track-editor-kind-select\"\n options={KIND_OPTIONS}\n value={kind}\n label={__(\"Kind\")}\n onChange={(newKind) => {\n if (newKind === DEFAULT_KIND) {\n newKind = undefined;\n }\n onChange({\n ...track,\n kind: newKind,\n });\n }}\n /> */}\n <div className=\"block-library-video-tracks-editor__single-track-editor-buttons-container\">\n <Button\n isSecondary\n onClick={() => {\n const changes = {};\n let hasChanges = false;\n if (label === \"\") {\n changes.label = __(\"English\", \"presto-player\");\n hasChanges = true;\n }\n if (srcLang === \"\") {\n changes.srcLang = \"en\";\n hasChanges = true;\n }\n if (hasChanges) {\n onChange({\n ...track,\n ...changes,\n });\n }\n onClose();\n }}\n >\n {__(\"Close\", \"presto-player\")}\n </Button>\n <Button isDestructive isLink onClick={onRemove}>\n {__(\"Remove track\", \"presto-player\")}\n </Button>\n </div>\n </div>\n </NavigableMenu>\n );\n}\n\nexport default function TracksEditor({ tracks = [], onChange }) {\n const mediaUpload = useSelect((select) => {\n return select(\"core/block-editor\").getSettings().mediaUpload;\n }, []);\n const [trackBeingEdited, setTrackBeingEdited] = useState(null);\n\n if (!mediaUpload) {\n return null;\n }\n return (\n <Dropdown\n contentClassName=\"block-library-video-tracks-editor\"\n renderToggle={({ isOpen, onToggle }) => (\n <ToolbarGroup>\n <ToolbarButton\n label={__(\"Captions\", \"presto-player\")}\n showTooltip\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n onClick={onToggle}\n icon={captionIcon}\n />\n </ToolbarGroup>\n )}\n renderContent={({}) => {\n if (trackBeingEdited !== null) {\n return (\n <SingleTrackEditor\n track={tracks[trackBeingEdited]}\n onChange={(newTrack) => {\n const newTracks = [...tracks];\n newTracks[trackBeingEdited] = newTrack;\n onChange(newTracks);\n }}\n onClose={() => setTrackBeingEdited(null)}\n onRemove={() => {\n onChange(\n tracks.filter((_track, index) => index !== trackBeingEdited)\n );\n setTrackBeingEdited(null);\n }}\n />\n );\n }\n return (\n <>\n <NavigableMenu>\n <TrackList tracks={tracks} onEditPress={setTrackBeingEdited} />\n <MenuGroup\n className=\"block-library-video-tracks-editor__add-tracks-container\"\n label={__(\"Add caption languages\", \"presto-player\")}\n >\n <MediaUpload\n onSelect={({ url }) => {\n const trackIndex = tracks.length;\n onChange([...tracks, { src: url }]);\n setTrackBeingEdited(trackIndex);\n }}\n allowedTypes={ALLOWED_TYPES}\n render={({ open }) => (\n <MenuItem icon={\"media\"} onClick={open}>\n {__(\"Open Media Library\", \"presto-player\")}\n </MenuItem>\n )}\n />\n <MediaUploadCheck>\n <FormFileUpload\n onChange={(event) => {\n const files = event.target.files;\n const trackIndex = tracks.length;\n mediaUpload({\n allowedTypes: ALLOWED_TYPES,\n filesList: files,\n onFileChange: ([{ url }]) => {\n const newTracks = [...tracks];\n if (!newTracks[trackIndex]) {\n newTracks[trackIndex] = {};\n }\n newTracks[trackIndex] = {\n ...tracks[trackIndex],\n src: url,\n };\n onChange(newTracks);\n setTrackBeingEdited(trackIndex);\n },\n });\n }}\n accept=\".vtt,text/vtt\"\n render={({ openFileDialog }) => {\n return (\n <MenuItem\n icon={\"upload\"}\n onClick={() => {\n openFileDialog();\n }}\n >\n {__(\"Upload\", \"presto-player\")}\n </MenuItem>\n );\n }}\n />\n </MediaUploadCheck>\n </MenuGroup>\n </NavigableMenu>\n </>\n );\n }}\n />\n );\n}\n","const { __ } = wp.i18n;\nconst { Disabled } = wp.components;\nimport { PrestoCtaOverlayUi, PrestoEmailOverlayUi } from \"@presto-player/react\";\nimport { timeToSeconds } from \"../util\";\nimport Player from \"./Player\";\nconst { useState, useEffect } = wp.element;\n\nexport default ({\n state,\n branding,\n menu,\n src,\n poster,\n currentTime,\n preload,\n overlays,\n isDisabled = true,\n}) => {\n const [renderKey, setRenderKey] = useState(1);\n const { email_collection, cta } = state;\n\n useEffect(() => {\n setRenderKey(renderKey + 1);\n }, [\n state.skin,\n state[\"play-large\"],\n state.rewind,\n state.play,\n state[\"fast-forward\"],\n state.progress,\n state[\"current-time\"],\n state.mute,\n state.volume,\n state.speed,\n state.pip,\n state.fullscreen,\n state.captions,\n state.hide_logo,\n ]);\n\n const previews = {\n email: !!email_collection?.enabled && (\n <PrestoEmailOverlayUi\n className=\"email-overlay\"\n slot=\"player-end\"\n headline={email_collection?.headline}\n style={{\n \"--presto-player-email-border-radiuss\": `${email_collection?.button_radius}px`,\n \"--plyr-color-main\": state?.background_color || branding?.color,\n ...(email_collection.button_color\n ? {\n \"--presto-player-button-color\": `${email_collection.button_color}`,\n }\n : {}),\n ...(email_collection.button_text_color\n ? {\n \"--presto-player-button-text\": `${email_collection.button_text_color}`,\n }\n : {}),\n }}\n defaultHeadline={__(\"Enter your email to play.\", \"presto-player\")}\n bottomText={email_collection?.bottom_text}\n allowSkip={email_collection?.allow_skip}\n skipText={__(\"Skip\", \"presto-player\")}\n buttonText={email_collection?.button_text}\n placeholder={__(\"Email address\", \"presto-player\")}\n i18n={window.prestoPlayer.i18n}\n />\n ),\n cta: !!cta?.enabled && (\n <PrestoCtaOverlayUi\n className=\"cta-overlay\"\n style={{\n \"--presto-player-button-border-radius\": `${cta.button_radius}px`,\n ...(cta?.background_opacity\n ? {\n \"--presto-player-cta-background-opacity\": `${\n cta?.background_opacity / 100\n }`,\n }\n : {}),\n ...(cta.button_color\n ? {\n \"--presto-player-button-color\": `${cta.button_color}`,\n }\n : {}),\n ...(cta.button_text_color\n ? {\n \"--presto-player-button-text\": `${cta.button_text_color}`,\n }\n : {}),\n }}\n slot=\"player-end\"\n headline={cta?.headline}\n bottom-text={cta?.bottom_text}\n button-link={cta?.button_link}\n allow-skip={cta?.percentage !== 100 && cta?.show_skip}\n borderRadius={cta?.border_radius}\n allow-rewatch={cta?.percentage === 100 && cta?.show_rewatch}\n skip-text={__(\"Skip\", \"presto-player\")}\n show-button={cta?.show_button}\n button-text={cta?.button_text}\n i18n={window?.prestoPlayer?.i18n}\n />\n ),\n };\n\n return (\n <Disabled isDisabled={isDisabled} className=\"disable-player\">\n <div className=\"presto-player__wrapper\">\n <Player\n src={src || \"\"}\n className={`\n ${menu === \"cta\" && !!cta?.enabled && \"cta-active\"} \n ${\n menu === \"email\" && !!email_collection?.enabled && \"email-active\"\n }`}\n preset={state}\n branding={{\n ...branding,\n logo: state?.hide_logo ? \"\" : branding[\"logo\"],\n }}\n i18n={prestoPlayerAdmin?.i18n}\n preload={preload}\n attributes={{\n chapters: [],\n poster: poster,\n }}\n currentTime={currentTime ? timeToSeconds(currentTime) : \"\"}\n overlays={overlays}\n key={renderKey}\n adminPreview={previews?.[menu] || \"\"}\n />\n </div>\n </Disabled>\n );\n};\n","const { __ } = wp.i18n;\nconst { TextareaControl } = wp.components;\nconst { useState } = wp.element;\n\nexport default ({ text, update, onFocus }) => {\n const [more, setMore] = useState(false);\n\n return (\n <div style={{ display: \"block\", width: \"100%\" }}>\n <TextareaControl\n label=\"Text\"\n help={\n <span>\n {__(\"This field accepts\", \"presto-player\")}{\" \"}\n <a\n href=\"#\"\n onClick={(e) => {\n setMore(!more);\n e.preventDefault();\n }}\n >\n {__(\"Dynamic Data\", \"presto-player\")}\n </a>\n {!!more && (\n <div style={{ marginTop: \"20px\" }}>\n {__(\n \"This field will also accept dynamic values that we will replace with dynamic content: {user.user_login}, {user.user_nicename}, {user.user_email}, {user.user_url},{user.user_registered}, {user.display_name}, {site.url}, {site.name}, {ip_address}\",\n \"presto-player\"\n )}\n </div>\n )}\n </span>\n }\n className={\"presto-player__overlay--text\"}\n placeholder={__(\"Enter some text.\", \"presto-player\")}\n value={text || \"\"}\n onChange={(text) => update({ text })}\n autoComplete=\"off\"\n onFocus={onFocus}\n />\n </div>\n );\n};\n","const {\n Button,\n Placeholder,\n TextControl,\n Flex,\n FlexItem,\n FlexBlock,\n} = wp.components;\nconst { useState } = wp.element;\nconst { __ } = wp.i18n;\n\nexport default function ({\n attributes,\n setAttributes,\n icon,\n onSelectURL,\n label,\n instructions,\n placeholder,\n}) {\n const { src } = attributes;\n const [state, setState] = useState({ src });\n return (\n <Placeholder\n icon={icon}\n label={label || __(\"Presto Embedded Video\", \"presto-player\")}\n instructions={instructions || __(\"Enter video URL\", \"presto-player\")}\n >\n <form\n onSubmit={(e) => {\n e.preventDefault();\n onSelectURL(state.url);\n }}\n >\n <Flex style={{ width: \"100%\", maxWidth: \"400px\" }}>\n <FlexBlock>\n <TextControl\n type=\"url\"\n className={\"presto-link-placeholder-input\"}\n placeholder={placeholder || __(\"Youtube URL\", \"presto-player\")}\n value={state.url}\n onChange={(url) => setState({ url })}\n />\n </FlexBlock>\n <FlexItem>\n <Button isPrimary style={{ marginBottom: \"8px\" }} type=\"submit\">\n {__(\"Add Video\", \"presto-player\")}\n </Button>\n </FlexItem>\n </Flex>\n </form>\n </Placeholder>\n );\n}\n","export default () => {\n return (\n <div>\n <presto-player-skeleton\n style={{ width: \"30%\", marginBottom: \"10px\" }}\n ></presto-player-skeleton>\n <presto-player-skeleton\n style={{ height: \"2rem\", marginBottom: \"20px\" }}\n ></presto-player-skeleton>\n </div>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { SelectControl, TextControl, Notice } = wp.components;\nconst { useEffect, useState } = wp.element;\nimport LoadSelect from \"../../components/LoadSelect\";\n\nexport default ({ options, updateEmailState }) => {\n const [fetching, setFetching] = useState(false);\n const [lists, setLists] = useState([\n { value: null, label: __(\"Choose an audience\", \"presto-player\") },\n ]);\n const [error, setError] = useState(\"\");\n\n const fetchLists = async () => {\n setFetching(true);\n try {\n const fetched = await wp.apiFetch({\n path: \"presto-player/v1/mailchimp/lists\",\n });\n\n let listOptions = lists;\n (fetched || []).forEach((list) => {\n listOptions = [\n ...listOptions,\n ...[\n {\n value: list.id,\n label: list.name,\n },\n ],\n ];\n });\n setLists(listOptions);\n } catch (e) {\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setFetching(false);\n }\n };\n\n useEffect(() => {\n fetchLists();\n }, []);\n\n if (fetching) {\n return (\n <div>\n <LoadSelect />\n <LoadSelect />\n </div>\n );\n }\n\n if (error) {\n return (\n <Notice className=\"presto-notice\" status=\"error\" isDismissible={false}>\n {error}\n </Notice>\n );\n }\n\n return (\n <div>\n <SelectControl\n label={__(\"Choose an audience\", \"presto-player\")}\n value={options?.provider_list}\n options={lists}\n onChange={(provider_list) => updateEmailState({ provider_list })}\n />\n <TextControl\n label={__(\"Tag\", \"presto-player\")}\n help={\n <p>\n {__(\n \"Give this contact an optional tag when they are added to the list.\",\n \"presto-player\"\n )}\n </p>\n }\n value={options?.provider_tag}\n onChange={(provider_tag) => updateEmailState({ provider_tag })}\n />\n </div>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { SelectControl, Notice } = wp.components;\nconst { useEffect, useState } = wp.element;\nimport LoadSelect from \"../../components/LoadSelect\";\n\nexport default ({ options, updateEmailState }) => {\n const [fetching, setFetching] = useState(false);\n const [groups, setGroups] = useState([\n { value: null, label: __(\"Choose a group\", \"presto-player\") },\n ]);\n const [error, setError] = useState(\"\");\n\n const fetchGroups = async () => {\n setFetching(true);\n try {\n const fetched = await wp.apiFetch({\n path: \"presto-player/v1/mailerlite/groups\",\n });\n\n let listOptions = groups;\n (fetched || []).forEach((list) => {\n listOptions = [\n ...listOptions,\n ...[\n {\n value: list.id,\n label: list.name,\n },\n ],\n ];\n });\n setGroups(listOptions);\n } catch (e) {\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setFetching(false);\n }\n };\n\n useEffect(() => {\n fetchGroups();\n }, []);\n\n if (fetching) {\n return <LoadSelect />;\n }\n\n if (error) {\n return (\n <Notice className=\"presto-notice\" status=\"error\" isDismissible={false}>\n {error}\n </Notice>\n );\n }\n\n return (\n <div>\n <SelectControl\n label={__(\"Choose a group\", \"presto-player\")}\n value={options?.provider_list}\n options={groups}\n onChange={(provider_list) => updateEmailState({ provider_list })}\n />\n </div>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { SelectControl, Notice } = wp.components;\nconst { useEffect, useState } = wp.element;\nimport LoadSelect from \"../../components/LoadSelect\";\n\nexport default ({ options, updateEmailState }) => {\n const [fetchingLists, setFetchingLists] = useState(false);\n const [fetchingTags, setFetchingTags] = useState(false);\n\n const [lists, setLists] = useState([\n { value: null, label: __(\"Choose a list\", \"presto-player\") },\n ]);\n const [tags, setTags] = useState([\n { value: null, label: __(\"Choose a tag\", \"presto-player\") },\n ]);\n const [error, setError] = useState(\"\");\n\n const fetchLists = async () => {\n setFetchingLists(true);\n try {\n const fetched = await wp.apiFetch({\n path: \"presto-player/v1/activecampaign/lists\",\n });\n\n let listOptions = lists;\n (fetched || []).forEach((list) => {\n listOptions = [\n ...listOptions,\n ...[\n {\n value: list.id,\n label: list.name || __(\"Default list\", \"presto-player\"),\n },\n ],\n ];\n });\n setLists(listOptions);\n } catch (e) {\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setFetchingLists(false);\n }\n };\n\n const fetchTags = async () => {\n setFetchingTags(true);\n try {\n const fetched = await wp.apiFetch({\n path: \"presto-player/v1/activecampaign/tags\",\n });\n\n let tagOptions = tags;\n (fetched || []).forEach((tag) => {\n tagOptions = [\n ...tagOptions,\n ...[\n {\n value: tag.id,\n label: tag.tag,\n },\n ],\n ];\n });\n setTags(tagOptions);\n } catch (e) {\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setFetchingTags(false);\n }\n };\n\n useEffect(() => {\n fetchLists();\n fetchTags();\n }, []);\n\n if (error) {\n return (\n <Notice className=\"presto-notice\" status=\"error\" isDismissible={false}>\n {error}\n </Notice>\n );\n }\n\n return (\n <div>\n {fetchingLists ? (\n <LoadSelect />\n ) : (\n lists.length > 1 && (\n <SelectControl\n label={__(\"Choose a list\", \"presto-player\")}\n value={options?.provider_list}\n options={lists}\n onChange={(provider_list) => updateEmailState({ provider_list })}\n />\n )\n )}\n\n {fetchingTags ? (\n <LoadSelect />\n ) : (\n tags.length > 1 && (\n <SelectControl\n label={__(\"Choose a tag\", \"presto-player\")}\n value={options?.provider_tag}\n options={tags}\n onChange={(provider_tag) => updateEmailState({ provider_tag })}\n />\n )\n )}\n </div>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { SelectControl, Notice } = wp.components;\nconst { useEffect, useState } = wp.element;\nimport LoadSelect from \"../../components/LoadSelect\";\n\nexport default ({ options, updateEmailState }) => {\n const [fetchingLists, setFetchingLists] = useState(false);\n const [fetchingTags, setFetchingTags] = useState(false);\n\n const [lists, setLists] = useState([\n { value: null, label: __(\"Choose a list\", \"presto-player\") },\n ]);\n const [tags, setTags] = useState([\n { value: null, label: __(\"Choose a tag\", \"presto-player\") },\n ]);\n const [error, setError] = useState(\"\");\n\n const fetchLists = async () => {\n setFetchingLists(true);\n try {\n const fetched = await wp.apiFetch({\n path: \"presto-player/v1/fluentcrm/lists\",\n });\n\n let listOptions = lists;\n (fetched || []).forEach((list) => {\n listOptions = [\n ...listOptions,\n ...[\n {\n value: list.id,\n label: list.title || list.slug,\n },\n ],\n ];\n });\n setLists(listOptions);\n } catch (e) {\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setFetchingLists(false);\n }\n };\n\n const fetchTags = async () => {\n setFetchingTags(true);\n try {\n const fetched = await wp.apiFetch({\n path: \"presto-player/v1/fluentcrm/tags\",\n });\n\n let tagOptions = tags;\n (fetched || []).forEach((tag) => {\n tagOptions = [\n ...tagOptions,\n ...[\n {\n value: tag.id,\n label: tag.title || tag.slug,\n },\n ],\n ];\n });\n setTags(tagOptions);\n } catch (e) {\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setFetchingTags(false);\n }\n };\n\n useEffect(() => {\n fetchLists();\n fetchTags();\n }, []);\n\n if (error) {\n return (\n <Notice className=\"presto-notice\" status=\"error\" isDismissible={false}>\n {error}\n </Notice>\n );\n }\n\n return (\n <div>\n {fetchingLists ? (\n <LoadSelect />\n ) : (\n lists.length > 1 && (\n <SelectControl\n label={__(\"Choose a list\", \"presto-player\")}\n value={options?.provider_list}\n options={lists}\n onChange={(provider_list) => updateEmailState({ provider_list })}\n />\n )\n )}\n\n {fetchingTags ? (\n <LoadSelect />\n ) : (\n tags.length > 1 && (\n <SelectControl\n label={__(\"Choose a tag\", \"presto-player\")}\n value={options?.provider_tag}\n options={tags}\n onChange={(provider_tag) => updateEmailState({ provider_tag })}\n />\n )\n )}\n </div>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { SelectControl, Button, Flex, Icon } = wp.components;\nconst { useEffect, useState } = wp.element;\nimport LoadSelect from \"../../components/LoadSelect\";\n\nimport MailchimpConfig from \"./MailchimpConfig\";\nimport MailerLiteConfig from \"./MailerLiteConfig\";\nimport ActiveCampaignConfig from \"./ActiveCampaignConfig\";\nimport FluentCRMConfig from \"./FluentCRMConfig\";\n\nexport default ({ options, updateEmailState }) => {\n const [fetching, setFetching] = useState(false);\n const [settings, setSettings] = useState([\n { value: \"none\", label: __(\"None\", \"presto-player\") },\n ]);\n const [error, setError] = useState(\"\");\n\n const optionsMap = {\n presto_player_activecampaign: {\n label: \"ActiveCampaign\",\n value: \"activecampaign\",\n },\n presto_player_mailchimp: {\n label: \"MailChimp\",\n value: \"mailchimp\",\n },\n presto_player_mailerlite: {\n label: \"MailerLite\",\n value: \"mailerlite\",\n },\n presto_player_fluentcrm: {\n label: \"FluentCRM\",\n value: \"fluentcrm\",\n },\n };\n\n const fetchSettings = async () => {\n setFetching(true);\n setError(\"\");\n try {\n const fetched = await wp.apiFetch({\n path: \"wp/v2/settings\",\n });\n let settingsToSet = settings;\n Object.keys(fetched).forEach((key) => {\n if (optionsMap?.[key] && fetched[key]?.connected) {\n settingsToSet = [...settingsToSet, ...[optionsMap[key]]];\n }\n });\n setSettings(settingsToSet);\n } catch (e) {\n if (e?.message) {\n setError(e.message);\n }\n } finally {\n setFetching(false);\n }\n };\n\n const addProvider = () => {\n return (\n <Flex>\n <Button\n target=\"_blank\"\n href=\"/wp-admin/edit.php?post_type=pp_video_block&page=presto-player-settings#/integrations\"\n isSecondary\n isSmall\n >\n {__(\"Connect a provider\", \"presto-player\")}\n </Button>\n <Button\n isSmall\n onClick={(e) => {\n e.preventDefault();\n fetchSettings();\n }}\n >\n <Icon icon=\"update\" />\n </Button>\n </Flex>\n );\n };\n\n useEffect(() => {\n fetchSettings();\n }, []);\n\n const emailProviderOptions = () => {\n const found = settings.find(\n (setting) => setting.value === options?.provider\n );\n if (!Object.keys(found || {}).length) {\n return;\n }\n\n switch (options?.provider) {\n case \"mailchimp\":\n return (\n <MailchimpConfig\n options={options}\n updateEmailState={updateEmailState}\n />\n );\n case \"mailerlite\":\n return (\n <MailerLiteConfig\n options={options}\n updateEmailState={updateEmailState}\n />\n );\n case \"activecampaign\":\n return (\n <ActiveCampaignConfig\n options={options}\n updateEmailState={updateEmailState}\n />\n );\n case \"fluentcrm\":\n return (\n <FluentCRMConfig\n options={options}\n updateEmailState={updateEmailState}\n />\n );\n }\n };\n\n if (fetching) {\n return <LoadSelect />;\n }\n\n return (\n <div>\n {error}\n {settings.length > 1 ? (\n <div>\n <SelectControl\n label={__(\"Choose an email provider\", \"presto-player\")}\n value={options?.provider}\n options={settings}\n onChange={(provider) => updateEmailState({ provider })}\n />\n {emailProviderOptions()}\n </div>\n ) : (\n addProvider()\n )}\n </div>\n );\n};\n","/** @jsx jsx */\n/**\n * WordPress dependencies\n */\nimport { __ } from \"@wordpress/i18n\";\nimport {\n ToggleControl,\n BaseControl,\n RangeControl,\n TextControl,\n Button,\n Flex,\n TextareaControl,\n Notice,\n} from \"@wordpress/components\";\nimport { useSelect } from \"@wordpress/data\";\n\nimport ChooseProvider from \"./parts/ChooseProvider\";\nimport ColorPopup from \"../components/ColorPopup\";\n\nimport { css, jsx } from \"@emotion/core\";\n\nexport default function ({ state, updateState, className }) {\n const { email_collection, cta } = state;\n\n const branding = useSelect((select) => {\n return select(\"presto-player/player\").branding();\n });\n\n const updateEmailState = (updated) => {\n updateState({\n ...state,\n email_collection: {\n ...email_collection,\n ...updated,\n },\n });\n };\n\n const disableCTA = () => {\n updateState({\n ...state,\n cta: {\n ...cta,\n ...{ enabled: false },\n },\n });\n };\n\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Email Capture\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl className=\"presto-player__control--large-play\">\n <ToggleControl\n label={__(\"Enable\", \"presto-player\")}\n help={__(\n \"Show an email collection form and message over your player.\",\n \"presto-player\"\n )}\n onChange={(enabled) => {\n updateEmailState({\n enabled,\n });\n }}\n checked={email_collection?.enabled}\n />\n </BaseControl>\n {!!email_collection?.enabled && (\n <>\n <BaseControl className=\"presto-player__control--percentage-watched\">\n <RangeControl\n label={__(\"Display At (Percentage)\", \"presto-player\")}\n labelPosition=\"top\"\n onChange={(percentage) => {\n updateEmailState({\n percentage,\n });\n }}\n marks={[\n {\n value: 0,\n label: __(\"Start\", \"presto-player\"),\n },\n {\n value: 50,\n label: __(\"50% Watched\", \"presto-player\"),\n },\n {\n value: 100,\n label: __(\"End\", \"presto-player\"),\n },\n ]}\n shiftStep={5}\n value={email_collection?.percentage || 0}\n />\n </BaseControl>\n\n {cta?.enabled && email_collection?.percentage === cta?.percentage && (\n <Notice\n css={css`\n margin: 0 0 30px 0 !important;\n `}\n status=\"warning\"\n isDismissible={false}\n >\n {__(\n \"You already have a Call To Action set display at the same time.\",\n \"presto-player\"\n )}\n <Button\n onClick={disableCTA}\n isLink\n css={css`\n margin-top: 10px !important;\n `}\n >\n {__(\"Disable Call To Action\", \"presto-player\")}\n </Button>\n </Notice>\n )}\n\n <BaseControl className=\"presto-player__control--large-play\">\n <ToggleControl\n label={__(\"Allow Skipping\", \"presto-player\")}\n help={__(\"Let the viewer skip\", \"presto-player\")}\n onChange={(allow_skip) => {\n updateEmailState({\n allow_skip,\n });\n }}\n checked={email_collection?.allow_skip}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--large-play\">\n <TextareaControl\n label={__(\"Headline\", \"presto-player\")}\n help={__(\"The headline for your form.\", \"presto-player\")}\n value={email_collection?.headline}\n onChange={(headline) => {\n updateEmailState({\n headline,\n });\n }}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--large-play\">\n <TextareaControl\n label={__(\"Bottom Text\", \"presto-player\")}\n help={__(\n \"Text displayed below the form. HTML allowed.\",\n \"presto-player\"\n )}\n value={email_collection?.bottom_text}\n onChange={(bottom_text) => {\n updateEmailState({\n bottom_text,\n });\n }}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--large-play\">\n <TextControl\n label={__(\"Play Button Text\", \"presto-player\")}\n help={<p>{__(\"Submit button text\", \"presto-player\")}</p>}\n value={email_collection?.button_text}\n onChange={(button_text) => updateEmailState({ button_text })}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--button-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Button Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={cta?.button_color || branding?.color}\n setColor={(value) =>\n updateEmailState({\n button_color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n <BaseControl className=\"presto-player__control--button-text-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Button Text Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={cta?.button_text_color || \"#ffffff\"}\n setColor={(value) =>\n updateEmailState({\n button_text_color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n\n <h3>{__(\"Integrate\", \"presto-player\")}</h3>\n <BaseControl>\n <ChooseProvider\n updateEmailState={updateEmailState}\n options={email_collection}\n />\n </BaseControl>\n\n <h3>{__(\"Style\", \"presto-player\")}</h3>\n\n <BaseControl>\n <RangeControl\n label={__(\"Round Corners\", \"presto-player\")}\n help={__(\"Border radius of form elements.\", \"presto-player\")}\n value={email_collection?.border_radius || 0}\n onChange={(border_radius) => updateEmailState({ border_radius })}\n min={0}\n max={25}\n />\n </BaseControl>\n </>\n )}\n </div>\n );\n}\n","const { __ } = wp.i18n;\nconst { Flex, FlexItem, FlexBlock, TextControl, Button } = wp.components;\nconst { useState } = wp.element;\n\nimport { sanitizeTime } from \"../../../util\";\n\nconst Chapter = ({\n update,\n add,\n remove,\n className,\n time,\n title,\n disabled,\n showNotice,\n}) => {\n const [draftTime, setDraftTime] = useState(time);\n\n return (\n <Flex align=\"center\" className={className}>\n <FlexItem>\n <TextControl\n className={\"presto-player__caption--time\"}\n style={{ width: \"60px\" }}\n placeholder={\"0:00\"}\n value={draftTime}\n onChange={(time) => setDraftTime(time)}\n onBlur={() => {\n let time = sanitizeTime(draftTime);\n update({ time });\n setDraftTime(time);\n }}\n autoComplete=\"off\"\n placeholder=\"0:00\"\n />\n </FlexItem>\n\n <FlexBlock>\n <TextControl\n className={\"presto-player__caption--title\"}\n placeholder={__(\"Title\", \"presto-player\")}\n value={title || \"\"}\n onChange={(title) => update({ title })}\n autoComplete=\"off\"\n />\n </FlexBlock>\n\n <FlexItem>\n {remove && (\n <Button\n icon=\"minus\"\n className=\"ph-chapter__remove\"\n style={{ marginBottom: \"8px\" }}\n label={__(\"Remove Chapter\", \"presto-player\")}\n onClick={remove}\n />\n )}\n {add && (\n <Button\n icon=\"plus-alt\"\n className=\"ph-chapter__add\"\n label={__(\"Add Chapter\", \"presto-player\")}\n style={{ marginBottom: \"8px\" }}\n onClick={() => {\n add();\n setDraftTime(\"\");\n }}\n />\n )}\n </FlexItem>\n </Flex>\n );\n};\n\nexport default Chapter;\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { useState } = wp.element;\nconst { dispatch } = wp.data;\nimport Chapter from \"./components/Chapter\";\n\nconst VideoSettings = ({ setAttributes, attributes }) => {\n const showNotice = () => {\n dispatch(\"presto-player/player\").setProModal(true);\n };\n if (!prestoPlayer?.isPremium) {\n return (\n <Chapter\n disabled={true}\n className=\"ph-chapter is-new\"\n time={\"\"}\n title={\"\"}\n update={() => {}}\n showNotice={showNotice}\n add={showNotice}\n />\n );\n }\n\n const { chapters } = attributes;\n\n let [draft, setDraft] = useState({\n title: \"\",\n time: \"\",\n });\n\n const updateChapter = (chapter, data = {}) => {\n let itemIndex = chapters.indexOf(chapter);\n let updated = chapters.map((item, index) => {\n // This isn't the item we care about - keep it as-is\n if (index !== itemIndex) {\n return item;\n }\n // Otherwise, this is the one we want - return an updated value\n return {\n ...item,\n ...data,\n };\n });\n setAttributes({ chapters: updated });\n };\n\n const removeChapter = (chapter) => {\n let index = chapters.indexOf(chapter);\n setAttributes({ chapters: chapters.filter((_, i) => i !== index) });\n };\n\n const addChapter = () => {\n if (!draft.time || !draft.title) {\n return;\n }\n setAttributes({\n chapters: [\n ...(chapters || []),\n ...[{ time: draft.time, title: draft.title }],\n ],\n });\n setDraft({\n title: \"\",\n time: \"\",\n });\n };\n\n const sorted = () => {\n return (chapters || []).sort(function (a, b) {\n if (\n parseInt(a.time.split(\":\")[0]) - parseInt(b.time.split(\":\")[0]) ===\n 0\n ) {\n return parseInt(a.time.split(\":\")[1]) - parseInt(b.time.split(\":\")[1]);\n } else {\n return parseInt(a.time.split(\":\")[0]) - parseInt(b.time.split(\":\")[0]);\n }\n });\n };\n\n return (\n <>\n {sorted().map((chapter, i) => {\n return (\n <Chapter\n key={`${i}-${chapter.time}`}\n className=\"ph-chapter\"\n time={chapter.time}\n title={chapter.title}\n chapter={chapter}\n update={(data) => {\n updateChapter(chapter, data);\n }}\n remove={() => {\n removeChapter(chapter);\n }}\n />\n );\n })}\n\n <Chapter\n className=\"ph-chapter is-new\"\n time={draft.time}\n title={draft.title}\n update={(data) => {\n setDraft({ ...draft, ...data });\n }}\n add={addChapter}\n />\n </>\n );\n};\n\nexport default VideoSettings;\n","/** @jsx jsx */\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { TextControl, ExternalLink, Button, Flex } = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { useSelect, dispatch } = wp.data;\n\nimport { css, jsx } from \"@emotion/core\";\n\nexport default ({ onClose, value, setValue }) => {\n const [saving, setSaving] = useState(false);\n\n const userCanReadSettings = wp.data.useSelect((select) =>\n select(\"core\").canUser(\"read\", \"settings\")\n );\n\n const youtube = useSelect((select) => {\n return select(\"presto-player/player\").youtube();\n });\n\n useEffect(() => {\n setValue(youtube.channel_id);\n }, [youtube?.channel_id]);\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setSaving(true);\n dispatch(\"presto-player/player\").updateYoutube({ channel_id: value });\n\n const data = {\n ...youtube,\n ...{ channel_id: value },\n };\n\n try {\n let response = await wp.apiFetch({\n path: \"wp/v2/settings\",\n method: \"POST\",\n data: {\n presto_player_youtube: data,\n },\n });\n if (response?.presto_player_youtube) {\n dispatch(\"presto-player/player\").setYoutube(\n response?.presto_player_youtube\n );\n onClose();\n }\n } catch (e) {\n } finally {\n setSaving(false);\n }\n };\n\n // use must be able to read settings\n if (!userCanReadSettings) {\n return \"\";\n }\n\n return (\n <form onSubmit={handleSubmit}>\n <TextControl\n css={css`\n margin-bottom: 0 !important;\n `}\n label={__(\"Youtube Channel ID\", \"presto-player\")}\n help={\n <p>\n <ExternalLink href=\"https://support.google.com/youtube/answer/3250431?hl=en\">\n {__(\"Find my channel id\", \"presto-player\")}\n </ExternalLink>\n </p>\n }\n value={value}\n onChange={(channel_id) => setValue(channel_id)}\n // required\n />\n\n <Button\n disabled={saving}\n isBusy={saving}\n css={css`\n margin-bottom: 1em;\n `}\n isPrimary\n type=\"submot\"\n >\n {__(\"Save\", \"presto-player\")}\n </Button>\n <Button\n onClick={onClose}\n css={css`\n margin-bottom: 1em;\n `}\n isTertiary\n >\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n </form>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n ToggleControl,\n Flex,\n Button,\n BaseControl,\n RangeControl,\n TextControl,\n SelectControl,\n TextareaControl,\n} = wp.components;\n\nconst { useEffect, useState } = wp.element;\nconst { useSelect } = wp.data;\n\nimport ColorPopup from \"../components/ColorPopup\";\nimport UrlSelect from \"../components/UrlSelect\";\nimport YoutubeChannelId from \"./parts/YoutubeChannelId\";\n\nexport default function ({ state, updateState, className, value, setValue }) {\n const { action_bar } = state;\n const [editYoutube, setEditYoutube] = useState(false);\n\n const branding = useSelect((select) => {\n return select(\"presto-player/player\").branding();\n });\n const youtube = useSelect((select) => {\n return select(\"presto-player/player\").youtube();\n });\n\n const updateActionBar = (updated) => {\n updateState({\n ...state,\n action_bar: {\n ...action_bar,\n ...updated,\n },\n });\n };\n\n useEffect(() => {\n if (!action_bar?.text) {\n updateActionBar({\n text: \"Like this?\",\n });\n }\n if (!action_bar?.button_type) {\n updateActionBar({\n button_type: \"custom\",\n });\n }\n\n if (!action_bar?.button_text) {\n updateActionBar({\n button_text: \"Click Here\",\n });\n }\n }, [state]);\n\n const renderYoutubeChannelForm = () => {\n if (action_bar?.button_type !== \"youtube\") {\n return;\n }\n\n return editYoutube ? (\n <YoutubeChannelId\n onClose={() => setEditYoutube(false)}\n value={value}\n setValue={setValue}\n />\n ) : (\n <div>\n <Button\n isSecondary\n onClick={(e) => {\n e.preventDefault();\n setEditYoutube(true);\n }}\n >\n {youtube?.channel_id\n ? __(\"Update Youtube Channel Id\", \"presto-player\")\n : __(\"Add Youtube Channel Id\", \"presto-player\")}\n </Button>\n <br />\n <br />\n <br />\n </div>\n );\n };\n\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Action Bar\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl className=\"presto-player__control--large-play\">\n <ToggleControl\n label={__(\"Enable\", \"presto-player\")}\n help={__(\n \"Show an action bar below your player while it's playing.\",\n \"presto-player\"\n )}\n onChange={(enabled) => {\n updateActionBar({\n enabled,\n });\n }}\n checked={action_bar?.enabled}\n />\n </BaseControl>\n {!!action_bar?.enabled && (\n <>\n <BaseControl className=\"presto-player__control--percentage-watched\">\n <RangeControl\n label={__(\"Display At (Percentage)\", \"presto-player\")}\n labelPosition=\"top\"\n onChange={(percentage_start) => {\n updateActionBar({\n percentage_start,\n });\n }}\n marks={[\n {\n value: 0,\n label: __(\"Start\", \"presto-player\"),\n },\n {\n value: 50,\n label: __(\"50% Watched\", \"presto-player\"),\n },\n {\n value: 100,\n label: __(\"End\", \"presto-player\"),\n },\n ]}\n shiftStep={5}\n value={action_bar?.percentage_start || 0}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--large-play\">\n <TextareaControl\n label={__(\"Text\", \"presto-player\")}\n help={__(\"Action bar text.\", \"presto-player\")}\n value={action_bar?.text}\n onChange={(text) =>\n updateActionBar({\n text,\n })\n }\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--large-play\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Action Bar Background\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={action_bar?.background_color || \"#1d1d1d\"}\n setColor={(value) =>\n updateActionBar({\n background_color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n\n <BaseControl>\n <h3>{__(\"Button\", \"presto-player\")}</h3>\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--button-type\">\n <SelectControl\n label={__(\"Button Type\", \"presto-player\")}\n value={action_bar?.button_type}\n options={[\n {\n value: \"custom\",\n label: __(\"Custom\", \"presto-player\"),\n },\n {\n value: \"youtube\",\n label: __(\"YouTube Subscribe\", \"presto-player\"),\n },\n {\n value: \"none\",\n label: __(\"None\", \"presto-player\"),\n },\n ]}\n onChange={(button_type) =>\n updateActionBar({\n button_type,\n })\n }\n />\n </BaseControl>\n\n {action_bar?.button_type === \"youtube\" && youtube?.channel_id && (\n <ToggleControl\n label={__(\"Show Count\", \"presto-player\")}\n help={__(\"Show your follower count.\", \"presto-player\")}\n onChange={(button_count) => {\n updateActionBar({\n button_count,\n });\n }}\n checked={action_bar?.button_count}\n />\n )}\n\n {renderYoutubeChannelForm()}\n\n {action_bar?.button_type === \"custom\" && (\n <div>\n <BaseControl className=\"presto-player__control--button-text\">\n <TextControl\n label={__(\"Button Text\", \"presto-player\")}\n help={<p>{__(\"Submit button text\", \"presto-player\")}</p>}\n value={action_bar?.button_text}\n onChange={(button_text) => updateActionBar({ button_text })}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--button-text\">\n <BaseControl.VisualLabel>\n <p> {__(\"Button Link\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n <UrlSelect\n setSettings={(val) => {\n updateActionBar({\n button_link: val,\n });\n }}\n settings={action_bar?.button_link || {}}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--button-radius\">\n <RangeControl\n label={__(\"Round Corners\", \"presto-player\")}\n help={__(\"Border radius of the button\", \"presto-player\")}\n value={action_bar?.button_radius || 0}\n onChange={(button_radius) =>\n updateActionBar({ button_radius })\n }\n min={0}\n max={25}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--button-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Button Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={action_bar?.button_color || branding?.color}\n setColor={(value) =>\n updateActionBar({\n button_color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n <BaseControl className=\"presto-player__control--button-text-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Button Text Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n color={action_bar?.button_text_color || \"#ffffff\"}\n setColor={(value) =>\n updateActionBar({\n button_text_color: value && value.hex,\n })\n }\n />\n </Flex>\n </BaseControl>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n","(function() { module.exports = window[\"wp\"][\"editor\"]; }());","/** @jsx jsx */\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { Button, Flex, FlexItem, FlexBlock, Modal } = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { useSelect } = wp.data;\nimport { nanoid } from \"nanoid\";\n\nimport { css, jsx } from \"@emotion/core\";\nimport Preview from \"../Preview\";\nimport Overlay from \"./components/Overlay\";\n\nconst EditOverlay = ({\n closeModal,\n attributes,\n setAttributes,\n updateOverlayAttribute,\n}) => {\n const [loading, setLoading] = useState(false);\n const [currentTime, setCurrentTime] = useState(\"\");\n const { overlays, preset, src, poster, previewSrc } = attributes;\n\n const branding = useSelect((select) => {\n return select(\"presto-player/player\").branding();\n });\n\n const state = useSelect((select) =>\n select(\"presto-player/player\").getPreset(preset)\n );\n\n // maybe add a default so it's not empty.\n useEffect(() => {\n if (!overlays.length) {\n addOverlay();\n }\n }, []);\n\n // update an existing overlay.\n const updateOverlay = (overlay, data = {}) => {\n let itemIndex = overlays.indexOf(overlay);\n let updated = overlays.map((item, index) => {\n // This isn't the item we care about - keep it as-is\n if (index !== itemIndex) {\n return item;\n }\n // Otherwise, this is the one we want - return an updated value\n return {\n ...item,\n ...data,\n };\n });\n\n setAttributes({ overlays: updated });\n };\n\n // remove overlay.\n const removeOverlay = (overlay) => {\n let index = overlays.indexOf(overlay);\n setAttributes({ overlays: overlays.filter((_, i) => i !== index) });\n };\n\n // add overlay with custom default.\n const addOverlay = () => {\n let defaultOverlay = {\n startTime: \"0:00\",\n endTime: \"0:05\",\n text: __(\"Here's a link to click!\", \"presto-player\"),\n link: {},\n position: \"top-right\",\n color: \"#fff\",\n backgroundColor: \"#000\",\n opacity: 75,\n };\n\n if (overlays[overlays.length - 1]) {\n const lastOverlay = overlays[overlays.length - 1];\n defaultOverlay = { ...lastOverlay }; // make a shallow clone.\n }\n\n defaultOverlay.id = nanoid(10);\n\n setAttributes({\n overlays: [...(overlays || []), ...[defaultOverlay]],\n });\n };\n\n // sort the overlays by time.\n const sorted = () => {\n return (overlays || []).sort(function (a, b) {\n if (\n parseInt(a.startTime.split(\":\")[0]) -\n parseInt(b.startTime.split(\":\")[0]) ===\n 0\n ) {\n return (\n parseInt(a.startTime.split(\":\")[1]) -\n parseInt(b.startTime.split(\":\")[1])\n );\n } else {\n return (\n parseInt(a.startTime.split(\":\")[0]) -\n parseInt(b.startTime.split(\":\")[0])\n );\n }\n });\n };\n\n // make sure we always update.\n const updateCurrentTimeState = (time) => {\n setCurrentTime(\"\");\n process.nextTick(() => {\n setCurrentTime(time);\n });\n };\n\n // validate and save\n const save = () => {\n setLoading(true);\n updateOverlayAttribute(overlays);\n setLoading(false);\n closeModal();\n };\n\n return (\n <Modal\n title={__(\"Manage Video Overlays\", \"presto-player\")}\n onRequestClose={closeModal}\n className=\"presto-player__modal-presets\"\n overlayClassName=\"presto-player__modal-presets-overlay\"\n shouldCloseOnClickOutside={false}\n >\n <div className=\"presto-player__preset-options\" data-cy=\"preset-modal\">\n <Flex align=\"stretch\" className=\"presto-player__style-preview-area\">\n <FlexItem className=\"presto-player__style-sidebar\">\n <div css={{ padding: \"3px\" }}>\n {sorted().map((overlay, i) => {\n return (\n <Overlay\n key={`${i}-${overlay.startTime}`}\n overlayIndex={i}\n className=\"presto-player__overlay\"\n startTime={overlay.startTime}\n endTime={overlay.endTime}\n text={overlay.text}\n link={overlay.link}\n position={overlay.position}\n color={overlay.color}\n backgroundColor={overlay.backgroundColor}\n opacity={overlay.opacity}\n overlay={overlay}\n update={(data) => {\n updateOverlay(overlay, data);\n }}\n remove={() => {\n removeOverlay(overlay);\n }}\n updateCurrentTime={(data) => {\n updateCurrentTimeState(data);\n }}\n />\n );\n })}\n <Button isPrimary onClick={addOverlay}>\n {__(\"Add An Overlay\", \"presto-player\")}\n </Button>\n </div>\n </FlexItem>\n <FlexBlock className=\"presto-player__style-preview-panel\">\n <Preview\n preload=\"auto\"\n currentTime={currentTime}\n src={previewSrc || src}\n isDisabled={false}\n state={{\n ...state,\n lazy_load_youtube: false, // don't lazy load.\n invert_time: false,\n }}\n branding={branding}\n poster={poster}\n overlays={overlays}\n />\n </FlexBlock>\n </Flex>\n\n <br />\n\n <div\n css={css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n `}\n >\n <div\n css={css`\n opacity: 0.5;\n font-size: 12px;\n `}\n ></div>\n <div>\n <Button isTertiary onClick={closeModal} style={{ margin: \"0 6px\" }}>\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n <Button\n isPrimary\n isBusy={loading}\n disabled={loading}\n onClick={save}\n data-cy=\"submit-preset\"\n >\n {__(\"Save Overlays\", \"presto-player\")}\n </Button>\n </div>\n </div>\n </div>\n </Modal>\n );\n};\nexport default EditOverlay;\n","/** @jsx jsx */\nconst { __ } = wp.i18n;\nconst {\n Flex,\n FlexItem,\n TextControl,\n Button,\n BaseControl,\n RadioControl,\n RangeControl,\n withFocusReturn,\n} = wp.components;\nconst { useRef, useEffect } = wp.element;\nimport { css, jsx } from \"@emotion/core\";\n\nimport { sanitizeTime, timeToSeconds, secondsToTime } from \"../../../util\";\nimport UrlSelect from \"../../components/UrlSelect\";\nimport DynamicText from \"./DynamicText\";\nimport ColorPopup from \"../../components/ColorPopup\";\n\nconst { useState } = wp.element;\n\nconst Overlay = ({\n overlayIndex,\n update,\n remove,\n className,\n startTime,\n endTime,\n text,\n link,\n position,\n color,\n backgroundColor,\n opacity,\n updateCurrentTime,\n}) => {\n const [draftStartTime, setDraftStartTime] = useState(startTime);\n const [draftEndTime, setDraftEndTime] = useState(endTime);\n const [draftPosition, setDraftPosition] = useState(position);\n const startControl = useRef();\n\n useEffect(() => {\n if (timeToSeconds(startTime) >= timeToSeconds(endTime)) {\n let endTime = sanitizeTime(startTime);\n let seconds = timeToSeconds(endTime) + 1;\n endTime = sanitizeTime(secondsToTime(seconds));\n update({ endTime });\n setDraftEndTime(endTime);\n }\n }, [startTime, endTime]);\n\n const updateStartTime = () => {\n const startTime = sanitizeTime(draftStartTime);\n update({ startTime });\n setDraftStartTime(startTime);\n updateCurrentTime(startTime);\n };\n\n const updateEndTime = () => {\n const endTime = sanitizeTime(draftEndTime);\n update({ endTime });\n setDraftEndTime(endTime);\n };\n\n return (\n <div>\n <Flex align=\"center\" className={className}>\n <FlexItem>\n <TextControl\n ref={startControl}\n id={`start-time-${overlayIndex}`}\n label={__(\"Start Time\", \"presto-player\")}\n className=\"presto-player__overlay--start-time\"\n value={draftStartTime}\n onChange={(startTime) => setDraftStartTime(startTime)}\n onBlur={updateStartTime}\n onFocus={updateStartTime}\n autoComplete=\"off\"\n placeholder=\"0:00\"\n />\n </FlexItem>\n\n <FlexItem>\n <TextControl\n label={__(\"End Time\", \"presto-player\")}\n className=\"presto-player__overlay--end-time\"\n value={draftEndTime}\n onChange={setDraftEndTime}\n onBlur={updateEndTime}\n autoComplete=\"off\"\n placeholder=\"0:00\"\n />\n </FlexItem>\n </Flex>\n\n <DynamicText\n text={text}\n update={update}\n onFocus={() => {\n updateCurrentTime(sanitizeTime(draftStartTime));\n }}\n />\n\n <BaseControl style={{ width: \"100%\" }}>\n <BaseControl.VisualLabel>\n <p> {__(\"Link\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n <UrlSelect\n onFocus={() => {\n updateCurrentTime(sanitizeTime(draftStartTime));\n }}\n setSettings={(link) => update({ link })}\n settings={link || {}}\n />\n </BaseControl>\n\n <BaseControl className={className}>\n <RadioControl\n label={__(\"Position\", \"presto-player\")}\n options={[\n { label: \"Top Right\", value: \"top-right\" },\n { label: \"Top Left\", value: \"top-left\" },\n ]}\n selected={draftPosition || \"right\"}\n onFocus={() => {\n updateCurrentTime(sanitizeTime(draftStartTime));\n }}\n onChange={(position) => {\n update({ position });\n setDraftPosition(position);\n updateCurrentTime(sanitizeTime(draftStartTime));\n }}\n />\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--overlay-text-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Text Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n onFocus={() => {\n updateCurrentTime(sanitizeTime(draftStartTime));\n }}\n color={color}\n setColor={(value) => {\n update({\n color: value && value.hex,\n });\n }}\n />\n </Flex>\n </BaseControl>\n\n <BaseControl className=\"presto-player__control--overlay-background-color\">\n <Flex>\n <BaseControl.VisualLabel>\n {__(\"Background Color\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <ColorPopup\n onFocus={() => {\n updateCurrentTime(sanitizeTime(draftStartTime));\n }}\n color={backgroundColor}\n setColor={(value) => {\n update({\n backgroundColor: value && value.hex,\n });\n }}\n />\n </Flex>\n </BaseControl>\n\n <BaseControl>\n <RangeControl\n label={__(\"Opacity\", \"presto-player\")}\n help={__(\"Opacity percentage of the overlay.\", \"presto-player\")}\n value={opacity}\n onChange={(opacity) => update({ opacity })}\n min={0}\n max={100}\n />\n </BaseControl>\n\n {remove && (\n <BaseControl className={className}>\n <Flex justify=\"flex-end\">\n <Button isDestructive isSmall onClick={remove}>\n {__(\"Remove Overlay\", \"presto-player\")}\n </Button>\n </Flex>\n </BaseControl>\n )}\n\n <hr css={{ marginBottom: \"20px\" }} />\n </div>\n );\n};\n\nexport default Overlay;\n","var map = {\n\t\"./audio/index.js\": 67,\n\t\"./bunny/index.js\": 66,\n\t\"./hosted/index.js\": 70,\n\t\"./reusable-display/index.js\": 71,\n\t\"./reusable-edit/index.js\": 64,\n\t\"./vimeo/index.js\": 72,\n\t\"./youtube/index.js\": 73\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 58;","// In your application's entrypoint\nconst { __ } = wp.i18n;\nconst { InnerBlocks, useBlockProps } = wp.blockEditor;\nconst { useSelect, dispatch } = wp.data;\nconst { Button, Placeholder } = wp.components;\nconst { getPlugins, unregisterPlugin } = wp.plugins;\nconst { useEffect } = wp.element;\n\n/**\n * Block Name\n */\nexport const name = \"presto-player/reusable-edit\";\n\n/**\n * Block Options\n */\nexport const options = {\n title: \"Reusable Block Container\",\n\n category: \"presto\",\n\n supports: {\n inserter: false,\n reusable: false,\n html: false,\n },\n\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"></line>\n <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"></path>\n </svg>\n ),\n\n edit: (props) => {\n const blockProps = useBlockProps();\n const { clientId, isSelected } = props;\n const innerBlocks = useSelect(\n (select) => select(\"core/block-editor\").getBlock(clientId).innerBlocks\n );\n\n useEffect(() => {\n if (isSelected) {\n wp.data\n .dispatch(\"core/edit-post\")\n .openGeneralSidebar(\"edit-post/block\");\n }\n }, [isSelected]);\n\n // make sure we don't check template validity because is's buggy as fuck\n dispatch(\"core/block-editor\").setTemplateValidity(true);\n\n // don't add reusable videos to a reusable video\n useEffect(() => {\n unregisterPlugin(\"presto-player\");\n }, []);\n\n const insertBlockType = (type) => {\n const block = wp.blocks.createBlock(`presto-player/${type}`);\n return dispatch(\"core/block-editor\").insertBlock(block, 0, clientId);\n };\n\n const appenderToUse = () => {\n if (innerBlocks.length === 0) {\n return <InnerBlocks.ButtonBlockAppender />;\n } else {\n return false;\n }\n };\n\n if (!innerBlocks?.length) {\n return (\n <div>\n <div {...blockProps}>\n <Placeholder\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <polygon points=\"23 7 16 12 23 17 23 7\"></polygon>\n <rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\"></rect>\n </svg>\n }\n instructions={__(\n \"Choose a video type to get started.\",\n \"presto-player\"\n )}\n label={__(\"Choose a Video Type\", \"presto-player\")}\n >\n <Button\n isPrimary\n onClick={() => {\n insertBlockType(\"self-hosted\");\n }}\n >\n {__(\"Video\", \"presto-player\")}\n </Button>\n <Button\n isPrimary\n onClick={() => {\n insertBlockType(\"youtube\");\n }}\n >\n {__(\"Youtube\", \"presto-player\")}\n </Button>\n <Button\n isPrimary\n onClick={() => {\n insertBlockType(\"vimeo\");\n }}\n >\n {__(\"Vimeo\", \"presto-player\")}\n </Button>\n {prestoPlayer?.isPremium ? (\n <Button\n isPrimary\n onClick={() => {\n insertBlockType(\"bunny\");\n }}\n >\n {__(\"Bunny.net\", \"presto-player\")}\n </Button>\n ) : (\n \"\"\n )}\n <Button\n isPrimary\n onClick={() => {\n insertBlockType(\"audio\");\n }}\n >\n {__(\"Audio\", \"presto-player\")}\n </Button>\n </Placeholder>\n <InnerBlocks templateLock={false} renderAppender={() => false} />\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <div {...blockProps}>\n <InnerBlocks\n templateLock={false}\n renderAppender={() => appenderToUse()}\n />\n </div>\n </div>\n );\n },\n\n save: () => {\n const blockProps = useBlockProps.save();\n\n return (\n <div {...blockProps}>\n <InnerBlocks.Content />\n </div>\n );\n },\n};\n","var map = {\n\t\"./reusable-videos/index.js\": 69\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 65;","// sign a private url\nexport const signURL = async (src) => {\n if (!src) {\n return;\n }\n\n const preview = await wp.apiFetch({\n path: \"presto-player/v1/bunny/sign\",\n method: \"POST\",\n data: {\n url: src,\n id: 0, // backwards compat\n },\n });\n\n return preview;\n};\n","/**\n * Upload files in chunks\n * Based on: https://github.com/deliciousbrains/wp-dbi-file-uploader\n */\nexport default function ({ file, path, onProgress, onComplete, onError }) {\n let reader = {};\n let chunk = 0;\n let cancelled = false;\n\n // get max upload size, max out at 16mb chunks\n const max_request_size = Math.min(\n prestoPlayerAdmin.wp_max_upload_size - 1000000,\n 15900000\n );\n let slice_size = Math.max(max_request_size, 1900000); // ~2MB fallback as minimum\n slice_size = Math.min(slice_size, 104857600); // make the max size 100MB\n\n // export percent done\n let percent_done;\n\n // chunk upload\n const chunkUpload = function () {\n chunk = 0;\n\n reader = new FileReader();\n upload_file(0);\n return this;\n };\n\n // upload file\n const upload_file = async (start) => {\n const next_slice = start + slice_size + 1;\n const blob = file.slice(start, next_slice);\n const chunks = Math.ceil(file.size / (slice_size + 1));\n chunk++;\n onProgress((chunk / chunks) * 100);\n\n const body = new FormData();\n body.append(\"file\", blob);\n body.append(\"name\", file.name);\n body.append(\"chunk\", chunk);\n body.append(\"chunks\", chunks);\n\n try {\n const file_url = await wp.apiFetch({\n path,\n method: \"POST\",\n body,\n });\n\n if (cancelled) {\n console.log(\"cancelled\");\n return;\n }\n\n if (next_slice < file.size) {\n onProgress(percent_done);\n upload_file(next_slice);\n } else {\n onComplete(file_url);\n }\n } catch (e) {\n onError(e);\n console.error(e);\n }\n };\n\n chunkUpload();\n\n return {\n cancel: () => {\n cancelled = true;\n },\n };\n}\n","export default ({ item, onClick, className }) => {\n function bytesToSize(bytes) {\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes == 0) return \"0 Byte\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return Math.round(bytes / Math.pow(1024, i), 2) + \" \" + sizes[i];\n }\n\n function formatDate(date) {\n return new Date(date).toLocaleString();\n }\n\n const isEncoding = () => {\n return !!item?.encodeProgress && item.encodeProgress !== 100;\n };\n\n return (\n <div\n className={`presto-player__media-list-item ${className}`}\n onClick={onClick}\n >\n <div className=\"presto-player__media-list-item-icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinecap=\"round\"\n >\n <polygon points=\"23 7 16 12 23 17 23 7\"></polygon>\n <rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\"></rect>\n </svg>\n </div>\n <div className=\"presto-player__media-list-item-title\">{item?.title}</div>\n {isEncoding() && (\n <div className=\"presto-player__media-list-item-size\">Encoding...</div>\n )}\n {!isEncoding() && (\n <div className=\"presto-player__media-list-item-size\">\n {bytesToSize(item?.size)}\n </div>\n )}\n {!isEncoding() && (\n <div className=\"presto-player__media-list-item-modified\">\n {formatDate(item.updated_at)}\n </div>\n )}\n </div>\n );\n};\n","export default ({ item, onClick, className }) => {\n function bytesToSize(bytes) {\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes == 0) return \"0 Byte\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return Math.round(bytes / Math.pow(1024, i), 2) + \" \" + sizes[i];\n }\n\n function formatDate(date) {\n return new Date(date).toLocaleString();\n }\n\n return (\n <div\n className={`presto-player__media-list-item ${className}`}\n onClick={onClick}\n >\n <div className=\"presto-player__media-list-item-icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinecap=\"round\"\n >\n <polygon points=\"23 7 16 12 23 17 23 7\"></polygon>\n <rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\"></rect>\n </svg>\n </div>\n <div className=\"presto-player__media-list-item-title\">{item?.title}</div>\n <div className=\"presto-player__media-list-item-size\">\n {bytesToSize(item?.size)}\n </div>\n <div className=\"presto-player__media-list-item-modified\">\n {formatDate(item.updated_at)}\n </div>\n </div>\n );\n};\n","/** @jsx jsx */\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n Modal,\n Spinner,\n Button,\n BaseControl,\n Flex,\n FlexBlock,\n Notice,\n Card,\n CardBody,\n Disabled,\n DropZone,\n FormFileUpload,\n DropZoneProvider,\n} = wp.components;\nconst { useEffect, useState, useRef } = wp.element;\nimport MediaItem from \"./MediaItem\";\nimport MediaFolder from \"./MediaFolder\";\n\nimport { css, jsx } from \"@emotion/core\";\n\nexport default ({\n onClose,\n title,\n header,\n onLoad,\n items,\n folders,\n fetching,\n progressMessage,\n onSelect,\n error,\n onDelete,\n onUpload,\n progress,\n}) => {\n const [selected, setSelected] = useState({});\n const [deleteConfirm, setDeleteConfirm] = useState(false);\n const buttonRef = useRef();\n\n useEffect(() => {\n onLoad && onLoad();\n }, []);\n\n const bytesToSize = (bytes) => {\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes == 0) return \"0 Byte\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return Math.round(bytes / Math.pow(1024, i), 2) + \" \" + sizes[i];\n };\n\n const toDate = (d) => {\n d = new Date(d);\n var hours = d.getHours();\n var minutes = d.getMinutes();\n var ampm = hours >= 12 ? \"pm\" : \"am\";\n hours = hours % 12;\n hours = hours ? hours : 12;\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n\n return (\n d.getDate() +\n \"-\" +\n (d.getMonth() + 1) +\n \"-\" +\n d.getFullYear() +\n \" at \" +\n hours +\n \":\" +\n minutes +\n ampm\n );\n };\n\n const deleteSelected = () => {\n onDelete(selected);\n setDeleteConfirm(false);\n };\n\n const isSelected = () => {\n return Object.keys(selected || {}).length;\n };\n\n const sidebarContent = () => {\n if (!isSelected()) {\n return <></>;\n }\n return (\n <div className=\"presto-player__media-modal-sidebar-content\">\n <BaseControl>\n <Disabled key={selected.id}>\n {selected?.thumbnail ? (\n <img src={selected?.thumbnail} style={{ maxWidth: \"100%\" }} />\n ) : (\n <video preload=\"metadata\">\n <source src={selected.previewUrl} />\n </video>\n )}\n </Disabled>\n </BaseControl>\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Name\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 style={{ marginTop: \"5px\" }}>{selected.title}</h3>\n </BaseControl>\n\n {!!selected?.visibility && (\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Visibility\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 style={{ marginTop: \"5px\" }}>{selected.visibility}</h3>\n </BaseControl>\n )}\n\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Size\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 style={{ marginTop: \"5px\" }}>\n {bytesToSize(selected?.size || 0)}\n </h3>\n </BaseControl>\n\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Created\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 style={{ marginTop: \"5px\" }}>{toDate(selected?.created_at)}</h3>\n </BaseControl>\n\n <BaseControl>\n {deleteConfirm ? (\n <Card>\n <CardBody>\n <p>\n <strong>Are you sure?</strong>\n </p>\n <p>Are you sure you want to delete this video?</p>\n <Button isDestructive onClick={deleteSelected}>\n Yes\n </Button>\n <Button onClick={() => setDeleteConfirm(false)}>Cancel</Button>\n </CardBody>\n </Card>\n ) : (\n <Button\n isDestructive\n onClick={() => {\n setDeleteConfirm(!deleteConfirm);\n }}\n >\n {__(\"Delete video\", \"presto-player\")}\n </Button>\n )}\n </BaseControl>\n </div>\n );\n };\n\n const selectVideo = () => {\n if (selected) {\n onSelect(selected);\n onClose();\n }\n };\n\n const itemsContent = () => {\n if (fetching) {\n return (\n <Flex className=\"presto-player__media-loading\">\n <FlexBlock style={{ textAlign: \"center\" }}>\n {progress ? (\n <>\n <div>\n <strong>\n {progressMessage || __(\"Uploading\", \"presto-player\")}\n </strong>\n </div>\n <div>\n {__(\n \"Please don't navigate away from this page.\",\n \"presto-player\"\n )}\n </div>\n <progress\n className=\"presto-progress\"\n max=\"100\"\n value={progress}\n style={{ width: \"100px\" }}\n ></progress>\n </>\n ) : (\n <Spinner />\n )}\n </FlexBlock>\n </Flex>\n );\n }\n\n if (!items?.length) {\n return (\n <Flex align-items=\"center\" className=\"presto-player__media-not-found\">\n <div>\n <h2>Drop video files here to upload</h2>\n <p>or browse for a video</p>\n <FormFileUpload\n isSecondary\n accept=\"video/mp4,video/x-m4v,video/*\"\n onChange={(e) => {\n if (!e.target.files) {\n return;\n }\n onUpload(e.target.files);\n jQuery(e.target).val(null);\n }}\n >\n {__(\"Upload New Video\", \"presto-player\")}\n </FormFileUpload>\n </div>\n </Flex>\n );\n }\n\n return (\n <div className=\"presto-player__media-list\">\n <h2>{title}</h2>\n\n {folders && (\n <div className=\"presto-player__media-list-folders\">\n {folders.map((folder) => {\n return <MediaFolder key={folder.id} item={folder} />;\n })}\n </div>\n )}\n\n <div className=\"presto-player__media-list-items\">\n {items.map((item) => {\n return (\n <MediaItem\n item={item}\n key={item.id}\n onClick={() => {\n if (selected === item) {\n setSelected({});\n } else {\n setSelected(item);\n }\n }}\n className={selected === item ? \"is-selected\" : \"\"}\n />\n );\n })}\n </div>\n </div>\n );\n };\n\n return (\n <Modal\n title={header ? header : __(\"Add Media\", \"presto-player\")}\n onRequestClose={onClose}\n className=\"presto-player__media-modal presto-player__full-modal\"\n overlayClassName=\"presto-player__modal-overlay\"\n >\n <div className=\"presto-player__media-modal-layout\" data-cy=\"media-modal\">\n <div className=\"presto-player__media-modal-header\">\n <div\n className=\"presto-player__media-modal-upload\"\n css={css`\n display: flex;\n align-items: center;\n `}\n >\n <FormFileUpload\n isPrimary\n accept=\"video/mp4,video/x-m4v,video/*\"\n onChange={(e) => {\n if (!e.target.files) {\n return;\n }\n onUpload(e.target.files);\n jQuery(e.target).val(null);\n }}\n >\n {__(\"Upload New Video\", \"presto-player\")}\n </FormFileUpload>\n <div\n css={css`\n margin-left: 10px;\n `}\n >\n {__(\"Or drag a file here to upload.\", \"presto-player\")}\n </div>\n </div>\n {error && (\n <Notice status=\"error\" isDismissible={false}>\n {error}\n </Notice>\n )}\n </div>\n <div className=\"presto-player__media-modal-content\">\n <DropZoneProvider>\n {itemsContent()}\n <DropZone label={\"Drop files\"} onFilesDrop={onUpload} />\n </DropZoneProvider>\n </div>\n <div className=\"presto-player__media-modal-sidebar\">\n {sidebarContent()}\n </div>\n <div className=\"presto-player__media-modal-footer\">\n <Button\n isPrimary\n disabled={!isSelected()}\n onClick={selectVideo}\n ref={buttonRef}\n >\n {__(\"Choose\", \"presto-player\")}\n </Button>\n </div>\n </div>\n </Modal>\n );\n};\n","const { __ } = wp.i18n;\nimport chunkUpload from \"@/admin/blocks/shared/media/chunk-upload\";\nimport MediaPopup from \"@/admin/blocks/shared/media/MediaPopup\";\nconst { useState, useEffect } = wp.element;\n\nexport default ({ closePopup, noticeOperations, onSelect, isPrivate }) => {\n const [videos, setVideos] = useState([]);\n const [fetching, setFetching] = useState(false);\n const [progress, setProgress] = useState(0);\n const [progressMessage, setProgressMessage] = useState(\"\");\n const [error, setError] = useState(\"\");\n\n const endpoint = isPrivate ? \"private-videos\" : \"public-videos\";\n\n // reset progress and error on open\n useEffect(() => {\n setProgress(0);\n setError(\"\");\n }, []);\n\n // handle error\n const onError = (message) => {\n noticeOperations.removeAllNotices();\n noticeOperations.createErrorNotice(message);\n };\n\n const uploadFile = async (files) => {\n setError(\"\");\n setFetching(true);\n setProgressMessage(__(\"Uploading\", \"presto-player\"));\n chunkUpload({\n file: files[0],\n path: `presto-player/v1/bunny/upload`,\n onProgress: (percent) => {\n setProgress(percent - 10); // leave 10% for storing\n },\n onComplete: storeFile,\n onError: (e) => {\n setError(e.message);\n setProgress(0);\n setFetching(false);\n },\n });\n };\n\n const storeFile = async ({ path, name }) => {\n setProgressMessage(__(\"Storing\", \"presto-player\"));\n try {\n const videos = await wp.apiFetch({\n path: `presto-player/v1/bunny/${endpoint}`,\n method: \"POST\",\n data: {\n path,\n name,\n },\n });\n setVideos(videos);\n } catch (e) {\n setError(e.message);\n console.error(e);\n } finally {\n setProgress(0);\n setFetching(false);\n }\n };\n\n const deleteVideo = async (video) => {\n try {\n setVideos((videos || []).filter((item) => item !== video));\n await wp.apiFetch({\n path: `presto-player/v1/bunny/${endpoint}`,\n method: \"DELETE\",\n data: {\n name: video?.title,\n },\n });\n } catch (e) {\n setError(e.message);\n }\n };\n\n // loads videos for media popup\n const loadVideos = async () => {\n try {\n setFetching(true);\n const videos = await wp.apiFetch({\n path: `presto-player/v1/bunny/${endpoint}`,\n });\n setVideos(videos);\n } catch (e) {\n setError(e.message);\n } finally {\n setFetching(false);\n }\n };\n\n return (\n <MediaPopup\n onClose={closePopup}\n progressMessage={progressMessage}\n fetching={fetching}\n error={error}\n onUpload={uploadFile}\n onLoad={loadVideos}\n items={videos}\n progress={progress}\n onDelete={deleteVideo}\n onSelect={onSelect}\n onError={onError}\n header={\n isPrivate\n ? __(\"Bunny.net Private Video Storage\", \"presto-player\")\n : __(\"Bunny.net Public Video Storage\", \"presto-player\")\n }\n title={\n isPrivate\n ? __(\"Private Video Library\", \"presto-player\")\n : __(\"Public Video Library\", \"presto-player\")\n }\n />\n );\n};\n","const { combineReducers } = wp.data;\n\n/**\n * Videos\n *\n * @param {array} state\n * @param {object} action\n */\nconst videosReducer = (state = [], action) => {\n switch (action.type) {\n case \"SET_VIDEOS\":\n return action.value;\n case \"ADD_VIDEOS\":\n return [...state, ...action.value];\n case \"ADD_VIDEO\":\n return [...state, ...[action.value]];\n case \"UPDATE_VIDEO\":\n return state.map((item, index) => {\n if (item.id !== action.value?.id) {\n return item;\n }\n return {\n ...item,\n ...action.value,\n };\n });\n case \"REMOVE_VIDEO\":\n return state.filter((item) => item.guid !== action.value.guid);\n }\n return state;\n};\n\n/**\n * Videos\n *\n * @param {array} state\n * @param {object} action\n */\nconst uploadsReducer = (state = [], action) => {\n switch (action.type) {\n case \"SET_UPLOADS\":\n return action.value;\n case \"ADD_UPLOADS\":\n return [...state, ...action.value];\n case \"ADD_UPLOAD\":\n return [...state, ...[action.value]];\n case \"UPDATE_UPLOAD\":\n return state.map((item, index) => {\n if (item.id !== action.value?.id) {\n return item;\n }\n return {\n ...item,\n ...action.value,\n };\n });\n case \"REMOVE_UPLOAD\":\n return state.filter((item) => item !== action.value);\n }\n return state;\n};\n\n/**\n * Videos\n *\n * @param {array} state\n * @param {object} action\n */\nconst collectionsReducer = (state = [], action) => {\n switch (action.type) {\n case \"SET_COLLECTIONS\":\n return action.value;\n case \"ADD_COLLECTION\":\n return [...state, ...[action.value]];\n case \"UPDATE_COLLECTION\":\n return state.map((item, index) => {\n if (item.id !== action.value?.id) {\n return item;\n }\n return {\n ...item,\n ...action.value,\n };\n });\n case \"REMOVE_COLLECTION\":\n return state.filter((item) => item !== action.value);\n }\n return state;\n};\n\n/**\n * Request\n * @param {} state\n * @param {*} action\n * @returns\n */\nconst requestReducer = (\n state = {\n private: false,\n collection: \"\",\n search: \"\",\n },\n action\n) => {\n switch (action.type) {\n case \"SET_PRIVATE_REQUEST\":\n return {\n ...state,\n private: action.value,\n };\n case \"SET_SEARCH_REQUEST\":\n return {\n ...state,\n search: action.value,\n };\n case \"SET_COLLECTION_REQUEST\":\n return {\n ...state,\n collection: action.value,\n };\n }\n\n return state;\n};\n\n/**\n * Request\n * @param {} state\n * @param {*} action\n * @returns\n */\nconst UIReducer = (\n state = {\n loading: false,\n videosFetched: false,\n createCollection: false,\n selectedId: null,\n },\n action\n) => {\n switch (action.type) {\n case \"SET_LOADING\":\n return {\n ...state,\n loading: action.value,\n };\n case \"SET_VIDEOS_FETCHED\":\n return {\n ...state,\n videosFetched: action.value,\n };\n case \"SET_UI_ITEM\":\n return {\n ...state,\n [action.item]: action.value,\n };\n }\n\n return state;\n};\n\nconst errorReducer = (state = [], action) => {\n switch (action.type) {\n case \"ADD_ERROR\":\n return [...state, ...[action.value]];\n case \"REMOVE_ERROR\":\n return state.filter((element) => element !== action.value);\n }\n return state;\n};\n\nexport default combineReducers({\n videosReducer,\n collectionsReducer,\n uploadsReducer,\n requestReducer,\n UIReducer,\n errorReducer,\n});\n","export function videos(state) {\n return state?.videosReducer || [];\n}\nexport function collections(state) {\n return state?.collectionsReducer || [];\n}\nexport function uploads(state) {\n return state?.uploadsReducer || [];\n}\nexport function isPrivate(state) {\n return !!state?.requestReducer?.private;\n}\nexport function isLoading(state) {\n return state?.UIReducer?.loading || false;\n}\nexport function errors(state) {\n return state?.errorReducer || [];\n}\nexport function videosFetched(state) {\n return state?.UIReducer?.videosFetched || false;\n}\nexport function currentCollection(state) {\n return state?.requestReducer?.collection;\n}\nexport function ui(state, arg) {\n return state?.UIReducer?.[arg];\n}\nexport function requestType(state) {\n return state?.requestReducer?.private ? \"private\" : \"public\";\n}\n","export function setVideos(value) {\n return {\n type: \"SET_VIDEOS\",\n value,\n };\n}\nexport function addVideos(value) {\n return {\n type: \"ADD_VIDEOS\",\n value,\n };\n}\n\nexport function removeVideo(value) {\n return {\n type: \"REMOVE_VIDEO\",\n value,\n };\n}\n\nexport function setCollections(value) {\n return {\n type: \"SET_COLLECTIONS\",\n value,\n };\n}\n\nexport function addCollection(value) {\n return {\n type: \"ADD_COLLECTION\",\n value,\n };\n}\n\nexport function setIsPrivate(value) {\n return {\n type: \"SET_PRIVATE_REQUEST\",\n value,\n };\n}\n\nexport function setSearch(value) {\n return {\n type: \"SET_SEARCH\",\n value,\n };\n}\n\nexport function setCollectionRequest(value) {\n return {\n type: \"SET_COLLECTION_REQUEST\",\n value,\n };\n}\n\nexport function setUploads(value) {\n return {\n type: \"SET_UPLOADS\",\n value,\n };\n}\n\nexport function addUploads(value) {\n return {\n type: \"ADD_UPLOADS\",\n value,\n };\n}\n\nexport function removeUpload(value) {\n return {\n type: \"REMOVE_UPLOAD\",\n value,\n };\n}\n\nexport function setVideosFetched(value) {\n return {\n type: \"SET_VIDEOS_FETCHED\",\n value,\n };\n}\n\nexport function setLoading(value) {\n return {\n type: \"SET_LOADING\",\n value,\n };\n}\n\nexport function setUI(item, value) {\n return {\n type: \"SET_UI_ITEM\",\n item,\n value,\n };\n}\n\nexport function addError(value) {\n return {\n type: \"ADD_ERROR\",\n value,\n };\n}\nexport function removeError(value) {\n return {\n type: \"REMOVE_ERROR\",\n value,\n };\n}\n","/**\n * WordPress dependencies\n */\nconst { registerStore } = wp.data;\n\n/**\n * Internal dependencies\n */\nimport reducer from \"./reducer\";\nimport * as selectors from \"./selectors\";\nimport * as actions from \"./actions\";\n\nexport default registerStore(\"presto-player/bunny-popup\", {\n reducer,\n selectors,\n actions,\n});\n","/**\n * Is the video playable\n */\nexport const isPlayable = (video) =>\n video?.status == 3 && video?.availableResolutions.length;\n\n/**\n * It's selectable if it's playable or live;\n */\nexport const isSelectable = (video) => isPlayable(video) || video?.status === 4;\n\n/**\n * Get the status text\n * @returns string\n */\nexport const getStatusText = (video) => {\n if (video?.status == 0) return \"Processing\";\n if (video?.status == 1) return \"Uploaded\";\n if (video?.status == 2) return \"Processing\";\n if (isPlayable(video)) return \"Playable\";\n if (video?.status == 3) return \"Encoding\";\n if (video?.status == 4) return \"Live\";\n if (video?.status == 5) return \"Error\";\n if (video?.status == 6) return \"Upload Failed\";\n};\n\nexport const getLengthToTime = (length) => {\n if (length == undefined || length == null) return \"\";\n return new Date(length * 1000).toISOString().substr(11, 8);\n};\n\nexport const bytesToSize = (bytes) => {\n if (bytes == undefined || bytes == 0) return \"Unknown\";\n var sizes = [\"b\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes == 0) return \"0 b\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)).toString());\n return (bytes / Math.pow(1024, i)).toFixed(2) + \" \" + sizes[i];\n};\n\nexport const stampToDate = (d) => {\n d = new Date(d);\n var hours = d.getHours();\n var minutes = d.getMinutes();\n var ampm = hours >= 12 ? \"pm\" : \"am\";\n hours = hours % 12;\n hours = hours ? hours : 12;\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n\n return (\n d.getDate() +\n \"-\" +\n (d.getMonth() + 1) +\n \"-\" +\n d.getFullYear() +\n \" at \" +\n hours +\n \":\" +\n minutes +\n ampm\n );\n};\n","/** @jsx jsx */\n\nconst { __ } = wp.i18n;\nconst { Button, BaseControl, Disabled, Card, CardBody } = wp.components;\nconst { useState, useContext, useEffect } = wp.element;\nconst { dispatch, useSelect } = wp.data;\n\nimport {\n isSelectable,\n getStatusText,\n getLengthToTime,\n stampToDate,\n bytesToSize,\n} from \"./utils\";\n\nimport { jsx, css } from \"@emotion/core\";\n\nexport default () => {\n const [deleteConfirm, setDeleteConfirm] = useState(false);\n const [deleting, setDeleting] = useState(false);\n const [video, setVideo] = useState(null);\n\n const isPrivate = useSelect((select) =>\n select(\"presto-player/bunny-popup\").isPrivate()\n );\n const selectedId = useSelect((select) =>\n select(\"presto-player/bunny-popup\").ui(\"selectedId\")\n );\n const videos = useSelect((select) =>\n select(\"presto-player/bunny-popup\").videos()\n );\n\n useEffect(() => {\n setVideo(\n selectedId ? videos.find((video) => video.guid === selectedId) : null\n );\n }, [videos, selectedId]);\n\n const onDelete = async () => {\n await wp.apiFetch({\n path: `presto-player/v1/bunny/stream/videos/${video.id}`,\n method: \"DELETE\",\n data: {\n type: isPrivate ? \"private\" : \"public\",\n },\n });\n dispatch(\"presto-player/bunny-popup\").removeVideo(video);\n dispatch(\"presto-player/bunny-popup\").setUI(\"selectedId\", null);\n setDeleting(false);\n setDeleteConfirm(false);\n };\n\n const controlCSS = css`\n margin-top: 5px;\n `;\n\n if (!video) {\n return \"\";\n }\n\n const getThumbnail = (video) => {\n return isPrivate ? video?.webPURLSigned : video?.webPURL;\n };\n\n return (\n video && (\n <div className=\"presto-player__media-modal-sidebar-content\">\n <BaseControl\n css={css`\n position: relative;\n `}\n >\n <Disabled key={video.id}>\n {isSelectable(video) && getThumbnail(video) && (\n <img src={getThumbnail(video)} css={{ maxWidth: \"100%\" }} />\n )}\n </Disabled>\n <Button\n isSmall\n isPrimary\n isBusy={!isSelectable(video)}\n css={css`\n ${isSelectable(video) ? \"position: absolute;\" : \"\"}\n top: 8px;\n right: 8px;\n font-size: 11px;\n color: #ffffff;\n padding: 2px 10px;\n border-radius: 9999px;\n `}\n >\n {getStatusText(video)}\n </Button>\n </BaseControl>\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Name\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 css={controlCSS}>{video.title}</h3>\n </BaseControl>\n\n {!!video?.visibility && (\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Visibility\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 css={controlCSS}>{video.visibility}</h3>\n </BaseControl>\n )}\n\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Size\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 css={controlCSS}>{bytesToSize(video?.size || 0)}</h3>\n </BaseControl>\n\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Length\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 css={controlCSS}>{getLengthToTime(video?.length)}</h3>\n </BaseControl>\n\n <BaseControl>\n <BaseControl.VisualLabel>\n {__(\"Created\", \"presto-player\")}\n </BaseControl.VisualLabel>\n <h3 css={controlCSS}>{stampToDate(video?.created_at)}</h3>\n </BaseControl>\n\n <BaseControl>\n {deleteConfirm ? (\n <Card>\n <CardBody>\n <p>\n <strong>{__(\"Are you sure?\", \"presto-player\")}</strong>\n </p>\n <p>\n {__(\n \"Are you sure you want to delete this video?\",\n \"presto-player\"\n )}\n </p>\n <Button\n isDestructive\n disabled={deleting}\n isBusy={deleting}\n onClick={(e) => {\n e.preventDefault();\n onDelete();\n setDeleting(true);\n }}\n >\n {__(\"Yes\", \"presto-player\")}\n </Button>\n <Button onClick={() => setDeleteConfirm(false)}>\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n </CardBody>\n </Card>\n ) : (\n <Button\n isDestructive\n onClick={() => {\n setDeleteConfirm(!deleteConfirm);\n }}\n >\n {__(\"Delete video\", \"presto-player\")}\n </Button>\n )}\n </BaseControl>\n </div>\n )\n );\n};\n","/** @jsx jsx */\nimport { css, jsx } from \"@emotion/core\";\n\nexport default ({ className, progress }) => {\n return (\n <div className={className}>\n <div\n css={css`\n height: 100%;\n background-color: var(--wp-admin-theme-color, #007cba);\n `}\n style={{ width: `${progress}%` }}\n ></div>\n </div>\n );\n};\n","/** @jsx jsx */\nimport { css, jsx } from \"@emotion/core\";\nimport ProgressBar from \"./ProgressBar\";\n\nexport default ({ progress }) => {\n return (\n <div\n css={css`\n max-width: 100%;\n object-fit: cover;\n width: 100%;\n height: 140px;\n background-color: #222;\n color: white;\n text-decoration: none;\n text-align: center;\n box-sizing: border-box;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n `}\n >\n <ProgressBar\n progress={progress}\n css={css`\n width: 100%;\n border-radius: 0px;\n margin: 0 15px;\n background-color: #e3e3e3;\n height: 3px;\n `}\n />\n </div>\n );\n};\n","/** @jsx jsx */\nimport { css, jsx } from \"@emotion/core\";\n\nexport default (props) => {\n const { thumbnail, title, footer, badge, before, after } = props;\n return (\n <div\n className=\"presto-player__video-thumb\"\n css={css`\n cursor: pointer;\n user-select: none;\n display: inline-block;\n position: relative;\n margin-right: 20px;\n font-weight: bold;\n margin-bottom: 20px;\n width: 220px;\n flex: 0 0 220px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n overflow: hidden;\n `}\n {...props}\n >\n {!!before && before}\n\n {!!thumbnail && thumbnail}\n\n <div\n css={css`\n margin: 14px;\n `}\n >\n {!!badge && (\n <div\n css={css`\n position: absolute;\n top: 8px;\n right: 8px;\n `}\n >\n {badge}\n </div>\n )}\n\n {!!title && (\n <span\n css={css`\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n width: 100%;\n max-width: 100%;\n display: inline-block;\n margin-bottom: 7px;\n font-size: 13px;\n `}\n >\n {title}\n </span>\n )}\n\n {!!footer && (\n <div\n css={css`\n font-size: 12px;\n opacity: 0.75;\n margin-bottom: 7px;\n `}\n >\n {footer}\n </div>\n )}\n </div>\n\n {!!after && after}\n </div>\n );\n};\n","/** @jsx jsx */\nimport { css, jsx } from \"@emotion/core\";\nconst { Icon, Button } = wp.components;\nconst { useEffect, useState } = wp.element;\nconst { useSelect, dispatch } = wp.data;\nimport ProgressOverlay from \"../ProgressOverlay\";\nimport ProgressBar from \"../ProgressBar\";\nimport Thumbnail from \"../ThumbTemplate\";\n\nimport {\n isSelectable,\n getStatusText,\n getLengthToTime,\n bytesToSize,\n} from \"../utils\";\n\nexport default ({ video }) => {\n const [selected, setSelected] = useState();\n const isPrivate = useSelect((select) =>\n select(\"presto-player/bunny-popup\").isPrivate()\n );\n const selectedId = useSelect((select) =>\n select(\"presto-player/bunny-popup\").ui(\"selectedId\")\n );\n\n useEffect(() => {\n setSelected(selectedId ? selectedId === video.guid : null);\n }, [selectedId]);\n\n /**\n * Status badge\n * @returns JSX\n */\n const renderStatusBadge = () => (\n <Button\n isSmall\n isPrimary\n isBusy={!isSelectable(video)}\n css={css`\n font-size: 11px;\n color: #ffffff;\n padding: 2px 10px;\n border-radius: 9999px;\n `}\n >\n {getStatusText(video)}\n </Button>\n );\n\n /**\n * Render thumbnail\n * @returns\n */\n const renderThumbnail = () => {\n if (video.status < 3) {\n return <ProgressOverlay progress={video.encodeProgress} />;\n }\n\n const url = isPrivate ? video?.thumbnailURLSigned : video?.thumbnailURL;\n\n if (url) {\n return (\n <img\n css={css`\n max-width: 100%;\n object-fit: cover;\n width: 100%;\n height: 140px;\n display: block;\n `}\n src={url}\n />\n );\n }\n };\n\n const renderLength = () => (\n <div\n css={css`\n display: flex;\n align-items: center;\n `}\n >\n <span\n css={css`\n margin-right: 10px;\n display: flex;\n align-items: center;\n `}\n >\n <Icon\n css={css`\n width: 14px;\n height: 14px;\n font-size: 14px;\n margin-right: 5px;\n opacity: 0.5;\n `}\n icon=\"clock\"\n size={14}\n />\n <span>{getLengthToTime(video.length)}</span>\n </span>\n <span\n css={css`\n display: flex;\n align-items: center;\n `}\n >\n <Icon\n css={css`\n opacity: 0.5;\n width: 14px;\n height: 14px;\n font-size: 14px;\n margin-right: 5px;\n `}\n icon=\"database\"\n size={14}\n />\n <span>{bytesToSize(video.storageSize)}</span>\n </span>\n </div>\n );\n\n return (\n <Thumbnail\n onClick={() => {\n dispatch(\"presto-player/bunny-popup\").setUI(\"selectedId\", video?.guid);\n }}\n css={css`\n ${selected &&\n \"box-shadow: 0 0 0 0px #fff, 0 0 0 3px var(--wp-admin-theme-color, #007cba);\"}\n border: 1px solid\n ${selected ? \"var(--wp-admin-theme-color, #007cba)\" : \"#e0e0e0\"};\n `}\n thumbnail={renderThumbnail()}\n badge={renderStatusBadge()}\n title={video.title}\n footer={renderLength()}\n after={\n video.status === 3 ? (\n <ProgressBar\n css={css`\n width: 100%;\n border-radius: 0px;\n margin: 0;\n background-color: #e3e3e3;\n height: 3px;\n `}\n progress={video.encodeProgress}\n />\n ) : (\n \"\"\n )\n }\n />\n );\n};\n","/** @jsx jsx */\nconst { Flex, FlexBlock, Spinner } = wp.components;\n\nimport { jsx } from \"@emotion/core\";\n\nexport default ({ className }) => {\n return (\n <Flex className={className}>\n <FlexBlock css={{ textAlign: \"center\" }}>\n <Spinner />\n </FlexBlock>\n </Flex>\n );\n};\n","/** @jsx jsx */\nconst { __ } = wp.i18n;\nconst { useState, useEffect, Fragment } = wp.element;\nconst { Flex, FormFileUpload, Notice } = wp.components;\nconst { dispatch, useSelect } = wp.data;\nimport { css, jsx } from \"@emotion/core\";\nimport Video from \"./Video\";\n\nimport Loading from \"../Loading\";\n\nexport default () => {\n const [selected, setSelected] = useState(false);\n const [notice, setNotice] = useState(\"\");\n const fetched = useSelect((select) =>\n select(\"presto-player/bunny-popup\").videosFetched()\n );\n const videos = useSelect((select) =>\n select(\"presto-player/bunny-popup\").videos()\n );\n const type = useSelect((select) =>\n select(\"presto-player/bunny-popup\").requestType()\n );\n const collection = useSelect((select) =>\n select(\"presto-player/bunny-popup\").currentCollection()\n );\n\n // fetch videos\n useEffect(() => {\n if (!fetched) {\n fetch();\n }\n }, [fetched]);\n\n // sync every 5 seconds\n useEffect(() => {\n const interval = setInterval(() => {\n fetch({ sync: true });\n }, 3000);\n return () => clearInterval(interval);\n }, [fetched]);\n\n // fetch videos\n const fetch = async ({ sync } = { sync: false }) => {\n try {\n const videos = await wp.apiFetch({\n path: wp.url.addQueryArgs(`presto-player/v1/bunny/stream/videos`, {\n type,\n ...(collection?.guid ? { collection: collection?.guid } : {}),\n items_per_page: 500,\n }),\n });\n dispatch(\"presto-player/bunny-popup\").setVideos(videos?.items);\n setNotice(\"\");\n } catch (e) {\n if (e?.data?.status === 401) {\n setNotice(\n __(\n \"Please wait. Pullzone cache is clearing. This may take a minute or two...\"\n )\n );\n return;\n }\n\n if (!sync) {\n dispatch(\"presto-player/bunny-popup\").addError(e.message);\n }\n } finally {\n dispatch(\"presto-player/bunny-popup\").setVideosFetched(true);\n }\n };\n\n // default no video content\n const renderDefaultContent = () => {\n return (\n <Flex\n align=\"center\"\n justify=\"center\"\n css={css`\n height: 100%;\n text-align: center;\n `}\n >\n <div>\n <h2>{__(\"Drop video files here to upload\", \"presto-player\")}</h2>\n <p>{__(\"or browse for a video\", \"presto-player\")}</p>\n <FormFileUpload\n isSecondary\n accept=\"video/mp4,video/x-m4v,video/*\"\n onChange={(e) => {\n if (!e.target.files) {\n return;\n }\n dispatch(\"presto-player/bunny-popup\").addUploads(e.target.files);\n jQuery(e.target).val(null);\n }}\n >\n {__(\"Upload New Video\", \"presto-player\")}\n </FormFileUpload>\n </div>\n </Flex>\n );\n };\n\n if (notice) {\n return (\n <Notice status=\"warning\" isDismissible={false}>\n <div css={{ display: \"flex\", alignItems: \"center\" }}>\n <Loading css={{ flex: 1 }} />\n {notice}\n </div>\n </Notice>\n );\n }\n\n // still loading\n if (!fetched) {\n return <Loading css={{ flex: 1 }} />;\n }\n\n // render\n return (\n <Fragment>\n {videos && !!videos.length ? (\n <div>\n {!collection?.guid && <h2>{__(\"Videos\", \"presto-player\")}</h2>}\n {videos.map((video) => {\n if (video?.collectionId !== (collection?.guid || \"\")) {\n return;\n }\n return (\n <Video\n key={video.id}\n video={video}\n onClick={() => {\n setSelected(selected.guid === video.guid ? {} : video);\n }}\n selected={selected.guid === video.guid}\n />\n );\n })}\n </div>\n ) : (\n renderDefaultContent()\n )}\n </Fragment>\n );\n};\n","/** @jsx jsx */\n\nconst { Icon } = wp.components;\nconst { dispatch } = wp.data;\n\nimport Thumb from \"../ThumbTemplate\";\n\nimport { jsx, css } from \"@emotion/core\";\n\nexport default ({ collection }) => {\n // handle click\n const handleClick = (e) => {\n e.preventDefault();\n dispatch(\"presto-player/bunny-popup\").setCollectionRequest(collection);\n dispatch(\"presto-player/bunny-popup\").setVideosFetched(false);\n };\n\n return (\n <Thumb\n onClick={handleClick}\n title={\n <div>\n <Icon\n icon=\"open-folder\"\n css={css`\n color: var(--wp-admin-theme-color);\n margin-right: 10px;\n `}\n />\n {collection.name}\n </div>\n }\n footer={<div>{collection.videoCount} Videos</div>}\n />\n );\n};\n","/** @jsx jsx */\nimport { css, jsx } from \"@emotion/core\";\n\nconst { __ } = wp.i18n;\nconst { useEffect } = wp.element;\nconst { useSelect, dispatch } = wp.data;\n\nimport Collection from \"./Collection\";\n\nexport default () => {\n const collections = useSelect((select) =>\n select(\"presto-player/bunny-popup\").collections()\n );\n const type = useSelect((select) =>\n select(\"presto-player/bunny-popup\").requestType()\n );\n\n const fetchCollections = async () => {\n try {\n const response = await wp.apiFetch({\n path: wp.url.addQueryArgs(`presto-player/v1/bunny/stream/collections`, {\n type,\n }),\n });\n dispatch(\"presto-player/bunny-popup\").setCollections(response?.items);\n } catch (e) {\n if (e?.data?.status === 401) {\n return;\n }\n dispatch(\"presto-player/bunny-popup\").addError(e.message);\n }\n };\n\n useEffect(() => {\n fetchCollections();\n }, []);\n\n return (\n !!collections.length && (\n <div>\n <h2>{__(\"Collections\", \"presto-player\")}</h2>\n <div\n css={css`\n display: flex;\n align-items: stretch;\n overflow: auto;\n `}\n >\n {collections.map((collection) => (\n <Collection collection={collection} key={collection.guid} />\n ))}\n </div>\n </div>\n )\n );\n};\n","/** @jsx jsx */\nconst { __ } = wp.i18n;\nconst { Button, TextControl, Modal, BaseControl } = wp.components;\nconst { useState, Fragment } = wp.element;\nconst { dispatch, useSelect } = wp.data;\n\nimport { jsx, css } from \"@emotion/core\";\n\nexport default () => {\n const [name, setName] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const type = useSelect((select) =>\n select(\"presto-player/bunny-popup\").requestType()\n );\n const modal = useSelect((select) =>\n select(\"presto-player/bunny-popup\").ui(\"createCollection\")\n );\n const setModal = (value) => {\n dispatch(\"presto-player/bunny-popup\").setUI(\"createCollection\", value);\n };\n\n const onCreate = async () => {\n setBusy(true);\n try {\n let collection = await wp.apiFetch({\n path: \"presto-player/v1/bunny/stream/collections\",\n method: \"POST\",\n data: {\n type,\n name,\n },\n });\n dispatch(\"presto-player/bunny-popup\").addCollection(collection);\n dispatch(\"presto-player/bunny-popup\").setCollectionRequest(collection);\n dispatch(\"presto-player/bunny-popup\").setVideosFetched(false);\n setName(\"\");\n setModal(false);\n } catch (e) {\n console.error(e);\n } finally {\n setBusy(false);\n }\n };\n\n return (\n <Fragment>\n <Button isSecondary onClick={() => setModal(true)}>\n {__(\"Create Collection\", \"presto-player\")}\n </Button>\n {modal && (\n <Modal\n overlayClassName=\"presto-modal\"\n title={\"Create New Collection\"}\n shouldCloseOnClickOutside={false}\n isDismissible={false}\n >\n <TextControl\n css={css`\n margin-bottom: 15px;\n `}\n tabIndex=\"0\"\n placeholder={__(\"Enter a collection name\", \"presto-player\")}\n value={name}\n onChange={(name) => setName(name)}\n />\n\n <BaseControl>\n <Button\n isBusy={busy}\n disabled={busy}\n isPrimary\n onClick={() => {\n onCreate();\n }}\n >\n {__(\"Create\", \"presto-player\")}\n </Button>{\" \"}\n <Button onClick={() => setModal(false)}>\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n </BaseControl>\n </Modal>\n )}\n </Fragment>\n );\n};\n","/** @jsx jsx */\nconst { __ } = wp.i18n;\nconst { Flex, FlexBlock, FlexItem, Button, FormFileUpload } = wp.components;\nconst { dispatch } = wp.data;\nimport CreateCollection from \"./collections/CreateCollection\";\n\nimport { jsx } from \"@emotion/core\";\n\nexport default ({ afterUpload }) => {\n return (\n <Flex>\n <FlexBlock>\n <Flex justify=\"flex-start\">\n <FormFileUpload\n multiple\n isPrimary\n accept=\"video/mp4,video/x-m4v,video/*\"\n onChange={(e) => {\n if (!e.target.files) {\n return;\n }\n dispatch(\"presto-player/bunny-popup\").addUploads(e.target.files);\n jQuery(e.target).val(null);\n }}\n >\n {__(\"Upload Videos\", \"presto-player\")}\n </FormFileUpload>{\" \"}\n <CreateCollection />\n {!!afterUpload && afterUpload}\n </Flex>\n </FlexBlock>\n <FlexItem>\n {/* <Flex align={\"stretch\"}>\n <input\n class=\"components-text-control__input\"\n type=\"text\"\n placeholder={__(\"Search for a video...\", \"presto-player\")}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n }}\n />\n <Button\n isPrimary\n size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n onSearch && onSearch(search);\n }}\n >\n {__(\"Search\", \"presto-player\")}\n </Button>\n </Flex> */}\n </FlexItem>\n </Flex>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { Button } = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { useSelect } = wp.data;\n\nexport default ({ onChoose }) => {\n const [video, setVideo] = useState(null);\n const [canSelect, setCanSelect] = useState(false);\n\n const selectedId = useSelect((select) =>\n select(\"presto-player/bunny-popup\").ui(\"selectedId\")\n );\n const videos = useSelect((select) =>\n select(\"presto-player/bunny-popup\").videos()\n );\n\n // update selected video when videos or selected id changes\n useEffect(() => {\n setVideo(\n selectedId ? videos.find((video) => video.guid === selectedId) : null\n );\n }, [videos, selectedId]);\n\n // set if we can select if video has available resolutions\n useEffect(() => {\n if (video?.status == 3 && video?.availableResolutions.length) {\n setCanSelect(true);\n return;\n }\n setCanSelect(video?.status > 3 && video?.status < 5);\n }, [video?.availableResolutions]);\n\n return (\n <Button isPrimary disabled={!canSelect} onClick={() => onChoose(video)}>\n {video?.id && !canSelect\n ? __(\"Please wait, video is encoding...\", \"presto-player\")\n : __(\"Choose\", \"presto-player\")}\n </Button>\n );\n};\n","/** @jsx jsx */\nconst { Icon } = wp.components;\nimport { css, jsx } from \"@emotion/core\";\n\nexport default ({ children, onClick }) => {\n return (\n <span\n onClick={onClick}\n css={css`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n color: var(--wp-admin-theme-color, #007cba);\n padding: 6px 0;\n `}\n >\n <Icon\n css={css`\n width: 14px;\n height: 14px;\n font-size: 14px;\n margin-right: 5px;\n `}\n icon=\"arrow-left-alt\"\n size={14}\n />\n <span>{children}</span>\n </span>\n );\n};\n","/** @jsx jsx */\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { useState } = wp.element;\nconst { dispatch, useSelect } = wp.data;\nconst { Button, Modal, BaseControl } = wp.components;\n\nimport { css, jsx } from \"@emotion/core\";\nimport BackButton from \"./BackButton\";\n\nexport default () => {\n const [modal, setModal] = useState(false);\n const [deleting, setDeleting] = useState(false);\n const [error, setError] = useState(\"\");\n const collection = useSelect((select) =>\n select(\"presto-player/bunny-popup\").currentCollection()\n );\n const type = useSelect((select) =>\n select(\"presto-player/bunny-popup\").requestType()\n );\n\n const deleteCollection = async () => {\n setDeleting(true);\n try {\n await wp.apiFetch({\n path: `presto-player/v1/bunny/stream/collections/${collection?.guid}`,\n method: \"DELETE\",\n data: {\n type,\n },\n });\n setModal(false);\n dispatch(\"presto-player/bunny-popup\").setCollectionRequest(\"\");\n dispatch(\"presto-player/bunny-popup\").setVideosFetched(false);\n } catch (e) {\n setModal(false);\n dispatch(\"presto-player/bunny-popup\").addError(e.message);\n } finally {\n setDeleting(false);\n }\n };\n\n return (\n <div\n css={css`\n margin-bottom: 2em;\n display: flex;\n align-items: center;\n justify-content: space-between;\n `}\n >\n <div>\n <BackButton\n onClick={() => {\n dispatch(\"presto-player/bunny-popup\").setCollectionRequest(\"\");\n dispatch(\"presto-player/bunny-popup\").setVideosFetched(false);\n }}\n >\n {__(\"Back To Main Folder\", \"presto-player\")}\n </BackButton>\n <h2>{collection.name}</h2>\n </div>\n <Button isDestructive onClick={() => setModal(true)}>\n {__(\"Delete Collection\", \"presto-player\")}\n </Button>\n {modal && (\n <Modal\n shouldCloseOnClickOutside={false}\n overlayClassName=\"presto-modal\"\n title={\"Delete Collection\"}\n onRequestClose={() => setModal(false)}\n >\n <h2>\n {__(\n \"Are you sure you want to delete the collection? \",\n \"presto-player\"\n )}\n </h2>\n <p>\n {__(\n \"This will also delete all videos inside of the collection.\",\n \"presto-player\"\n )}\n </p>\n <BaseControl>\n <Button\n isDestructive\n disabled={deleting}\n isBusy={deleting}\n onClick={deleteCollection}\n >\n {__(\"Delete\", \"presto-player\")}\n </Button>{\" \"}\n <Button onClick={() => setModal(false)}>\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n </BaseControl>\n </Modal>\n )}\n </div>\n );\n};\n","/** @jsx jsx */\nimport { css, jsx } from \"@emotion/core\";\n\nconst { Icon } = wp.components;\nconst { useState, useEffect, useContext } = wp.element;\nconst { useSelect, dispatch } = wp.data;\nconst { __ } = wp.i18n;\n\nimport chunkUpload from \"@/admin/blocks/shared/media/chunk-upload\";\n\nimport ProgressBar from \"../ProgressBar\";\n\nexport default ({ file, name, onComplete }) => {\n const [progress, setProgress] = useState(0);\n const [message, setMessage] = useState(__(\"Uploading\", \"presto-player\"));\n const [error, setError] = useState(\"\");\n const [created, setCreated] = useState(false);\n const type = useSelect((select) =>\n select(\"presto-player/bunny-popup\").requestType()\n );\n const collection = useSelect((select) =>\n select(\"presto-player/bunny-popup\").currentCollection()\n );\n\n let uploader;\n\n const upload = async () => {\n setMessage(__(\"Uploading\", \"presto-player\"));\n uploader = chunkUpload({\n file: file?.[0] ? file?.[0] : file,\n path: `presto-player/v1/bunny/stream/upload`,\n onProgress: (percent) => {\n setProgress(percent); // leave 10% for storing\n },\n onComplete: createVideo,\n onError: (e) => {\n setError(e.message);\n setMessage(__(\"Error\", \"presto-player\"));\n setProgress(0);\n },\n });\n };\n\n const createVideo = async ({ path, name }) => {\n setMessage(__(\"Creating\", \"presto-player\"));\n try {\n const video = await wp.apiFetch({\n path: \"presto-player/v1/bunny/stream/videos\",\n method: \"POST\",\n data: {\n type,\n name,\n ...(collection?.guid ? { collection: collection.guid } : {}),\n },\n });\n setCreated(true);\n storeVideo({ path, video });\n } catch (e) {\n setError(e.message);\n } finally {\n setProgress(0);\n }\n };\n\n /**\n * Store the video on Bunny.net\n */\n const storeVideo = async ({ path, video }) => {\n await wp.apiFetch({\n path: \"presto-player/v1/bunny/stream/store\",\n method: \"POST\",\n data: {\n type,\n path,\n guid: video.guid,\n },\n });\n\n onComplete();\n };\n\n const onCancel = () => {\n uploader && uploader.cancel();\n dispatch(\"presto-player/bunny-popup\").removeUpload(upload);\n };\n\n useEffect(() => {\n upload();\n return () => {\n uploader && uploader.cancel();\n };\n }, []);\n\n if (created) {\n return \"\";\n }\n\n return (\n <div\n css={css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n animation: components-button__busy-animation 2500ms infinite linear;\n opacity: 1;\n padding: 6px 12px;\n border-radius: 99999px;\n border: 1px solid #dddddd;\n background-size: 100px 100%;\n background-image: linear-gradient(\n -45deg,\n #ffffff 33%,\n #f3f3f3 33%,\n #f3f3f3 70%,\n #ffffff 70%\n );\n `}\n >\n <div\n css={css`\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n max-width: 150px;\n text-overflow: ellipsis;\n font-weight: bold;\n `}\n >\n {!!error && error}\n {!!name && name} {file.name}...\n </div>\n <div\n css={css`\n display: flex;\n align-items: center;\n `}\n >\n <ProgressBar\n css={css`\n width: 50px;\n height: 3px;\n margin: 0 5px;\n background: #e3e3e3;\n border-radius: 9999px;\n overflow: hidden;\n `}\n progress={progress}\n />\n {/* <Icon onClick={onCancel} icon=\"no-alt\" /> */}\n </div>\n </div>\n );\n};\n","/** @jsx jsx */\nimport { css, jsx } from \"@emotion/core\";\n\nimport Upload from \"./Upload\";\nconst { useSelect } = wp.data;\n\nexport default ({ removeUpload, isPrivate }) => {\n const uploads = useSelect((select) =>\n select(\"presto-player/bunny-popup\").uploads()\n );\n\n if (!uploads.length) {\n return \"\";\n }\n\n return (\n <div\n css={css`\n overflow: auto;\n display: flex;\n align-items: center;\n position: relative;\n `}\n >\n {uploads.length &&\n uploads.map((upload) => {\n return (\n <Upload\n css={css`\n margin-right: 0px;\n `}\n file={upload}\n onComplete={() => removeUpload(upload)}\n />\n );\n })}\n </div>\n );\n};\n","/**\n * WordPress dependencies\n */\n/** @jsx jsx */\nconst { __ } = wp.i18n;\nconst { Modal } = wp.components;\n\nimport { css, jsx } from \"@emotion/core\";\n\nexport default ({\n onClose,\n title,\n header,\n error,\n mainContent,\n sidebar,\n footer,\n}) => {\n return (\n <Modal\n title={title ? title : __(\"Add Media\", \"presto-player\")}\n onRequestClose={onClose}\n css={css`\n width: 100%;\n height: 100%;\n max-width: calc(100% - 32px);\n max-height: calc(100% - 32px);\n\n .components-modal__content {\n display: flex;\n flex-direction: column;\n }\n `}\n overlayClassName=\"presto-player__modal-overlay\"\n >\n <div\n css={css`\n @media screen and (min-width: 780px) {\n margin: -24px;\n display: grid;\n flex: 1;\n max-height: calc(100vh - 68px);\n grid-template-columns: 1fr 1fr minmax(0px, 267px);\n grid-template-rows: minmax(50px, auto) 1fr 60px;\n grid-template-areas:\n \"header header sidebar\"\n \"main main sidebar\"\n \"footer footer footer\";\n overflow: hidden;\n }\n `}\n data-cy=\"media-modal\"\n >\n <div\n css={css`\n grid-area: header;\n padding: 24px 24px 12px 24px;\n `}\n >\n <div\n css={css`\n display: flex;\n align-items: center;\n\n > * {\n margin-right: 10px;\n }\n `}\n >\n {header}\n </div>\n {error}\n </div>\n <div\n css={css`\n grid-area: main;\n display: grid;\n overflow: hidden;\n\n .components-drop-zone__provider {\n overflow: hidden;\n display: grid;\n }\n\n .components-drop-zone {\n z-index: 99;\n }\n `}\n >\n {mainContent}\n </div>\n <div\n css={css`\n display: none;\n grid-area: sidebar;\n padding: 0 16px;\n z-index: 75;\n background: #f3f3f3;\n border-left: 1px solid #ddd;\n overflow: auto;\n\n @media screen and (min-width: 780px) {\n display: block;\n }\n\n .sidebar-content {\n padding: 16px 0;\n }\n `}\n >\n {sidebar}\n </div>\n <div\n css={css`\n grid-area: footer;\n border-top: 1px solid #ddd;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 8px;\n `}\n >\n {footer}\n </div>\n </div>\n </Modal>\n );\n};\n","/** @jsx jsx */\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { Button, DropZone, DropZoneProvider, Notice } = wp.components;\nconst { useState, useEffect, Fragment } = wp.element;\nconst { dispatch, useSelect } = wp.data;\n\nimport { css, jsx } from \"@emotion/core\";\n\nimport Sidebar from \"./Sidebar\";\nimport Videos from \"./video/Videos\";\nimport Collections from \"./collections/Collections\";\nimport Header from \"./Header\";\nimport Footer from \"./Footer\";\nimport CollectionHeader from \"./CollectionHeader\";\nimport Uploads from \"./upload/Uploads\";\n\nimport MediaPopupTemplate from \"@/admin/blocks/shared/media/MediaPopupTemplate\";\n\nexport default ({ onClose, onChoose }) => {\n const isPrivate = useSelect((select) =>\n select(\"presto-player/bunny-popup\").isPrivate()\n );\n const uploads = useSelect((select) =>\n select(\"presto-player/bunny-popup\").uploads()\n );\n const currentCollection = useSelect((select) =>\n select(\"presto-player/bunny-popup\").currentCollection()\n );\n const errors = useSelect((select) =>\n select(\"presto-player/bunny-popup\").errors()\n );\n\n useEffect(() => {\n dispatch(\"presto-player/bunny-popup\").setVideosFetched(false);\n dispatch(\"presto-player/bunny-popup\").setCollections([]);\n dispatch(\"presto-player/bunny-popup\").setVideos([]);\n }, []);\n\n const onCloseConfirm = () => {\n if (uploads.length) {\n const r = confirm(\"Discard your uploads?\");\n if (r) {\n onClose();\n dispatch(\"presto-player/bunny-popup\").setUploads([]);\n }\n return;\n }\n onClose();\n };\n\n const addUpload = (files) => {\n dispatch(\"presto-player/bunny-popup\").addUploads(files);\n };\n const removeUpload = (file) => {\n dispatch(\"presto-player/bunny-popup\").removeUpload(file);\n };\n\n /**\n * Modal Title\n *\n * @returns string\n */\n const title = isPrivate\n ? __(\"Private Stream Library\", \"presto-player\")\n : __(\"Public Stream Library\", \"presto-player\");\n\n /**\n * Main Content\n *\n * @returns JSX\n */\n const mainContent = () => {\n return (\n <DropZoneProvider\n css={css`\n overflow: auto;\n display: flex;\n flex-direction: column;\n `}\n >\n <div\n css={css`\n padding: 12px 24px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n `}\n >\n {!!errors.length &&\n errors.map((error) => {\n return (\n <Notice\n css={css`\n margin: 0 0 20px 0;\n `}\n status=\"error\"\n onRemove={() =>\n dispatch(\"presto-player/bunny-popup\").removeError(error)\n }\n >\n {error}\n </Notice>\n );\n })}\n\n {/* Show back button or collections */}\n {!!currentCollection ? <CollectionHeader /> : <Collections />}\n\n <div\n css={css`\n display: flex;\n align-items: stretch;\n `}\n >\n <Videos />\n </div>\n\n <DropZone label={\"Drop files\"} onFilesDrop={addUpload} />\n </div>\n </DropZoneProvider>\n );\n };\n\n /**\n * Modal Header\n */\n const header = (\n <Header\n afterUpload={\n <Uploads\n uploads={uploads}\n removeUpload={removeUpload}\n isPrivate={isPrivate}\n />\n }\n />\n );\n\n const sidebar = <Sidebar />;\n\n /**\n * Modal Footer\n */\n const footer = <Footer onChoose={onChoose} />;\n\n return (\n <MediaPopupTemplate\n title={title}\n header={header}\n mainContent={mainContent()}\n onClose={onCloseConfirm}\n footer={footer}\n sidebar={sidebar}\n />\n );\n};\n","const { __ } = wp.i18n;\nconst { useEffect } = wp.element;\nconst { dispatch } = wp.data;\n\nimport \"./popup/stream/store/store\";\nimport StreamPopup from \"./popup/stream/Popup\";\n\nexport default ({ closePopup, onSelect, isPrivate }) => {\n const onChoose = (video) => {\n video.url = video.playlistURL;\n video.thumbnail = video.thumbnailURL;\n video.preview = video.webPURL;\n onSelect(video);\n };\n\n // set privacy option in store\n useEffect(() => {\n dispatch(\"presto-player/bunny-popup\").setIsPrivate(isPrivate);\n }, [isPrivate]);\n\n // render template\n return (\n <StreamPopup\n onClose={closePopup}\n onChoose={onChoose}\n header={\n isPrivate\n ? __(\"Private Stream Library\", \"presto-player\")\n : __(\"Public Stream Library\", \"presto-player\")\n }\n title={\n isPrivate\n ? __(\"Private Video Stream\", \"presto-player\")\n : __(\"Public Video Stream\", \"presto-player\")\n }\n />\n );\n};\n","const { __ } = wp.i18n;\nconst { useState } = wp.element;\nconst baseUrl = `${prestoPlayer.root}${prestoPlayer.prestoVersionString}bunny/`;\n\nexport default (onRefetch) => {\n const [apikey, setApikey] = useState(\"\");\n const [saveMessage, setSaveMessage] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [step, setStep] = useState(0);\n const [error, setError] = useState(\"\");\n\n const getError = (errorString) => {\n if (errorString.includes(\"Authorization has been denied\")) {\n return \"Your API key is incorrect. Please double-check to make sure you've copied it correctly.\";\n }\n if (errorString.includes(\"localhost\")) {\n return \"You cannot use a CDN on a local site. Please use Bunny.net on a live, publicly accessible site.\";\n }\n return errorString;\n };\n\n const saveKey = async () => {\n setError(\"\");\n\n try {\n setSaving(true);\n setStep(0);\n setSaveMessage(__(\"Validating API Key...\", \"presto-player\"));\n const { success } = await wp.apiFetch({\n url: `${baseUrl}api-key`,\n method: \"POST\",\n data: {\n api_key: apikey,\n },\n });\n\n if (!success) {\n throw {\n message:\n \"Could not save the API key. Please double check it to make sure it's correct.\",\n };\n }\n } catch (e) {\n setStep(0);\n setError(\n e?.message\n ? getError(e.message)\n : \"Something went wrong. Please try again\"\n );\n return;\n } finally {\n setStep(1);\n setSaving(false);\n setSaveMessage(\"\");\n }\n\n // create storage zone\n try {\n setSaving(true);\n setSaveMessage(\n __(\n \"Setting up storage zones. This make take a few minutes...\",\n \"presto-player\"\n )\n );\n const { id } = await wp.apiFetch({\n url: `${baseUrl}storage-zones`,\n method: \"POST\",\n });\n } catch (e) {\n setStep(0);\n setError(\n e?.message\n ? getError(e.message)\n : \"Something went wrong. Please try again\"\n );\n return;\n } finally {\n setStep(2);\n setSaving(false);\n setSaveMessage(\"\");\n }\n\n // create storage zone\n try {\n setSaving(true);\n setSaveMessage(\n __(\n \"Setting up pull zones. This make take a few minutes...\",\n \"presto-player\"\n )\n );\n const { id } = await wp.apiFetch({\n url: `${baseUrl}pull-zones`,\n method: \"POST\",\n });\n } catch (e) {\n setStep(0);\n setError(\n e?.message\n ? getError(e.message)\n : \"Something went wrong. Please try again\"\n );\n return;\n } finally {\n setStep(3);\n setSaving(false);\n setSaveMessage(\"\");\n }\n\n onRefetch();\n };\n\n const totalSteps = 3;\n\n return { saveKey, setApikey, step, saveMessage, saving, error, totalSteps };\n};\n","const { __ } = wp.i18n;\nconst { useState } = wp.element;\nconst baseUrl = `${prestoPlayer.root}${prestoPlayer.prestoVersionString}bunny/stream/`;\n\nexport default (onRefetch) => {\n const [apikey, setApikey] = useState(\"\");\n const [saveMessage, setSaveMessage] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [step, setStep] = useState(0);\n const [error, setError] = useState(\"\");\n\n const getError = (errorString) => {\n if (errorString.includes(\"Authorization has been denied\")) {\n return \"Your API key is incorrect. Please double-check to make sure you've copied it correctly.\";\n }\n if (errorString.includes(\"localhost\")) {\n return \"You cannot use a CDN on a local site. Please use Bunny.net on a live, publicly accessible site.\";\n }\n return errorString;\n };\n\n const saveKey = async () => {\n setError(\"\");\n\n try {\n setSaving(true);\n setStep(0);\n setSaveMessage(__(\"Validating API Key...\", \"presto-player\"));\n const { success } = await wp.apiFetch({\n url: `${baseUrl}api-key`,\n method: \"POST\",\n data: {\n api_key: apikey,\n },\n });\n\n if (!success) {\n throw {\n message:\n \"Could not save the API key. Please double check it to make sure it's correct.\",\n };\n }\n } catch (e) {\n setStep(0);\n setError(\n e?.message\n ? getError(e.message)\n : \"Something went wrong. Please try again\"\n );\n return;\n } finally {\n setStep(1);\n setSaving(false);\n setSaveMessage(\"\");\n }\n\n // public library\n try {\n setSaving(true);\n setSaveMessage(\n __(\n \"Setting up public video library. This make take a few moments...\",\n \"presto-player\"\n )\n );\n const { id } = await wp.apiFetch({\n url: `${baseUrl}library`,\n method: \"POST\",\n data: {\n type: \"public\",\n },\n });\n } catch (e) {\n setStep(0);\n setError(\n e?.message\n ? getError(e.message)\n : \"Something went wrong. Please try again\"\n );\n return;\n } finally {\n setStep(2);\n setSaving(false);\n setSaveMessage(\"\");\n }\n\n // private library\n try {\n setSaving(true);\n setSaveMessage(\n __(\n \"Setting up private video library. This make take a few moments...\",\n \"presto-player\"\n )\n );\n await wp.apiFetch({\n url: `${baseUrl}library`,\n method: \"POST\",\n data: {\n type: \"private\",\n },\n });\n } catch (e) {\n setStep(0);\n setError(\n e?.message\n ? getError(e.message)\n : \"Something went wrong. Please try again\"\n );\n return;\n } finally {\n setStep(2);\n setSaving(false);\n setSaveMessage(\"\");\n }\n\n onRefetch();\n };\n\n const totalSteps = 3;\n\n return { saveKey, setApikey, step, saveMessage, saving, error, totalSteps };\n};\n","const { __ } = wp.i18n;\n\nconst {\n Button,\n TextControl,\n Placeholder,\n Flex,\n FlexBlock,\n ExternalLink,\n Spinner,\n FlexItem,\n Notice,\n} = wp.components;\nconst { useEffect } = wp.element;\n\nimport useStorageConnection from \"./useStorageConnection\";\nimport useStreamConnection from \"./useStreamConnection\";\n\nexport default ({ onRefetch, type, autoSubmit }) => {\n const {\n saveKey,\n apikey,\n setApikey,\n saveMessage,\n saving,\n totalSteps,\n step,\n error,\n } =\n type === \"stream\"\n ? useStreamConnection(onRefetch)\n : useStorageConnection(onRefetch);\n\n useEffect(() => {\n if (autoSubmit) {\n saveKey();\n }\n }, [autoSubmit]);\n\n return (\n <Placeholder\n label={__(\"Bunny.net Video\", \"presto-player\")}\n instructions={\n <>\n {__(\n \"Enter your Bunny.net API key, which can be found on your Bunny CDN Account page.\",\n \"presto-player\"\n )}\n &nbsp;\n <ExternalLink href=\"https://bunnycdn.com/dashboard/account\">\n {__(\"Get My API Key\", \"presto-player\")}\n </ExternalLink>\n </>\n }\n >\n {saving ? (\n <Flex>\n <FlexItem>\n <Spinner />\n </FlexItem>\n <FlexBlock>\n {saveMessage}\n <progress\n className=\"presto-progress\"\n max={totalSteps}\n value={step}\n style={{ width: \"100%\" }}\n ></progress>\n </FlexBlock>\n </Flex>\n ) : (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n saveKey();\n }}\n >\n {error && (\n <Flex style={{ width: \"100%\" }}>\n <FlexBlock>\n <Notice status=\"error\" isDismissible={false}>\n {error}\n </Notice>\n </FlexBlock>\n </Flex>\n )}\n <Flex style={{ width: \"100%\", maxWidth: \"400px\" }}>\n <FlexBlock>\n <TextControl\n value={apikey}\n onChange={(apikey) => setApikey(apikey)}\n className={\"presto-link-placeholder-input\"}\n type=\"password\"\n autoComplete=\"off\"\n placeholder={__(\"Your Bunny.net API Key\", \"presto-player\")}\n required\n />\n </FlexBlock>\n <FlexItem>\n <Button isPrimary style={{ marginBottom: \"8px\" }} type=\"submit\">\n {__(\"Next\", \"presto-player\")} &rarr;\n </Button>\n </FlexItem>\n </Flex>\n </form>\n )}\n </Placeholder>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst {\n Button,\n Disabled,\n DropdownMenu,\n Spinner,\n Toolbar,\n withNotices,\n BaseControl,\n Placeholder,\n ToggleControl,\n} = wp.components;\nconst { BlockControls, InspectorControls } = wp.editor;\nconst { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { useEffect, useState, Fragment } = wp.element;\nconst { dispatch } = wp.data;\n\nimport { signURL } from \"../../shared/services/bunny\";\n\n// hocs\nimport withPlayerEdit from \"../with-player-edit\";\nimport withPlayerData from \"../with-player-data\";\n\n/**\n * Internal dependencies\n */\nimport TracksEditor from \"@/admin/blocks/shared/tracks/TracksEditor\";\nimport StorageMedia from \"./StorageMedia\";\nimport StreamMedia from \"./StreamMedia\";\nimport APIPlaceholder from \"./APIPlaceholder\";\nimport BlockInspectorControls from \"@/admin/blocks/shared/BlockInspectorControls\";\nimport Player from \"@/admin/blocks/shared/Player\";\n\nexport default compose([withPlayerData(), withPlayerEdit()])(\n withNotices(\n ({\n attributes,\n setAttributes,\n noticeOperations,\n branding,\n isSelected,\n presetData,\n createVideo,\n lockSave,\n unlockSave,\n onRemoveSrc,\n renderKey,\n defaultPreset,\n }) => {\n const {\n poster,\n src,\n id,\n tracks,\n visibility,\n previewSrc,\n thumbnail,\n } = attributes;\n\n const [mediaPopup, setMediaPopup] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n // What setup screen should we show\n const [setup, setSetup] = useState(\"\");\n const [isSetup, setIsSetup] = useState({\n stream: false,\n storage: false,\n });\n const [disableStream, setDisableStream] = useState(false);\n\n // setup and api\n const [isAPILoaded, setIsAPILoaded] = useState(false);\n const [fetchingSettings, setFetchingSettings] = useState(false);\n const [autoSubmitStream, setAutoSubmitStream] = useState(false);\n\n const userCanReadSettings = wp.data.useSelect((select) =>\n select(\"core\").canUser(\"read\", \"settings\")\n );\n\n // is this private\n const isPrivate = visibility === \"private\";\n\n // is legacy storage disabled\n const disableLegacyStorage =\n prestoPlayerAdmin?.bunny?.disable_legacy_storage;\n\n // set privacy option in store\n useEffect(() => {\n dispatch(\"presto-player/bunny-popup\").setIsPrivate(\n visibility === \"private\"\n );\n }, [visibility]);\n\n useEffect(() => {\n setIsSetup({\n storage: prestoPlayerAdmin?.isSetup?.bunny?.storage,\n stream: prestoPlayerAdmin?.isSetup?.bunny?.stream,\n });\n }, []);\n\n function selectVideo(media, ...args) {\n if (!media.url) {\n // in this case there was an error\n // previous attributes should be removed\n // because they may be temporary blob urls\n setAttributes({ src: undefined, id: undefined });\n return;\n }\n\n // set preset attributes\n setAttributes({\n src: media.url,\n preset: defaultPreset?.id,\n ...(media?.thumbnail ? { thumbnail: media.thumbnail } : {}),\n ...(media?.preview ? { preview: media.preview } : {}),\n });\n\n // create video\n setLoading(true);\n lockSave();\n createVideo({\n src: media.url,\n type: \"bunny\",\n title: media.title,\n ...(media?.guid ? { external_id: media.guid } : {}),\n })\n .catch((e) => {\n setAttributes({ src: \"\" });\n console.error(e);\n })\n .finally(() => {\n unlockSave();\n setLoading(false);\n });\n }\n\n // fetch settings\n const fetchSettings = async () => {\n try {\n const {\n presto_player_bunny_pull_zones,\n presto_player_bunny_storage_zones,\n presto_player_bunny_stream_private,\n presto_player_bunny_stream_public,\n } = await wp.apiFetch({\n path: `wp/v2/settings`,\n });\n setIsAPILoaded(true);\n\n if (!presto_player_bunny_stream_private) {\n setDisableStream(true);\n }\n\n // is this set up?\n const isSetup = (option) => {\n return !!(option?.private_id && option?.public_id);\n };\n\n const storageSetup =\n isSetup(presto_player_bunny_pull_zones) ||\n isSetup(presto_player_bunny_storage_zones);\n const streamSetup =\n presto_player_bunny_stream_private?.pull_zone_url &&\n presto_player_bunny_stream_public?.pull_zone_url;\n\n setIsSetup({\n storage: storageSetup,\n stream: streamSetup,\n });\n\n if (!storageSetup && !streamSetup) {\n setSetup(\"stream\");\n } else {\n setSetup(\"\");\n }\n } finally {\n setFetchingSettings(false);\n }\n };\n\n // mounted\n useEffect(() => {\n if (userCanReadSettings) {\n fetchSettings();\n } else {\n setIsAPILoaded(true);\n }\n }, [userCanReadSettings]);\n\n const setPreview = async () => {\n if (isPrivate) {\n let previewSrc = await signURL(src);\n setAttributes({ previewSrc });\n } else {\n setAttributes({ previewSrc: src });\n }\n };\n useEffect(() => {\n setPreview();\n }, [src]);\n\n const setThumbnail = async () => {\n if (isPrivate) {\n let previewThumbnail = await signURL(thumbnail);\n if (previewThumbnail) {\n setAttributes({ previewThumbnail });\n }\n } else {\n setAttributes({ previewThumbnail: thumbnail });\n }\n };\n useEffect(() => {\n setThumbnail();\n }, [thumbnail]);\n\n const placeholderButtons = () => {\n return (\n <Fragment>\n {isSetup.stream && (\n <Button isPrimary onClick={() => setMediaPopup(\"stream\")}>\n {isPrivate\n ? __(\"Add/Select Private Video Stream\", \"presto-player\")\n : __(\"Add/Select Video Stream\", \"presto-player\")}\n </Button>\n )}\n\n {!disableLegacyStorage && isSetup.storage && (\n <Button\n isSecondary={isSetup.stream}\n isPrimary={!isSetup.stream}\n onClick={() => setMediaPopup(\"storage\")}\n >\n {isPrivate\n ? __(\"Add/Select Private Video (Classic)\", \"presto-player\")\n : __(\"Add/Select Video (Classic)\", \"presto-player\")}\n </Button>\n )}\n\n {!isSetup.stream && !disableStream && isSetup.storage && (\n <Button\n isSecondary\n onClick={() => {\n setAutoSubmitStream(true);\n setSetup(\"stream\");\n }}\n >\n {__(\"Enable Bunny.net Stream!\", \"presto-player\")}\n </Button>\n )}\n\n {!!userCanReadSettings && moreButtons()}\n </Fragment>\n );\n };\n\n const moreButtons = () => {\n const controls = [];\n !disableStream &&\n controls.push({\n title: isSetup.stream\n ? __(\"Reconnect Stream\", \"presto-player\")\n : __(\"Connect Stream\", \"presto-player\"),\n onClick: () => {\n setSetup(\"stream\");\n setAutoSubmitStream(false);\n },\n });\n\n !disableLegacyStorage &&\n controls.push({\n title: isSetup.storage\n ? __(\"Reconnect Storage (Classic)\", \"presto-player\")\n : __(\"Connect Storage (Classic)\", \"presto-player\"),\n onClick: () => setSetup(\"storage\"),\n });\n\n return (\n <DropdownMenu\n icon=\"ellipsis\"\n label={__(\"Connection Options\", \"presto-player\")}\n controls={controls}\n />\n );\n };\n\n if (loading || !isAPILoaded) {\n return (\n <Placeholder className=\"presto-player__placeholder is-loading\">\n <Spinner />\n </Placeholder>\n );\n }\n\n if (setup === \"stream\") {\n return (\n <APIPlaceholder\n type=\"stream\"\n autoSubmit={autoSubmitStream}\n onRefetch={() => {\n setIsAPILoaded(false);\n fetchSettings();\n }}\n />\n );\n }\n\n if (setup === \"storage\") {\n return (\n <APIPlaceholder\n type=\"storage\"\n onRefetch={() => {\n setIsAPILoaded(false);\n fetchSettings();\n }}\n />\n );\n }\n\n if (!id) {\n return (\n <div>\n <Placeholder\n label={\n isPrivate\n ? __(\"Bunny.net Private Video\", \"presto-player\")\n : __(\"Bunny.net Video\", \"presto-player\")\n }\n icon={\n isPrivate ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <polyline points=\"8 17 12 21 16 17\"></polyline>\n <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line>\n <path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>\n </svg>\n )\n }\n instructions={\n <>{__(\"Add or select a Bunny.net video\", \"presto-player\")}</>\n }\n >\n <BaseControl className=\"presto-player__placeholder-control\">\n <ToggleControl\n label=\"Private Video\"\n help={\n isPrivate\n ? \"Video is only accessible to those who are logged in.\"\n : \"Video is accessible to everyone.\"\n }\n checked={isPrivate}\n onChange={(isPrivate) => {\n setAttributes({\n visibility: isPrivate ? \"private\" : \"public\",\n });\n }}\n />\n </BaseControl>\n {placeholderButtons()}\n </Placeholder>\n\n {mediaPopup === \"storage\" && (\n <StorageMedia\n isPrivate={isPrivate}\n closePopup={() => setMediaPopup(\"\")}\n noticeOperations={noticeOperations}\n onSelect={selectVideo}\n />\n )}\n\n {mediaPopup === \"stream\" && (\n <StreamMedia\n isPrivate={isPrivate}\n closePopup={() => setMediaPopup(\"\")}\n noticeOperations={noticeOperations}\n onSelect={selectVideo}\n />\n )}\n </div>\n );\n }\n\n return (\n <>\n <BlockControls>\n <TracksEditor\n tracks={tracks}\n onChange={(newTracks) => {\n setAttributes({ tracks: newTracks });\n }}\n />\n <Toolbar>\n <Button onClick={() => onRemoveSrc()}>\n {__(\"Replace\", \"presto-player\")}\n </Button>\n </Toolbar>\n </BlockControls>\n\n <InspectorControls>\n <BlockInspectorControls\n setAttributes={setAttributes}\n attributes={attributes}\n />\n </InspectorControls>\n\n <figure className=\"wp-block-video\">\n {/*\n Disable the video tag so the user clicking on it won't play the\n video when the controls are enabled.\n */}\n <Disabled>\n <Player\n poster={poster}\n src={previewSrc}\n id={id}\n type={\"bunny\"}\n attributes={attributes}\n setAttributes={setAttributes}\n preset={presetData}\n branding={branding}\n key={renderKey}\n />\n </Disabled>\n </figure>\n </>\n );\n }\n )\n);\n","const { __ } = wp.i18n;\nimport edit from \"./edit\";\nimport blockOptions from \"../block-options\";\n\n/**\n * Block Name\n */\nexport const name = \"presto-player/bunny\";\n\n/**\n * Block Options\n */\nexport const options = {\n ...blockOptions,\n\n attributes: {\n ...blockOptions.attributes,\n ...{\n thumbnail: {\n type: String,\n default: \"\",\n },\n preview: {\n type: String,\n default: \"\",\n },\n },\n },\n\n premium: true,\n\n title: __(\"Presto Bunny.net Video\", \"presto-player\"),\n\n description: __(\"Serve video through Bunny.net CDN.\", \"presto-player\"),\n\n variations: [\n {\n name: \"public\",\n isDefault: true,\n title: __(\"Presto Bunny.net Video\", \"presto-player\"),\n description: __(\n \"Serve public video through Bunny.net CDN.\",\n \"presto-player\"\n ),\n attributes: { visibility: \"public\" },\n },\n {\n name: \"private\",\n title: __(\"Presto Bunny.net Private Video\", \"presto-player\"),\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>\n </svg>\n ),\n description: __(\n \"Serve private, secure video through Bunny.net CDN.\",\n \"presto-player\"\n ),\n attributes: { visibility: \"private\" },\n },\n ],\n\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <polyline points=\"8 17 12 21 16 17\"></polyline>\n <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line>\n <path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>\n </svg>\n ),\n\n edit,\n};\n","/**\n * External dependencies\n */\n\nimport classnames from \"classnames\";\nconst baseCurrentUrl = window.location.href;\nimport helpers from \"./helpers\";\n\n/**\n * WordPress dependencies\n */\nimport { Button, Placeholder, withFilters } from \"@wordpress/components\";\nimport { __ } from \"@wordpress/i18n\";\nimport { useState, useEffect } from \"@wordpress/element\";\nimport { useSelect } from \"@wordpress/data\";\nimport {\n MediaUpload,\n MediaUploadCheck,\n URLPopover,\n} from \"@wordpress/block-editor\";\n\nconst InsertFromURLPopover = ({ src, onChange, onSubmit, onClose }) => (\n <URLPopover onClose={onClose}>\n <form\n className=\"block-editor-media-placeholder__url-input-form\"\n onSubmit={onSubmit}\n >\n <input\n data-cy=\"url-input\"\n className=\"block-editor-media-placeholder__url-input-field\"\n type=\"url\"\n aria-label={__(\"URL\", \"presto-player\")}\n placeholder={__(\"Paste an mp3 URL\", \"presto-player\")}\n onChange={onChange}\n value={src}\n />\n <Button\n data-cy=\"url-submit\"\n className=\"block-editor-media-placeholder__url-input-submit-button\"\n icon={\"editor-break\"}\n label={__(\"Apply\", \"presto-player\")}\n type=\"submit\"\n />\n </form>\n </URLPopover>\n);\n\nexport function MediaPlaceholder({\n value = {},\n allowedTypes = [],\n className,\n icon,\n url = true,\n labels = {},\n mediaPreview,\n notices,\n isAppender,\n isPrivate,\n addToGallery,\n onSelect,\n onCancel,\n onSelectURL,\n onDoubleClick,\n children,\n allowURLs,\n}) {\n const mediaUpload = useSelect((select) => {\n const { getSettings } = select(\"core/block-editor\");\n return getSettings().mediaUpload;\n }, []);\n\n const [src, setSrc] = useState(\"\");\n const [isURLInputVisible, setIsURLInputVisible] = useState(false);\n\n useEffect(() => {\n setSrc(value?.src ?? \"\");\n }, [value]);\n\n const onChangeSrc = (event) => {\n setSrc(event.target.value);\n };\n\n const openURLInput = () => {\n setIsURLInputVisible(true);\n };\n\n const closeURLInput = () => {\n setIsURLInputVisible(false);\n };\n\n const onSubmitSrc = (event) => {\n event.preventDefault();\n if (src && onSelectURL) {\n onSelectURL(src);\n closeURLInput();\n }\n };\n\n const renderPlaceholder = (content, onClick) => {\n let { instructions, title } = labels;\n\n if (!mediaUpload && !onSelectURL) {\n instructions = __(\n \"To edit this block, you need permission to upload media.\",\n \"presto-player\"\n );\n }\n\n // set class names\n const placeholderClassName = classnames(\n \"block-editor-media-placeholder\",\n className,\n {\n \"is-appender\": isAppender,\n }\n );\n\n return (\n <Placeholder\n icon={icon}\n label={title}\n instructions={instructions}\n className={placeholderClassName}\n notices={notices}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n preview={mediaPreview}\n >\n {children}\n {content}\n </Placeholder>\n );\n };\n\n const renderCancelLink = () => {\n return (\n onCancel && (\n <Button\n className=\"block-editor-media-placeholder__cancel-button\"\n title={__(\"Cancel\", \"presto-player\")}\n isLink\n onClick={onCancel}\n >\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n )\n );\n };\n\n const renderUrlSelectionUI = () => {\n return (\n onSelectURL && (\n <div className=\"block-editor-media-placeholder__url-input-container\">\n {url && isPrivate === false && (\n <Button\n className=\"block-editor-media-placeholder__button\"\n onClick={openURLInput}\n isPressed={isURLInputVisible}\n isTertiary\n >\n {__(\"Audio URL\", \"presto-player\")}\n </Button>\n )}\n {isURLInputVisible && (\n <InsertFromURLPopover\n src={src}\n onChange={onChangeSrc}\n onSubmit={onSubmitSrc}\n onClose={closeURLInput}\n />\n )}\n </div>\n )\n );\n };\n\n const renderMediaUploadChecked = () => {\n const mediaLibraryButton = (\n <MediaUpload\n title={\n isPrivate\n ? __(\"Select or Upload Private Audio\", \"presto-player\")\n : __(\"Select or Upload Audio\", \"presto-player\")\n }\n addToGallery={addToGallery}\n gallery={false}\n multiple={false}\n onSelect={(event) => {\n // set private/public url params\n helpers.unsetUrlParams();\n onSelect(event);\n }}\n onClose={() => {\n // unset private/public url params\n helpers.unsetUrlParams();\n }}\n allowedTypes={allowedTypes}\n value={Array.isArray(value) ? value.map(({ id }) => id) : value.id}\n render={({ open }) => {\n return (\n <Button\n isPrimary\n onClick={(event) => {\n event.stopPropagation();\n helpers.unsetUrlParams();\n if (isPrivate) {\n helpers.setUrlPrivate(baseCurrentUrl);\n } else {\n helpers.setUrlPublic(baseCurrentUrl);\n }\n open();\n }}\n >\n {isPrivate\n ? __(\"Add/Select Private Audio\", \"presto-player\")\n : __(\"Add/Select Audio\", \"presto-player\")}\n </Button>\n );\n }}\n />\n );\n\n if (mediaUpload) {\n const content = (\n <>\n {mediaLibraryButton}\n {!!allowURLs && renderUrlSelectionUI()}\n {renderCancelLink()}\n </>\n );\n return renderPlaceholder(content);\n }\n\n return renderPlaceholder(mediaLibraryButton);\n };\n\n return (\n <MediaUploadCheck fallback={renderPlaceholder(renderUrlSelectionUI())}>\n {renderMediaUploadChecked()}\n </MediaUploadCheck>\n );\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/media-placeholder/README.md\n */\nexport default withFilters(\"editor.MediaPlaceholder\")(MediaPlaceholder);\n","import MediaPlaceholder from \"@/admin/blocks/shared/audio-placeholder\";\nconst { __ } = wp.i18n;\nconst { withNotices, BaseControl, ToggleControl, Notice } = wp.components;\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\nimport { dispatch } from \"@wordpress/data\";\n\nconst ALLOWED_MEDIA_TYPES = [\"audio\"];\n\nexport default ({\n attributes,\n setAttributes,\n onSelectURL,\n onSelect,\n children,\n}) => {\n const { visibility } = attributes;\n const isPrivate = visibility === \"private\";\n\n return (\n <MediaPlaceholder\n icon={\n isPrivate ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n className=\"presto-block-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3\"\n />\n </svg>\n )\n }\n labels={{\n title: __(\"Presto Audio\", \"presto-player\"),\n instructions: __(\n \"Upload a audio file, or pick one from your media library.\",\n \"presto-player\"\n ),\n }}\n accept=\"audio/*\"\n setAttributes={setAttributes}\n allowedTypes={ALLOWED_MEDIA_TYPES}\n switcher={true}\n isPrivate={isPrivate}\n allowURLs={!isPrivate}\n onSelectURL={onSelectURL}\n onSelect={onSelect}\n value={attributes}\n allowURLs={true}\n onError={() => console.log(\"error\")}\n >\n <div style={{ width: \"100%\" }}>\n <BaseControl className=\"presto-player__placeholder-control\">\n <ToggleControl\n label={\n <div>\n {__(\"Make Private\", \"presto-player\")}{\" \"}\n {!prestoPlayer?.isPremium && <ProBadge />}\n </div>\n }\n help={\n isPrivate\n ? __(\n \"This audio is only accessible to those who are logged in.\",\n \"presto-player\"\n )\n : __(\n \"This audio is currently accessible to everyone.\",\n \"presto-player\"\n )\n }\n checked={isPrivate}\n onChange={(isPrivate) => {\n if (!prestoPlayer?.isPremium) {\n dispatch(\"presto-player/player\").setProModal(true);\n return;\n }\n setAttributes({\n visibility: isPrivate ? \"private\" : \"public\",\n });\n }}\n />\n </BaseControl>\n\n {!!children && <div style={{ width: \"100%\" }}>{children}</div>}\n\n {!!isPrivate && (\n <Notice status=\"warning\" isDismissible={false}>\n <div>\n <div>\n <strong>{__(\"Note\", \"presto-player\")}</strong>\n </div>\n {__(\n \"Private audio uses php to stream your audio. Keep in mind this will use up disk space and bandwidth so it may not be an appropriate choice for some hosts.\",\n \"presto-player\"\n )}\n </div>\n </Notice>\n )}\n </div>\n </MediaPlaceholder>\n );\n};\n","import { __ } from \"@wordpress/i18n\";\nimport { Disabled } from \"@wordpress/components\";\nimport { PrestoCtaOverlayUi, PrestoEmailOverlayUi } from \"@presto-player/react\";\nimport { timeToSeconds } from \"../../util\";\nimport Player from \"../Player\";\nimport { useEffect, useState } from \"@wordpress/element\";\n\nexport default ({\n state,\n branding,\n menu,\n src,\n poster,\n currentTime,\n preload,\n mediaTitle,\n overlays,\n isDisabled = true,\n}) => {\n const [renderKey, setRenderKey] = useState(1);\n const { email_collection, cta } = state;\n\n useEffect(() => {\n setRenderKey(renderKey + 1);\n }, [\n state.skin,\n state[\"play-large\"],\n state.rewind,\n state.play,\n state[\"fast-forward\"],\n state.progress,\n state[\"current-time\"],\n state.mute,\n state.volume,\n state.speed,\n state.pip,\n state.fullscreen,\n state.captions,\n state.hide_logo,\n ]);\n\n const previews = {\n email: !!email_collection?.enabled && (\n <PrestoEmailOverlayUi\n className=\"email-overlay\"\n slot=\"player-end\"\n headline={email_collection?.headline}\n style={{\n \"--presto-player-email-border-radiuss\": `${email_collection?.button_radius}px`,\n \"--plyr-color-main\": state?.background_color || branding?.color,\n ...(email_collection.button_color\n ? {\n \"--presto-player-button-color\": `${email_collection.button_color}`,\n }\n : {}),\n ...(email_collection.button_text_color\n ? {\n \"--presto-player-button-text\": `${email_collection.button_text_color}`,\n }\n : {}),\n }}\n defaultHeadline={__(\"Enter your email to play.\", \"presto-player\")}\n bottomText={email_collection?.bottom_text}\n allowSkip={email_collection?.allow_skip}\n skipText={__(\"Skip\", \"presto-player\")}\n buttonText={email_collection?.button_text}\n placeholder={__(\"Email address\", \"presto-player\")}\n i18n={window.prestoPlayer.i18n}\n type={\"audio\"}\n />\n ),\n cta: !!cta?.enabled && (\n <PrestoCtaOverlayUi\n className=\"cta-overlay\"\n style={{\n \"--presto-player-button-border-radius\": `${cta.button_radius}px`,\n ...(cta?.background_opacity\n ? {\n \"--presto-player-cta-background-opacity\": `${\n cta?.background_opacity / 100\n }`,\n }\n : {}),\n ...(cta.button_color\n ? {\n \"--presto-player-button-color\": `${cta.button_color}`,\n }\n : {}),\n ...(cta.button_text_color\n ? {\n \"--presto-player-button-text\": `${cta.button_text_color}`,\n }\n : {}),\n }}\n slot=\"player-end\"\n headline={cta?.headline}\n bottom-text={cta?.bottom_text}\n button-link={cta?.button_link}\n allow-skip={cta?.percentage !== 100 && cta?.show_skip}\n borderRadius={cta?.border_radius}\n allow-rewatch={cta?.percentage === 100 && cta?.show_rewatch}\n skip-text={__(\"Skip\", \"presto-player\")}\n show-button={cta?.show_button}\n button-text={cta?.button_text}\n i18n={window.prestoPlayer.i18n}\n type={\"audio\"}\n />\n ),\n };\n\n return (\n <Disabled isDisabled={isDisabled} className=\"disable-player\">\n <div className=\"presto-player__wrapper\">\n <Player\n src={src || \"http://something.mp3\"}\n classes={`\n ${menu === \"cta\" && !!cta?.enabled && \"cta-active\"} \n ${\n menu === \"email\" && !!email_collection?.enabled && \"email-active\"\n }`}\n preset={state}\n branding={branding}\n i18n={prestoPlayerAdmin?.i18n}\n preload={preload}\n attributes={{\n chapters: [],\n poster: poster,\n title: mediaTitle,\n }}\n type={\"audio\"}\n currentTime={currentTime ? timeToSeconds(currentTime) : \"\"}\n overlays={overlays}\n key={renderKey}\n adminPreview={previews?.[menu] || \"\"}\n />\n </div>\n </Disabled>\n );\n};\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n ToggleControl,\n BaseControl,\n HorizontalRule,\n __experimentalAlignmentMatrixControl: AlignmentMatrixControl,\n SelectControl,\n} = wp.components;\n\nexport default function ({ state, updateState, className }) {\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Behavior\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Save Play Position\", \"presto-player\")}\n help={__(\n \"Saves the user's play position so when they come back to the page they can continue the audio from where they left off.\",\n \"presto-player\"\n )}\n onChange={(save_player_position) => {\n updateState({ save_player_position });\n }}\n checked={state.save_player_position}\n />\n </BaseControl>\n <BaseControl>\n <ToggleControl\n label={__(\"Focus Mode\", \"presto-player\")}\n help={__(\n \"Play only when tab is visible and audio is in viewport.\",\n \"presto-player\"\n )}\n onChange={(play_video_viewport) => {\n updateState({ play_video_viewport });\n }}\n checked={state.play_video_viewport}\n />\n </BaseControl>\n\n <BaseControl>\n <ToggleControl\n label={__(\"Sticky On Scroll\", \"presto-player\")}\n help={__(\n \"Stick audios to the side of the screen when the page is scrolled and the audio is playing.\",\n \"presto-player\"\n )}\n onChange={(sticky_scroll) => {\n updateState({ sticky_scroll });\n }}\n checked={state.sticky_scroll}\n />\n </BaseControl>\n\n <BaseControl>\n <SelectControl\n label={__(\"On Audio End\", \"presto-player\")}\n value={state.on_video_end}\n options={[\n {\n value: \"select\",\n label: __(\"Select\", \"presto-player\"),\n },\n {\n value: \"loop\",\n label: __(\"Loop\", \"presto-player\"),\n },\n {\n value: \"go-to-start\",\n label: __(\"Go to start\", \"presto-player\"),\n },\n ]}\n onChange={(on_video_end) => {\n updateState({ on_video_end });\n }}\n />\n </BaseControl>\n </div>\n );\n}\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { ToggleControl, BaseControl } = wp.components;\n\nexport default function ({ state, updateState, className }) {\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Controls\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl className=\"presto-player__control--large-play\">\n <ToggleControl\n label={__(\"Large Play Button\", \"presto-player\")}\n help={__(\n \"Adds a large play button over the top of the player.\",\n \"presto-player\"\n )}\n onChange={(play) => {\n updateState({ \"play-large\": play });\n }}\n checked={state[\"play-large\"]}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--rewind\">\n <ToggleControl\n label={__(\"Rewind\", \"presto-player\")}\n help={__(\n \"Adds a 10 second rewind button to the player.\",\n \"presto-player\"\n )}\n onChange={(rewind) => {\n updateState({ rewind });\n }}\n checked={state.rewind}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--play\">\n <ToggleControl\n label={__(\"Small Play Button\", \"presto-player\")}\n help={__(\n \"Adds a small play button to the bottom of the player.\",\n \"presto-player\"\n )}\n onChange={(play) => {\n updateState({ play });\n }}\n checked={state.play}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--fast-forward\">\n <ToggleControl\n label={__(\"Fast Forward\", \"presto-player\")}\n help={__(\n \"Adds a 10 second rewind button to the player.\",\n \"presto-player\"\n )}\n onChange={(value) => {\n updateState({ \"fast-forward\": value });\n }}\n checked={state[\"fast-forward\"]}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--progress\">\n <ToggleControl\n label={__(\"Progress Bar\", \"presto-player\")}\n help={__(\"Shows a seekable progress bar.\", \"presto-player\")}\n onChange={(progress) => {\n updateState({ progress });\n }}\n checked={state.progress}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--current-time\">\n <ToggleControl\n label={__(\"Current Time\", \"presto-player\")}\n help={__(\"Shows the audio timestamp.\", \"presto-player\")}\n onChange={(value) => {\n updateState({ \"current-time\": value });\n }}\n checked={state[\"current-time\"]}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--volume\">\n <ToggleControl\n label={__(\"Volume\", \"presto-player\")}\n help={__(\"Shows a volume bar.\", \"presto-player\")}\n onChange={(value) => {\n updateState({ volume: value, mute: value });\n }}\n checked={state.volume}\n />\n </BaseControl>\n <BaseControl className=\"presto-player__control--speed\">\n <ToggleControl\n label={__(\"Speed\", \"presto-player\")}\n help={__(\"Shows playback speed controls.\", \"presto-player\")}\n onChange={(speed) => {\n updateState({ speed });\n }}\n checked={state.speed}\n />\n </BaseControl>\n </div>\n );\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from \"@wordpress/i18n\";\nimport {\n ToggleControl,\n BaseControl,\n RangeControl,\n Flex,\n} from \"@wordpress/components\";\nimport ColorPopup from \"../components/ColorPopup\";\n\nexport default function ({ state, updateState, className }) {\n return (\n <div className={className}>\n <BaseControl>\n <h3>{__(\"Style\", \"presto-player\")}</h3>\n </BaseControl>\n <BaseControl>\n <RangeControl\n label={__(\"Round Corners\", \"presto-player\")}\n help={__(\"Player border radius size.\", \"presto-player\")}\n value={state?.border_radius || 0}\n onChange={(border_radius) => updateState({ border_radius })}\n min={0}\n max={25}\n />\n </BaseControl>\n\n <BaseControl>\n <Flex>\n <BaseControl.VisualLabel>\n <p>{__(\"Background Color\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n\n <ColorPopup\n color={state?.background_color || \"#000000\"}\n setColor={(value) => {\n updateState({ background_color: value.hex });\n }}\n />\n </Flex>\n </BaseControl>\n <BaseControl>\n <Flex>\n <BaseControl.VisualLabel>\n <p>{__(\"Control Color\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n\n <ColorPopup\n color={state?.control_color || \"#000000\"}\n setColor={(value) => {\n updateState({ control_color: value.hex });\n }}\n />\n </Flex>\n </BaseControl>\n </div>\n );\n}\n","/** @jsx jsx */\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst {\n TextControl,\n BaseControl,\n Icon,\n Notice,\n Button,\n Flex,\n FlexItem,\n SelectControl,\n FlexBlock,\n Modal,\n} = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { useSelect, dispatch } = wp.data;\n\nimport { snackbarNotice } from \"@/admin/blocks/util\";\nimport Menu from \"@/admin/ui/Menu\";\nimport { css, jsx } from \"@emotion/core\";\nimport Preview from \"./Preview\";\nimport Behavior from \"./Behavior\";\nimport Controls from \"./Controls\";\nimport Style from \"./Style\";\nimport ActionBar from \"../presets/ActionBar\";\nimport CTA from \"../presets/CTA\";\nimport Email from \"../presets/Email\";\n\nfunction EditPlayerPreset({\n type = \"new\",\n closeModal,\n addPreset,\n onSave,\n updatePreset,\n name = \"\",\n attributes,\n preset = {\n \"play-large\": true,\n rewind: true,\n play: true,\n \"fast-forward\": true,\n progress: true,\n \"current-time\": true,\n mute: true,\n volume: true,\n speed: false,\n pip: false,\n // behavior\n save_player_position: false,\n reset_on_end: false,\n sticky_scroll: false,\n // style\n hide_logo: false,\n border_radius: 0,\n skin: \"default\",\n background_color: \"\",\n control_color: \"\",\n\n // features\n cta: {},\n email_collection: {},\n action_bar: {},\n },\n}) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(\"\");\n const [menu, setMenu] = useState(\"\");\n const [thisName, setThisName] = useState(name);\n const [state, setState] = useState(preset);\n const branding = useSelect((select) => {\n return select(\"presto-player/player\").branding();\n });\n\n const [value, setValue] = useState(\"\");\n\n const genericError = {\n message: __(\n \"The preset could not be saved. Please reload the page and try again.\",\n \"presto-player\"\n ),\n };\n\n //you tube feature\n const youtube = useSelect((select) => {\n return select(\"presto-player/player\").youtube();\n });\n\n useEffect(() => {\n setValue(youtube.channel_id);\n }, [youtube?.channel_id]);\n\n // update state\n const updateState = (updated = {}) => {\n setState({ ...state, ...updated });\n };\n\n const putPreset = async () => {\n setLoading(true);\n try {\n const data = {\n ...state,\n ...{ name: thisName },\n };\n let saved = await wp.apiFetch({\n method: \"POST\",\n url: wp.url.addQueryArgs(\n `${prestoPlayer.root}${prestoPlayer.prestoVersionString}audio-preset/${preset.id}`,\n { _method: \"PUT\" }\n ),\n data,\n });\n\n if (!saved) {\n throw genericError;\n }\n\n // update or create here\n updatePreset(saved);\n closeModal();\n !!onSave && onSave(saved);\n snackbarNotice({ message: __(\"Preset updated!\", \"presto-player\") });\n } catch (e) {\n setError(e?.message ? e.message : genericError);\n } finally {\n setLoading(false);\n }\n\n // youtube id save\n dispatch(\"presto-player/player\").updateYoutube({ channel_id: value });\n\n const data = {\n ...youtube,\n ...{ channel_id: value },\n };\n\n try {\n let response = await wp.apiFetch({\n path: \"wp/v2/settings\",\n method: \"POST\",\n data: {\n presto_player_youtube: data,\n },\n });\n if (response?.presto_player_youtube) {\n dispatch(\"presto-player/player\").setYoutube(\n response?.presto_player_youtube\n );\n onClose();\n }\n } catch (e) {\n console.log(e);\n }\n };\n\n const createPreset = async () => {\n setLoading(true);\n try {\n let saved = await wp.apiFetch({\n method: \"POST\",\n url:\n prestoPlayer.root + prestoPlayer.prestoVersionString + \"audio-preset\",\n data: {\n ...{ name: thisName },\n ...state,\n },\n });\n if (!saved) {\n throw genericError;\n }\n\n // update or create here\n addPreset(saved);\n closeModal();\n !!onSave && onSave(saved);\n snackbarNotice({ message: __(\"Preset created!\", \"presto-player\") });\n } catch (e) {\n setError(e?.message ? e.message : genericError);\n } finally {\n setLoading(false);\n }\n };\n\n // validate and save\n const save = () => {\n if (!thisName) {\n setError(__(\"You must enter a name for the preset.\", \"presto-player\"));\n return;\n }\n return type === \"edit\" ? putPreset() : createPreset();\n };\n\n const tabs = [\n {\n name: \"controls\",\n title: __(\"Controls\", \"presto-player\"),\n icon: <Icon icon=\"admin-settings\" />,\n component: <Controls updateState={updateState} state={state} />,\n },\n {\n name: \"behavior\",\n title: __(\"Behavior\", \"presto-player\"),\n icon: <Icon icon=\"admin-generic\" />,\n component: <Behavior updateState={updateState} state={state} />,\n },\n {\n name: \"style\",\n title: __(\"Style\", \"presto-player\"),\n icon: <Icon icon=\"admin-customizer\" />,\n component: <Style updateState={updateState} state={state} />,\n },\n {\n name: \"email\",\n title: __(\"Email Capture\", \"presto-player\"),\n icon: <Icon icon=\"email\" />,\n component: <Email updateState={updateState} state={state} />,\n },\n {\n name: \"cta\",\n title: __(\"Call To Action\", \"presto-player\"),\n icon: <Icon icon=\"megaphone\" />,\n component: <CTA updateState={updateState} state={state} />,\n },\n {\n name: \"action_bar\",\n title: __(\"Action Bar\", \"presto-player\"),\n icon: <Icon icon=\"cover-image\" />,\n component: (\n <ActionBar\n updateState={updateState}\n state={state}\n value={value}\n setValue={setValue}\n />\n ),\n },\n ];\n\n return (\n <Modal\n title={\n type == \"edit\"\n ? __(\"Edit A Audio Preset\", \"presto-player\")\n : __(\"Create A New Audio Preset\", \"presto-player\")\n }\n onRequestClose={closeModal}\n className=\"presto-player__modal-presets\"\n overlayClassName=\"presto-player__modal-presets-overlay\"\n >\n <div className=\"presto-player__preset-options\" data-cy=\"preset-modal\">\n <TextControl\n value={thisName}\n hideLabelFromVision={true}\n label={__(\"Preset Name\", \"presto-player\")}\n onChange={(name) => setThisName(name)}\n placeholder={__(\"Enter a preset name...\", \"presto-player\")}\n className=\"presto-player__modal--style-name\"\n autoFocus\n />\n\n <Flex align=\"stretch\" className=\"presto-player__style-preview-area\">\n <FlexItem className=\"presto-player__style-sidebar\">\n <div>\n <Menu\n items={tabs}\n title={__(\"Customize\", \"presto-player\")}\n onSelect={setMenu}\n >\n {(item) => item.component}\n </Menu>\n </div>\n </FlexItem>\n <FlexBlock className=\"presto-player__style-preview-panel\">\n <div\n style={{ position: \"absolute\", top: 0, left: 0, padding: \"20px\" }}\n >\n <SelectControl\n label={__(\"Skin\", \"presto-player\")}\n labelPosition=\"side\"\n value={state?.skin}\n hideLabelFromVision={true}\n options={[\n { label: __(\"Basic\", \"presto-player\"), value: \"default\" },\n { label: __(\"Stacked\", \"presto-player\"), value: \"stacked\" },\n ]}\n onChange={(skin) => {\n updateState({ skin });\n }}\n />\n </div>\n {/*\n Disable the audio tag so the user clicking on it won't play the\n audio when the controls are enabled.\n\t\t\t\t*/}\n\n <Preview\n poster={attributes.poster}\n src={attributes.src}\n state={state}\n branding={branding}\n menu={menu}\n mediaTitle={attributes.title}\n />\n </FlexBlock>\n </Flex>\n\n <br />\n\n {error && (\n <BaseControl>\n <Notice\n className=\"presto-player__modal--error-notice\"\n status=\"error\"\n isDismissible={false}\n style={{ margin: 0 }}\n >\n {error.replace(/(<([^>]+)>)/gi, \"\")}\n </Notice>\n </BaseControl>\n )}\n <div\n css={css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n `}\n >\n <div\n css={css`\n opacity: 0.5;\n font-size: 12px;\n `}\n >\n Preset ID: {preset.id}\n </div>\n <div>\n <Button isTertiary onClick={closeModal} style={{ margin: \"0 6px\" }}>\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n <Button\n isPrimary\n isBusy={loading}\n disabled={loading}\n onClick={save}\n data-cy=\"submit-preset\"\n >\n {type == \"edit\"\n ? __(\"Update Preset\", \"presto-player\")\n : __(\"Create Preset\", \"presto-player\")}\n </Button>\n </div>\n </div>\n </div>\n </Modal>\n );\n}\nexport default EditPlayerPreset;\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { Icon, Spinner, Modal, Button, ButtonGroup } = wp.components;\nconst { useState } = wp.element;\n\nexport default function ({\n preset,\n index,\n isActive,\n remove,\n setPreset,\n onEdit,\n}) {\n const [loading, setLoading] = useState(false);\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n const openConfirm = () => setConfirmOpen(true);\n const closeConfirm = () => setConfirmOpen(false);\n\n const untrashPreset = async () => {};\n\n const trashPreset = async () => {\n // remove unsaved\n if (!preset.id) {\n remove(preset);\n return;\n }\n\n try {\n setLoading(true);\n let deleted = await wp.apiFetch({\n method: \"POST\",\n url: wp.url.addQueryArgs(\n `${prestoPlayer.root}${prestoPlayer.prestoVersionString}audio-preset/${preset.id}`,\n { _method: \"DELETE\" }\n ),\n });\n if (deleted) {\n remove(preset);\n wp.data.dispatch(\"core/notices\").createNotice(\n \"success\", // Can be one of: success, info, warning, error.\n __(\"Preset trashed.\", \"presto-player\"),\n {\n type: \"snackbar\",\n isDismissible: true,\n // actions: [\n // {\n // label: __(\"Undo\", \"presto-player\"),\n // onClick: () => {\n // console.log(\"untrash\");\n // },\n // },\n // ],\n }\n );\n }\n } catch (e) {\n console.error(e);\n if (e?.message) {\n wp.data.dispatch(\"core/notices\").createNotice(\n \"error\", // Can be one of: success, info, warning, error.\n e.message,\n {\n type: \"snackbar\",\n isDismissible: true, // Whether the user can dismiss the notice.\n }\n );\n }\n } finally {\n setConfirmOpen(false);\n setLoading(false);\n }\n };\n\n if (loading) {\n return (\n <div\n className=\"block-editor-block-styles__item\"\n role=\"button\"\n tabIndex={index}\n aria-label=\"Fill\"\n style={{ color: isActive ? \"var(--wp-admin-theme-color)\" : \"inherit\" }}\n >\n <div\n className=\"block-editor-block-styles__item-preview\"\n style={{\n border: isActive\n ? \"2px solid var(--wp-admin-theme-color)\"\n : \"2px solid #e3e3e3\",\n margin: 0,\n display: \"flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\",\n }}\n >\n <Spinner />\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`block-editor-block-styles__item presto-preset-${preset.slug}`}\n onClick={() => {\n setPreset(preset);\n }}\n role=\"button\"\n tabIndex={index}\n aria-label=\"Fill\"\n style={{ color: isActive ? \"var(--wp-admin-theme-color)\" : \"inherit\" }}\n >\n <div\n className=\"block-editor-block-styles__item-preview\"\n style={{\n border: isActive\n ? \"2px solid var(--wp-admin-theme-color)\"\n : \"2px solid #e3e3e3\",\n margin: 0,\n }}\n >\n <div\n style={{\n textAlign: \"center\",\n width: \"100%\",\n color: isActive ? \"var(--wp-admin-theme-color)\" : \"inherit\",\n opacity: isActive ? 1 : 0.75,\n }}\n >\n {preset?.icon ? (\n <Icon\n icon={preset?.icon}\n style={{\n fontSize: \"30px\",\n width: \"30px\",\n height: \"30px\",\n }}\n />\n ) : (\n <h1 style={{ opacity: 0.75 }}>\n {preset?.name?.charAt(0)?.toUpperCase() || \"Untitled\"}\n </h1>\n )}\n </div>\n </div>\n <div\n className=\"block-editor-block-styles__item-label\"\n style={{ fontWeight: \"bold\", textTransform: \"capitalize\" }}\n >\n {preset?.name || \"Untitled\"}\n </div>\n\n {!preset?.is_locked && (\n <div className=\"block-editor-block-styles__item-edit\">\n <div\n className=\"block-editor-block-styles__item-edit-icon\"\n onClick={onEdit}\n >\n <Icon icon=\"edit\" />\n </div>\n <div\n className=\"block-editor-block-styles__item-edit-icon\"\n onClick={openConfirm}\n >\n <Icon icon=\"trash\" />\n </div>\n </div>\n )}\n\n {confirmOpen && (\n <Modal\n title={__(\"Trash Preset?\", \"presto-player\")}\n onRequestClose={closeConfirm}\n style={{ maxWidth: \"250px\" }}\n >\n <p>\n <strong>{__(\"Warning!\", \"presto-player\")} </strong>\n {__(\n \"Any audios assigned to this preset will automatically use the default preset.\",\n \"presto-player\"\n )}\n </p>\n\n <ButtonGroup>\n <Button\n isDestructive\n onClick={trashPreset}\n style={{ margin: \"0 4px\" }}\n >\n {__(\"Trash\", \"presto-player\")}\n </Button>\n <Button\n isTertiary\n onClick={closeConfirm}\n style={{ margin: \"0 4px\", boxShadow: \"none\" }}\n >\n {__(\"Cancel\", \"presto-player\")}\n </Button>\n </ButtonGroup>\n </Modal>\n )}\n </div>\n );\n}\n","/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { withNotices, BaseControl, Spinner, Button } = wp.components;\nconst { useState, useEffect } = wp.element;\nconst { useSelect, dispatch } = wp.data;\n\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\nimport EditPreset from \"./Edit\";\nimport Preset from \"./Preset\";\n\nfunction PlayerPresets({ attributes, setAttributes }) {\n // modal\n const [modal, setModal] = useState(false);\n const openModal = (type) => setModal(type);\n const closeModal = () => setModal(false);\n const [presetData, setPresetData] = useState(null);\n const [name, setName] = useState(null);\n\n // preset data\n // preset data\n const { presets, loading } = useSelect((select) => {\n return {\n presets: select(\"presto-player/player\").getAudioPresets(),\n loading: select(\"presto-player/player\").isResolving(\"getAudioPresets\"),\n };\n });\n\n // preset actions\n const addPreset = (preset) => {\n dispatch(\"presto-player/player\").addAudioPreset(preset);\n };\n const updatePreset = (preset) => {\n dispatch(\"presto-player/player\").updateAudioPreset(preset);\n };\n const removePreset = (preset) => {\n dispatch(\"presto-player/player\").removeAudioPreset(preset);\n };\n\n // set this preset id\n const setPreset = (preset) => {\n setAttributes({ preset: preset.id });\n };\n\n if (loading) {\n return (\n <div className=\"presto-settings__loading\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <>\n {presets.length ? (\n <p>\n {__(\n \"Select a audio configuration preset, or add your own.\",\n \"presto-player\"\n )}\n </p>\n ) : (\n \"\"\n )}\n\n <BaseControl>\n <div className=\"block-editor-block-styles\">\n {(presets || []).length\n ? presets.map((preset, i) => {\n return (\n <Preset\n setPreset={setPreset}\n index={i}\n isActive={attributes?.preset === preset.id}\n preset={preset}\n key={preset.id}\n onEdit={() => {\n setName(preset.name);\n setPresetData(preset);\n setModal(\"edit\");\n }}\n remove={removePreset}\n />\n );\n })\n : __(\n \"No style presets. You can create a new style by clicking 'Add New Style'.\",\n \"presto-plugin\"\n )}\n </div>\n </BaseControl>\n <BaseControl>\n <Button\n isPrimary\n data-cy=\"add-new-preset\"\n onClick={() => {\n if (!prestoPlayer?.isPremium) {\n dispatch(\"presto-player/player\").setProModal(true);\n return;\n }\n openModal(\"new\");\n }}\n >\n {__(\"Add New Preset\", \"presto-player\")}\n </Button>\n {!prestoPlayer?.isPremium && <ProBadge />}\n </BaseControl>\n {modal == \"new\" && (\n <EditPreset\n closeModal={closeModal}\n addPreset={addPreset}\n type=\"new\"\n onSave={setPreset}\n attributes={attributes}\n />\n )}\n {modal == \"edit\" && (\n <EditPreset\n closeModal={closeModal}\n addPreset={addPreset}\n updatePreset={updatePreset}\n type=\"edit\"\n preset={presetData}\n name={name}\n attributes={attributes}\n />\n )}\n </>\n );\n}\n\nexport default withNotices(PlayerPresets);\n","import { __ } from \"@wordpress/i18n\";\nimport VideoBranding from \"@/admin/blocks/shared/branding\";\nimport {\n Button,\n PanelBody,\n BaseControl,\n ToggleControl,\n PanelRow,\n SelectControl,\n Flex,\n Icon,\n TextControl,\n FlexBlock,\n} from \"@wordpress/components\";\nimport { useInstanceId } from \"@wordpress/compose\";\nimport { MediaUpload, MediaUploadCheck } from \"@wordpress/block-editor\";\nimport VideoChapters from \"@/admin/blocks/shared/chapters\";\nimport ProBadge from \"@/admin/blocks/shared/components/ProBadge\";\nimport AudioPresets from \"@/admin/blocks/shared/audioPresets\";\n\nconst AUDIO_POSTER_ALLOWED_MEDIA_TYPES = [\"image\"];\n\nfunction AudioBlockInspectorControl({ attributes, setAttributes }) {\n const instanceId = useInstanceId(AudioBlockInspectorControl);\n const audioPosterDescription = `audio-block__poster-image-description-${instanceId}`;\n\n const { autoplay, poster, preload, title } = attributes;\n\n function onSelectPoster(image) {\n setAttributes({ poster: image.url });\n }\n function onRemovePoster() {\n setAttributes({ poster: \"\" });\n }\n return (\n <>\n <PanelBody\n title={<>{__(\"Title\", \"presto-player\")} </>}\n initialOpen={true}\n >\n <FlexBlock>\n <TextControl\n className={\"presto-player__caption--title\"}\n placeholder={__(\"Title\", \"presto-player\")}\n value={title || \"\"}\n onChange={(title) => setAttributes({ title: title })}\n autoComplete=\"off\"\n />\n </FlexBlock>\n </PanelBody>\n\n {/* Chapters */}\n <PanelBody\n title={\n <>\n {__(\"Chapters\", \"presto-player\")}{\" \"}\n {!prestoPlayer?.isPremium && <ProBadge />}\n </>\n }\n initialOpen={prestoPlayer?.isPremium}\n >\n <VideoChapters setAttributes={setAttributes} attributes={attributes} />\n </PanelBody>\n\n <PanelBody title={<>{__(\"Audio Settings\", \"presto-player\")} </>}>\n {/* Autoplay Settings */}\n <ToggleControl\n label={<>{__(\"Autoplay\", \"presto-player\")} </>}\n checked={autoplay}\n onChange={(autoplay) => {\n setAttributes({ autoplay });\n }}\n />\n\n {/* Performance Preference */}\n <PanelRow>\n <SelectControl\n label={\n <Flex>\n <div>{__(\"Performance Preference\", \"presto-player\")}</div>\n <a\n href=\"https://prestoplayer.com/docs/performance-preferences-explained\"\n target=\"_blank\"\n style={{ textDecoration: \"none\" }}\n >\n <Icon icon=\"editor-help\" />\n </a>\n </Flex>\n }\n className=\"presto-setting__preload\"\n value={preload}\n onChange={(value) => setAttributes({ preload: value })}\n options={[\n {\n value: \"auto\",\n label: __(\"Audio Playback Speed\", \"presto-player\"),\n },\n {\n value: \"metadata\",\n label: __(\"Page Load Speed\", \"presto-player\"),\n },\n {\n value: \"none\",\n label: __(\"Page Load Speed (Extreme)\", \"presto-player\"),\n },\n ]}\n />\n </PanelRow>\n\n {/* Poster Image */}\n <MediaUploadCheck>\n <BaseControl className=\"editor-video-poster-control\">\n <BaseControl.VisualLabel>\n <p>{__(\"Poster image\", \"presto-player\")}</p>\n </BaseControl.VisualLabel>\n <MediaUpload\n title={__(\"Select poster image\", \"presto-player\")}\n onSelect={onSelectPoster}\n allowedTypes={AUDIO_POSTER_ALLOWED_MEDIA_TYPES}\n render={({ open }) => (\n <Button\n className=\"presto-setting__poster\"\n isPrimary\n onClick={open}\n aria-describedby={audioPosterDescription}\n >\n {!poster\n ? __(\"Select\", \"presto-player\")\n : __(\"Replace\", \"presto-player\")}\n </Button>\n )}\n />\n <p id={audioPosterDescription} hidden>\n {poster\n ? sprintf(\n __(\"The current poster image url is %s\", \"presto-player\"),\n poster\n )\n : __(\n \"There is no poster image currently selected\",\n \"presto-player\"\n )}\n </p>\n {!!poster && (\n <Button\n onClick={onRemovePoster}\n className=\"presto-setting__remove-poster\"\n isTertiary\n >\n {__(\"Remove\", \"presto-player\")}\n </Button>\n )}\n </BaseControl>\n </MediaUploadCheck>\n </PanelBody>\n\n {/* Audio Presets */}\n <PanelBody title={__(\"Audio Preset\", \"presto-player\")}>\n <AudioPresets setAttributes={setAttributes} attributes={attributes} />\n </PanelBody>\n\n {/* Global Branding */}\n <PanelBody\n title={<>{__(\"Global Player Branding\", \"presto-player\")}</>}\n initialOpen={false}\n >\n <VideoBranding\n setAttributes={setAttributes}\n attributes={attributes}\n type=\"audio\"\n />\n </PanelBody>\n </>\n );\n}\n\nexport default AudioBlockInspectorControl;\n","/**\n * WordPress dependencies\n */\n\nimport { createHigherOrderComponent } from \"@wordpress/compose\";\nimport { useEffect, useState } from \"@wordpress/element\";\nimport { dispatch } from \"@wordpress/data\";\nimport { usePrevious } from \"@/admin/blocks/util\";\nimport { __ } from \"@wordpress/i18n\";\nimport apiFetch from \"@/shared/services/fetch\";\n\n/**\n * Higher order component factory for injecting the editor colors as the\n * `colors` prop in the `withColors` HOC.\n *\n * @return {Function} The higher order component.\n */\nexport default () =>\n createHigherOrderComponent(\n (WrappedComponent) => (props) => {\n const {\n presets,\n attributes,\n setAttributes,\n defaultPreset,\n isSelected,\n branding,\n } = props;\n const [presetData, setPresetData] = useState({});\n const [count, setCount] = useState(1);\n let { poster, chapters } = attributes;\n\n useEffect(() => {\n if (isSelected && attributes?.id) {\n dispatch(\"core/edit-post\").openGeneralSidebar(\"edit-post/block\");\n }\n }, [isSelected]);\n\n // don't allow selection if there is an override\n useEffect(() => {\n if (isSelected && attributes?.selectionOverrideClientId) {\n dispatch(\"core/block-editor\").selectBlock(\n attributes?.selectionOverrideClientId\n );\n }\n }, [isSelected]);\n\n // set preset data when presets are loaded\n useEffect(() => {\n if (presets && presets.length) {\n const thisPreset = presets.find((preset) => {\n return preset.id === attributes?.preset;\n });\n if (thisPreset) {\n setPresetData(thisPreset);\n } else {\n setPresetData(defaultPreset);\n setAttributes({ preset: defaultPreset?.id });\n }\n }\n }, [presets, attributes?.preset]);\n\n // re-render the player if presetdata, poster or chapters change\n useEffect(() => {\n onUpdate();\n }, [poster, presetData, chapters, branding.logo]);\n\n // increment update key\n const onUpdate = () => {\n setCount(count + 1);\n };\n\n // re-render only if times change\n const prevChapters = usePrevious(chapters);\n useEffect(() => {\n let times = chapters?.map((item) => item.time);\n let prevTimes = prevChapters?.map((item) => item.time);\n if (_.difference(times, prevTimes).length) {\n onUpdate();\n }\n }, [chapters]);\n\n const createVideo = async ({\n src,\n external_id,\n attachment_id,\n type,\n title,\n }) => {\n if (!src && !external_id && !attachment_id) {\n return;\n }\n const { id } = await apiFetch({\n method: \"POST\",\n path: \"/presto-player/v1/videos\",\n data: {\n attachment_id,\n post_id: wp.data.select(\"core/editor\").getCurrentPostId(),\n external_id,\n ...(title ? { title } : {}),\n src,\n type,\n },\n });\n setAttributes({ id });\n };\n\n const lock = () => {\n return dispatch(\"core/editor\").lockPostSaving(\"presto-player\");\n };\n\n const unlock = () => {\n return dispatch(\"core/editor\").unlockPostSaving(\"presto-player\");\n };\n\n function onRemoveSrc() {\n let r = confirm(__(\"Remove this\", \"presto-player\"));\n if (r) {\n setAttributes({\n src: \"\",\n id: undefined,\n });\n }\n }\n\n // make sure it's the default\n if (!attributes?.preset) {\n setAttributes({ preset: defaultPreset?.id });\n }\n\n return (\n <WrappedComponent\n {...props}\n lockSave={lock}\n unlockSave={unlock}\n createVideo={createVideo}\n onUpdate={onUpdate}\n onRemoveSrc={onRemoveSrc}\n presetData={presetData}\n setPresetData={setPresetData}\n renderKey={count}\n />\n );\n },\n \"withPlayerEdit\"\n );\n","const { withSelect } = wp.data;\n\nexport default function (props) {\n return withSelect((select) => {\n return {\n branding: select(\"presto-player/player\").branding(),\n loading: select(\"presto-player/player\").isResolving(\"getAudioPresets\"),\n presets: select(\"presto-player/player\").getAudioPresets(),\n defaultPreset: select(\"presto-player/player\").getDefaultAudioPreset(),\n };\n });\n}\n","import HostedAudioPlaceholder from \"./HostedAudioPlaceholder\";\nimport { InspectorControls, BlockControls } from \"@wordpress/editor\";\nimport AudioBlockInspectorControl from \"./AudioBlockInspectorControl\";\nimport Player from \"@/admin/blocks/shared/Player\";\nconst { compose } = wp.compose;\nimport withPlayerEdit from \"./with-player-edit\";\nimport withPlayerData from \"./with-player-data\";\nimport {\n Placeholder,\n Spinner,\n Disabled,\n withNotices,\n Toolbar,\n Button,\n} from \"@wordpress/components\";\nimport { __ } from \"@wordpress/i18n\";\n\nexport default compose([withPlayerData(), withPlayerEdit()])(\n withNotices(\n ({\n attributes,\n setAttributes,\n branding,\n presetData,\n renderKey,\n defaultPreset,\n lockSave,\n unlockSave,\n loading,\n createVideo,\n onRemoveSrc,\n }) => {\n const { poster, src, id } = attributes;\n\n const onSelectURL = (newUrl) => {\n setAttributes({\n ...attributes,\n src: newUrl,\n title: newUrl,\n preset: defaultPreset?.id,\n });\n lockSave();\n createVideo({\n src: newUrl,\n type: \"link\",\n })\n .catch((e) => {\n setAttributes({ src: \"\" });\n showNotice(e);\n })\n .finally(unlockSave);\n };\n // const tracks = ''\n function onSelectAudio(audio) {\n if (!audio || !audio.url) {\n // in this case there was an error\n // previous attributes should be removed\n // because they may be temporary blob urls\n setAttributes({ src: undefined, id: undefined });\n return;\n }\n // sets the block's attribute and updates the edit component from the\n // selected media\n if (audio.title) {\n setAttributes({\n src: audio.url,\n preset: defaultPreset?.id,\n title: audio.title,\n attachment_id: audio.id,\n });\n\n lockSave();\n createVideo({\n src: audio.url,\n type: \"attachment\",\n attachment_id: audio.id,\n })\n .catch((e) => {\n setAttributes({ src: \"\" });\n showNotice(e);\n })\n .finally(unlockSave);\n } else {\n setAttributes({\n src: audio.url,\n title: audio.url,\n preset: defaultPreset?.id,\n // attachment_id: audio.id,\n });\n }\n }\n\n if (!src) {\n return (\n <>\n <HostedAudioPlaceholder\n attributes={attributes}\n setAttributes={setAttributes}\n onSelectURL={onSelectURL}\n onSelect={onSelectAudio}\n ></HostedAudioPlaceholder>\n </>\n );\n }\n\n // loading presets still\n if (loading || !id) {\n return (\n <Placeholder className=\"presto-player__placeholder is-loading\">\n <Spinner />\n </Placeholder>\n );\n }\n\n return (\n <>\n <BlockControls>\n {/* <AudioTranscription\n attributes={attributes}\n tracks={tracks}\n onChange={(newTracks) => {\n setAttributes({ tracks: newTracks });\n }}\n /> */}\n <Toolbar>\n <Button onClick={() => onRemoveSrc()}>\n {__(\"Replace\", \"presto-player\")}\n </Button>\n </Toolbar>\n </BlockControls>\n\n {/* Enable InspectorControls */}\n <InspectorControls>\n <AudioBlockInspectorControl\n attributes={attributes}\n setAttributes={setAttributes}\n />\n </InspectorControls>\n\n <figure>\n {/*\n Disable the audio tag so the user clicking on it won't play the\n audio when the controls are enabled.\n */}\n <Disabled>\n <Player\n poster={poster}\n src={src}\n id={id}\n type={\"audio\"}\n attributes={attributes}\n setAttributes={setAttributes}\n preset={presetData}\n branding={branding}\n key={renderKey}\n />\n </Disabled>\n </figure>\n </>\n );\n }\n )\n);\n","import { __ } from \"@wordpress/i18n\";\nimport edit from \"./edit\";\nexport const name = \"presto-player/audio\";\n\nexport const options = {\n category: \"presto\",\n\n attributes: {\n src: {\n type: \"string\",\n },\n autoplay: {\n type: Boolean,\n default: false,\n },\n poster: {\n type: \"string\",\n },\n chapters: {\n type: \"array\",\n default: [],\n },\n preload: {\n type: \"string\",\n },\n title: {\n type: \"string\",\n },\n tracks: {\n type: \"array\",\n items: {\n type: \"object\",\n },\n default: [],\n },\n preset: {\n type: Number,\n },\n id: {\n type: Number,\n },\n attachment_id: {\n type: Number,\n },\n src: {\n type: String,\n },\n visibility: {\n type: String,\n default: \"public\",\n },\n },\n\n title: __(\"Presto Audio\", \"presto-player\"),\n\n description: __(\"A audio player wrapper.\", \"presto-player\"),\n\n variations: [\n {\n name: \"public\",\n isDefault: true,\n title: __(\"Presto Audio\", \"presto-player\"),\n description: __(\"Presto self-hosted audio block.\", \"presto-player\"),\n attributes: { visibility: \"public\" },\n },\n ...(prestoPlayer?.isPremium\n ? [\n {\n name: \"private\",\n title: __(\"Presto Private Audio\", \"presto-player\"),\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"presto-block-icon\"\n >\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\n </svg>\n ),\n description: __(\n \"Private self-hosted audio block.\",\n \"presto-player\"\n ),\n attributes: { visibility: \"private\" },\n },\n ]\n : []),\n ],\n\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n className=\"presto-block-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3\"\n />\n </svg>\n ),\n edit,\n};\n","const { combineReducers, dispatch } = wp.data;\nconst { apiFetch } = wp;\nconst { pick } = lodash;\n\n/**\n * Presets reducer\n *\n * @param {array} state\n * @param {object} action\n */\nconst presetReducer = (state = [], action) => {\n switch (action.type) {\n case \"SET_PRESET\":\n return action.value;\n case \"ADD_PRESET\":\n return [...state, ...[action.value]];\n case \"UPDATE_PRESET\":\n return state.map((item, index) => {\n if (item.id !== action.value?.id) {\n return item;\n }\n return {\n ...item,\n ...action.value,\n };\n });\n case \"REMOVE_PRESET\":\n return state.filter((item) => {\n return item !== action.value;\n });\n }\n return state;\n};\n\n/**\n * Presets reducer\n *\n * @param {array} state\n * @param {object} action\n */\n const audioPresetReducer = (state = [], action) => {\n switch (action.type) {\n case \"SET_AUDIO_PRESET\":\n return action.value;\n case \"SET_AUDIO_PRESET\":\n return action.value;\n case \"ADD_AUDIO_PRESET\":\n return [...state, ...[action.value]];\n case \"UPDATE_AUDIO_PRESET\":\n return state.map((item, index) => {\n if (item.id !== action.value?.id) {\n return item;\n }\n return {\n ...item,\n ...action.value,\n };\n });\n case \"REMOVE_AUDIO_PRESET\":\n return state.filter((item) => {\n return item !== action.value;\n });\n }\n return state;\n};\n\n/**\n * For preset loading\n *\n * @param {boolean} state\n * @param {object} action\n */\nconst presetLoadingReducer = (state = true, action) => {\n switch (action.type) {\n case \"SET_PRESET_LOADING\":\n return action.value;\n }\n};\n\n/**\n * For preset loading\n *\n * @param {boolean} state\n * @param {object} action\n */\nconst videosLoadingReducer = (state = true, action) => {\n switch (action.type) {\n case \"SET_VIDEOS_LOADING\":\n return action.value;\n }\n};\n\nconst proModalReducer = (state = false, action) => {\n switch (action.type) {\n case \"SET_PRO_MODAL\":\n return action.value;\n }\n};\n\nconst addVideo = (videos, video) => {\n // check for existing item\n const index = videos.find((e) => e.id === video.id);\n if (index) {\n return videos;\n }\n return [...videos, ...[video]];\n};\n\nconst videosReducer = (\n state = {\n total: 0,\n total_pages: 0,\n videos: [],\n hasResolved: false,\n isError: false,\n },\n action\n) => {\n switch (action.type) {\n case \"SET_VIDEOS\":\n return action.value;\n case \"UPDATE_VIDEOS\":\n return { ...state, ...action.value };\n case \"APPEND_VIDEOS\":\n let draft = state;\n (action.value || []).forEach((video) => {\n draft.videos = addVideo(draft.videos, video);\n });\n return draft;\n case \"ADD_VIDEO\":\n return { ...state, videos: addVideo(state.videos, action.value) };\n case \"UPDATE_VIDEO\":\n return {\n ...state,\n videos: state.videos.map((item, index) => {\n if (item.id !== action.value?.id) {\n return item;\n }\n return {\n ...item,\n ...action.value,\n };\n }),\n };\n case \"REMOVE_VIDEO\":\n return {\n ...state,\n videos: state.videos.filter((item) => {\n return item !== action.value;\n }),\n };\n }\n return state;\n};\n\n/**\n * Branding options are global and stored in settings\n * @param {object} state\n * @param {object} action\n */\nconst brandingReducer = (state = {}, action) => {\n switch (action.type) {\n case \"SET_BRANDING\":\n return action.value;\n case \"UPDATE_BRANDING\":\n return {\n ...state,\n [action.name]: action.value,\n };\n }\n return state;\n};\n\n/**\n * Youtube are global and stored in settings\n * @param {object} state\n * @param {object} action\n */\nconst youtubeReducer = (state = {}, action) => {\n switch (action.type) {\n case \"SET_YOUTUBE\":\n return action.value;\n case \"UPDATE_YOUTUBE\":\n return {\n ...state,\n [action.name]: action.value,\n };\n }\n return state;\n};\n\n/**\n * General are global and stored in settings\n * @param {object} state\n * @param {object} action\n */\nconst presetSettingsReducer = (state = {}, action) => {\n switch (action.type) {\n case \"SET_PRESET_SETTINGS\":\n return action.value;\n }\n return state;\n};\nconst audioPresetSettingsReducer = (state = {}, action) => {\n switch (action.type) {\n case \"SET_PRESET_AUDIO_SETTINGS\":\n return action.value;\n }\n return state;\n};\n/**\n * For fetching the options\n *\n * @param {object} state\n * @param {object} action\n */\nconst optionsApi = (state, action) => {\n switch (action.type) {\n /**\n * Fetch our options\n */\n case \"FETCH_OPTIONS\":\n return apiFetch({\n path: \"/presto-player/v1/settings/\",\n }).then((settings) => {\n dispatch(\"presto-player/player\").setBranding(\n settings.presto_player_branding\n );\n dispatch(\"presto-player/player\").setYoutube(\n settings.presto_player_youtube\n );\n dispatch(\"presto-player/player\").setPresetSettings(\n settings.presto_player_presets\n );\n dispatch(\"presto-player/play