diff --git a/API.md b/API.md index 4ac21b79..ce6586b2 100644 --- a/API.md +++ b/API.md @@ -86,8 +86,8 @@ build_playlist() | | Rebuild playlist. Shoul add_plane(plane, title, data) | boolean | Create an annotation plane (¹)(²)(³) remove_plane(plane) | boolean | Remove an annotation plane (¹)(²) add_point(plane, timecode, point, data) | boolean | Add an annotation point to a plane at a timecode (¹)(²)(⁴) -get_point(plane, point) | object | Return data for a point -edit_point(plane, point, data) | | Modify data for a point. Only existing keys from get_point() are updated +get_point(plane, point) | object | Return data for a point (³) +edit_point(plane, point, data) | | Modify data for a point (³). Only existing keys from get_point() are updated remove_point(plane, point) | boolean | Remove an annotation point (¹)(²) clear_plane(plane) | | Remove any points from an annotation plane (¹)(²) redraw_all_planes() | | Redraw any annotation planes and points diff --git a/dist/cpu-audio.js b/dist/cpu-audio.js index 113125ea..245fd108 100644 --- a/dist/cpu-audio.js +++ b/dist/cpu-audio.js @@ -10,10 +10,10 @@ License GNU GPL 3 - use case : http://cpu.pm - blog post : https://dascritch.net/post/2018/11/06/Reconstruire-son-lecteur-audio-pour-le-web */ -'use strict';let e,h;const k=(document._currentScript||document.currentScript).ownerDocument,p="poster actions timeline chapters panels panels-title panels-except-play".split(" "),q=/^[a-zA-Z0-9\-_]+$/,r=/^([a-zA-Z0-9\-_]+_\u00ab)([a-zA-Z0-9\-_]+)((\u00bb_.*_\u00ab)([a-zA-Z0-9\-_]+))?(\u00bb)$/,t={opentag:/<(\w+)(\.[^>]+)?( [^>]+)?>/gi,closetag:/<\/(\w+)( [^>]*)?>/gi,br:/\n/g},u={passive:!0};const v={fr:{loading:"Chargement en cours\u2026",pause:"Pause",play:"Lecture",canonical:"Lien vers la fiche du sonore",moment:"Lien vers ce moment",untitled:"(sans titre)",cover:"pochette",more:"Actions",share:"Partager",twitter:"Partager sur Twitter",facebook:"Partager sur Facebook",e_mail:"Partager par e-mail",download:"T\u00e9l\u00e9charger",back:"Annuler",chapters:"Chapitres",playlist:"Playlist",media_err_aborted:"Vous avez annul\u00e9 la lecture.",media_err_network:"Une erreur r\u00e9seau a caus\u00e9 l'interruption du t\u00e9l\u00e9chargement.", +'use strict';let e,h;const k=(document._currentScript||document.currentScript).ownerDocument,p="poster actions timeline chapters panels panels-title panels-except-play".split(" "),q=/^[a-zA-Z0-9\-_]+$/,r=/^([a-zA-Z0-9\-_]+_\u00ab)([a-zA-Z0-9\-_]+)((\u00bb_.*_\u00ab)([a-zA-Z0-9\-_]+))?(\u00bb)$/,t={opentag:/<(\w+)(\.[^>]+)?( [^>]+)?>/gi,closetag:/<\/(\w+)( [^>]*)?>/gi,br:/\n/g},v={passive:!0};const w={fr:{loading:"Chargement en cours\u2026",pause:"Pause",play:"Lecture",canonical:"Lien vers la fiche du sonore",moment:"Lien vers ce moment",untitled:"(sans titre)",cover:"pochette",more:"Actions",share:"Partager",twitter:"Partager sur Twitter",facebook:"Partager sur Facebook",e_mail:"Partager par e-mail",download:"T\u00e9l\u00e9charger",back:"Annuler",chapters:"Chapitres",playlist:"Playlist",media_err_aborted:"Vous avez annul\u00e9 la lecture.",media_err_network:"Une erreur r\u00e9seau a caus\u00e9 l'interruption du t\u00e9l\u00e9chargement.", media_err_decode:"La lecture du sonore a \u00e9t\u00e9 annul\u00e9e suite \u00e0 des probl\u00e8mes de corruption ou de fonctionnalit\u00e9s non support\u00e9s par votre navigateur.",media_err_src_not_supported:"Le sonore n'a pu \u00eatre charg\u00e9, soit \u00e0 cause de sourcis sur le serveur, le r\u00e9seau ou parce que le format n'est pas support\u00e9.",media_err_unknow:"Erreur due \u00e0 une raison inconnue."},en:{loading:"Loading\u2026",pause:"Pause",play:"Play",canonical:"Link to the sound's page", moment:"Link to this time",untitled:"(untitled)",cover:"cover",more:"Actions",share:"Share",twitter:"Share on Twitter",facebook:"Share on Facebook",e_mail:"Share via e-mail",download:"Download",back:"Back",chapters:"Chapters",playlist:"Playlist",media_err_aborted:"You have aborted the play.",media_err_network:"A network error broke the download.",media_err_decode:"Play was canceled due to file corruption or a not supported function in your browser.",media_err_src_not_supported:"The media cannot be downloaded due to server problems, network problems or unsupported by your browser.", -media_err_unknow:"Error of unknown cause."}};let x=document.querySelector("html").lang;if(!(x.length&&x.toLowerCase()in v)){x="en";let a=window.navigator.languages;a=void 0!==a?a:[navigator.language||navigator.browserLanguage];for(let b of a)if(b.split){let c=b.split("-")[0];c in v&&(x=c)}}const y=v[x];function z(){var a=document.createElement("style");a.innerHTML=' audio[controls] { display : block; width : 100%; } :root { --cpu-height : 64px; --cpu-font-family : Lato, "Open Sans", "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; --cpu-font-size : 15px; --cpu-font-small-size : calc(var(--cpu-font-size) * 0.8); --cpu-background : #555; --cpu-color : #ddd; --cpu-playing-background : #444; --cpu-playing-color : #fff; --cpu-error-background : #a00 ; --cpu-error-color : #ff7 ; --cpu-popup-background : #aaa; --cpu-popup-color : #333; --cpu-cue : #000; --cpu-elapse-width : 160px; --cpu-min-padding : 16px; --cpu-inner-shadow : inset 0px 5px 10px -5px black; --cpu-color-transitions : 0s; --cpu-background-transitions : 0s; --cpu-unfold : 0s; } @media (max-width: 640px) { :root , .interface { --cpu-font-size : 13px; --cpu-height : 48px; --cpu-elapse-width : 140px; --cpu-min-padding : 4px; } @media (max-width: 480px) { :root , .interface { --cpu-elapse-width : 70px; } }'; +media_err_unknow:"Error of unknown cause."}};let x=document.querySelector("html").lang;if(!(x.length&&x.toLowerCase()in w)){x="en";let a=window.navigator.languages;a=void 0!==a?a:[navigator.language||navigator.browserLanguage];for(let b of a)if(b.split){let c=b.split("-")[0];c in w&&(x=c)}}const y=w[x];function z(){var a=document.createElement("style");a.innerHTML=' audio[controls] { display : block; width : 100%; } :root { --cpu-height : 64px; --cpu-font-family : Lato, "Open Sans", "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; --cpu-font-size : 15px; --cpu-font-small-size : calc(var(--cpu-font-size) * 0.8); --cpu-background : #555; --cpu-color : #ddd; --cpu-playing-background : #444; --cpu-playing-color : #fff; --cpu-error-background : #a00 ; --cpu-error-color : #ff7 ; --cpu-popup-background : #aaa; --cpu-popup-color : #333; --cpu-cue : #000; --cpu-elapse-width : 160px; --cpu-min-padding : 16px; --cpu-inner-shadow : inset 0px 5px 10px -5px black; --cpu-color-transitions : 0s; --cpu-background-transitions : 0s; --cpu-unfold : 0s; } @media (max-width: 640px) { :root , .interface { --cpu-font-size : 13px; --cpu-height : 48px; --cpu-elapse-width : 140px; --cpu-min-padding : 4px; } @media (max-width: 480px) { :root , .interface { --cpu-elapse-width : 70px; } }'; document.head.appendChild(a);a=document.createElement("template");a.id="CPU__template";a.innerHTML=`
${y.share} ${y.twitter} ${y.facebook} ${y.e_mail} ${y.download} ${y.back}
`; document.head.appendChild(a)}null!==document.head?z():document.addEventListener("DOMContentLoaded",z,!1);function A(){}function B(a){"function"===typeof a&&a()}function D(a,b,c){c=void 0===c?document:c;Array.from(c.querySelectorAll(a)).forEach(b)}function E(a){let b=document.createElement("a");b.href="string"!==typeof a?a:a.split("#")[0];return b.href}function F(a){E(window.location.href)===E(a.target.href)&&a.preventDefault()}function G(a){a.addEventListener("click",F)}function H(a){let b=document.createElement("span");b.innerText=a;a=b.innerHTML;b.remove();return a} function I(a){window.console.warn("CPU-AUDIO: ",a)};const J={units:{d:86400,h:3600,m:60,s:1},_is_only_numeric:/^\d+$/,_any_not_numeric:/\D*/g,Infinity:"?",TimeInSeconds:function(a){let b=0;""!==a&&(b=J._is_only_numeric.test(a)?Number(a):-1===a.indexOf(":")?J.SubunitTimeInSeconds(a):J.ColonTimeInSeconds(a));return b},SubunitTimeInSeconds:function(a){let b=0;for(let c in J.units)J.units.hasOwnProperty(c)&&-1!==a.indexOf(c)&&(a=a.split(c),b+=Number(a[0].replace(J._any_not_numeric,""))*J.units[c],a=a[1]);return b},ColonTimeInSeconds:function(a){let b= @@ -51,26 +51,27 @@ a.download&&(b=a.download);if(a=this.audiotag.querySelector("source[data-downloa a?document.CPU.find_container(a.target):this).show_interface("main")}show_handheld_nav(a){let b=void 0!==a?document.CPU.find_container(a.target):this;document.CPU.is_audiotag_streamed(b.audiotag)||(b.container.classList.toggle("show-handheld-nav"),a.preventDefault())}inject_css(a,b){if(a.match(q)){this.remove_css(a);var c=document.createElement("style");c.id=`style_${a}`;c.innerHTML=b;this.container.appendChild(c)}else window.console.error("CPU-AUDIO: ",`inject_css invalid key "${a}"`)}remove_css(a){(a= this.container.querySelector(`#style_${a}`))&&a.remove()}add_id_to_audiotag(){""===this.audiotag.id&&(this.audiotag.id=document.CPU.dynamicallyAllocatedIdPrefix+String(document.CPU.count_element++))}complete_template(){let a=this.fetch_audiotag_dataset(),b=this.elements.canonical;b.href=a.canonical;null===a.title?(b.classList.add("untitled"),a.title=y.untitled):b.classList.remove("untitled");b.innerText=a.title;this.elements.poster.src=null===a.poster?"":a.poster;this.elements.time.style.backgroundImage= null===a.waveform?"":`url(${a.waveform})`}attach_audiotag_to_controller(a){a&&(this.audiotag=a,this.add_id_to_audiotag(),this.complete_template(),K.update({target:a}))}get_plane(a){return this.audiotag._CPU_planes[a]}get_plane_track(a){return this.elements.line.querySelector(`#track_\u00ab${a}\u00bb`)}get_plane_panel(a){return this.container.querySelector(`#panel_\u00ab${a}\u00bb`)}get_plane_nav(a){return(a=this.get_plane_panel(a))?a.querySelector("ul"):null}draw_plane(a){function b(m){m.addEventListener("mouseover", -f,u);m.addEventListener("focusin",f,u);m.addEventListener("mouseleave",g,u);m.addEventListener("focusout",g,u)}var c=this.get_plane_track(a);c&&c.remove();(c=this.get_plane_panel(a))&&c.remove();let d=this.get_plane(a);if(d){var f=K.preview_container_hover,g=this.remove_highlights_points.bind(this);!1!==d.track&&(c=document.createElement("aside"),c.id=`track_\u00ab${a}\u00bb`,!0!==d.track&&c.classList.add(d.track.split(" ")),this.elements.line.appendChild(c),b(c));if(!1!==d.panel){c=document.createElement("div"); +f,v);m.addEventListener("focusin",f,v);m.addEventListener("mouseleave",g,v);m.addEventListener("focusout",g,v)}var c=this.get_plane_track(a);c&&c.remove();(c=this.get_plane_panel(a))&&c.remove();let d=this.get_plane(a);if(d){var f=K.preview_container_hover,g=this.remove_highlights_points.bind(this);!1!==d.track&&(c=document.createElement("aside"),c.id=`track_\u00ab${a}\u00bb`,!0!==d.track&&c.classList.add(d.track.split(" ")),this.elements.line.appendChild(c),b(c));if(!1!==d.panel){c=document.createElement("div"); c.id=`panel_\u00ab${a}\u00bb`;!0!==d.panel&&c.classList.add(d.panel.split(" "));c.classList.add("panel");let m="";void 0!==d.title&&(m=`
${H(d.title)}
${m}`);c.innerHTML=m;this.container.appendChild(c);b(c)}"CPU-CONTROLLER"!==this.element.tagName&&null!==document.CPU.global_controller&&this.audiotag.isEqualNode(document.CPU.global_controller.audiotag)&&document.CPU.global_controller.draw_plane(a)}}add_plane(a,b,c){if("CPU-CONTROLLER"===this.element.tagName||!a.match(q)|| void 0!==this.get_plane(a))return!1;void 0===c&&(c={});void 0===this.audiotag._CPU_planes&&(this.audiotag._CPU_planes={});b={track:!0,panel:!0,title:b,highlight:!0,points:{}};for(let d in b)void 0===c[d]&&(c[d]=b[d]);this.audiotag._CPU_planes[a]=c;this.draw_plane(a);return!0}remove_plane(a){if("CPU-CONTROLLER"===this.element.tagName||!a.match(q)||void 0===this.audiotag._CPU_planes[a])return!1;this.audiotag&&delete this.audiotag._CPU_planes[a];let b=this.get_plane_track(a);b&&b.remove();(b=this.get_plane_panel(a))&& b.remove();"CPU-CONTROLLER"!==this.element.tagName&&null!==document.CPU.global_controller&&this.audiotag.isEqualNode(document.CPU.global_controller.audiotag)&&document.CPU.global_controller.draw_plane(a);return!0}get_point_id(a,b,c){return`${c?"panel":"track"}_\u00ab${a}\u00bb_point_\u00ab${b}\u00bb`}get_point(a,b){return this.audiotag._CPU_planes[a].points[b]}get_point_track(a,b){return this.elements.line.querySelector("#"+this.get_point_id(a,b,!1))}get_point_panel(a,b){return this.container.querySelector("#"+ -this.get_point_id(a,b,!0))}translate_vtt(a){let b={i:"i",em:"em",b:"b",bold:"strong",u:"u",lang:"i"};return(a.match(//g)||[]).length?H(a):a.replace(t.opentag,function(c,d,f,g){d=d.toLowerCase();if(!(d in b))return"";c="";"lang"===d&&(c=` lang="${g.trim()}"`);return`<${b[d]}${c}>`}).replace(t.closetag,function(c,d){d=d.toLowerCase();return d in b?``:""}).replace(t.br,"
")}plane_resort(a){this.audiotag._CPU_planes[a].points=Object.fromEntries(Object.entries(this.audiotag._CPU_planes[a].points).sort(function(b, -c){return b[1].start-c[1].start}))}draw_point(a,b){var c=this.get_point(a,b),d=c.start;let f=c.link,g="#",m=A;var l=`#${(this.audiotag?this.audiotag:document.CPU.global_controller.audiotag).id}&t=${d}`;!0===f&&(g=l);"string"===typeof f&&(g=f);if("function"===typeof f){let C=this;m=V=>{f(C,a,b);V.preventDefault()}}var w=this.get_plane_track(a);if(w){var n=this.get_point_track(a,b);let C=this.get_point_id(a,b,!1);n||(n=document.createElement("a"),n.id=C,n.tabIndex=-1,w.appendChild(n));n.href=l;n.title= -c.text;l="";c.image&&(l=``);l+=`${c.text}`;n.innerHTML=l;n.title=n.innerText;this.timeline_position(n,d,c.end)}if(l=this.get_plane_nav(a))n=this.get_point_panel(a,b),w=this.get_point_id(a,b,!0),n||(n=document.createElement("li"),n.id=w,n.innerHTML='',l.appendChild(n)),l="",c.text&&(l=c.text),n.querySelector("strong").innerHTML=l,c=n.querySelector("time"),c.dateTime=J.IsoDuration(d),c.innerText=J.SecondsInColonTime(d), -d=n.querySelector("a"),d.href=g,d.onclick=m;"CPU-CONTROLLER"!==this.element.tagName&&null!==document.CPU.global_controller&&this.audiotag.isEqualNode(document.CPU.global_controller.audiotag)&&document.CPU.global_controller.draw_point(a,b)}add_point(a,b,c,d){d=void 0===d?{}:d;if("CPU-CONTROLLER"===this.element.tagName||void 0===this.get_plane(a)||void 0!==this.get_point(a,c)||0>b||!c.match(q))return!1;d.start=b;this.audiotag._CPU_planes[a].points[c]=d;this.plane_resort(a);this.draw_point(a,c);return!0}edit_point(a, -b,c){let d=this.get_point(a,b);for(let f in d)f in c&&(d[f]=c[f]);this.audiotag._CPU_planes[a].points[b]=c;"start"in c&&this.plane_resort(a);this.draw_point(a,b)}remove_point(a,b){let c=this.get_point_track(a,b);if(!c)return!1;delete this.audiotag._CPU_planes[a].points[b];c.remove();this.get_point_panel(a,b).remove();"CPU-CONTROLLER"!==this.element.tagName&&null!==document.CPU.global_controller&&this.audiotag.isEqualNode(document.CPU.global_controller.audiotag)&&document.CPU.global_controller.remove_point(a, -b);return!0}get_point_names_from_id(a){let b=a.replace(r,"$2");a=a.replace(r,"$5");return[b,a]}clear_plane(a){let b=this.get_plane(a);if(!this.get_plane(a))return!1;for(let c of Object.keys(b.points))this.remove_point(a,c);a=this.get_plane_nav(a);null!==a&&(a.innerHTML="");return!0}refresh_plane(a){this.plane_resort(a);for(let b of Object.keys(this.audiotag._CPU_planes[a].points))this.draw_point(a,b)}undraw_all_planes(){D("aside, div.panel",a=>{a.remove()},this.container)}redraw_all_planes(){this.undraw_all_planes(); +this.get_point_id(a,b,!0))}translate_vtt(a){let b={i:"i",em:"em",b:"b",bold:"strong",u:"u",lang:"i"};return(a.match(//g)||[]).length?H(a):a.replace(t.opentag,function(c,d,f,g){d=d.toLowerCase();if(!(d in b))return"";c="";"lang"===d&&(c=` lang="${g.trim()}"`);return`<${b[d]}${c}>`}).replace(t.closetag,function(c,d){d=d.toLowerCase();return d in b?``:""}).replace(t.br,"
")}plane_resort(a){this.audiotag._CPU_planes[a].points=Object.fromEntries(Object.entries(this.audiotag._CPU_planes[a].points).sort((b, +c)=>b[1].start-c[1].start))}draw_point(a,b){var c=this.get_point(a,b),d=c.start;let f=c.link,g="#",m=A;var l=`#${(this.audiotag?this.audiotag:document.CPU.global_controller.audiotag).id}&t=${d}`;!0===f&&(g=l);"string"===typeof f&&(g=f);if("function"===typeof f){let V=this;m=W=>{f(V,a,b);W.preventDefault()}}var u=this.get_plane_track(a);if(u){var n=this.get_point_track(a,b),C=this.get_point_id(a,b,!1);n||(n=document.createElement("a"),n.id=C,n.tabIndex=-1,u.appendChild(n));n.href=l;n.title=c.text; +l="";c.image&&(l=``);l+=`${c.text}`;n.innerHTML=l;n.title=n.innerText;this.timeline_position(n,d,c.end)}if(l=this.get_plane_nav(a))n=this.get_point_panel(a,b),u=Number(c.start),n&&Number(n.dataset.start)!==u&&(n.remove(),n=!1),C=this.get_point_id(a,b,!0),n||(n=document.createElement("li"),n.id=C,n.innerHTML='',l.appendChild(n)),n.dataset.start=u,l="",c.text&&(l=c.text),n.querySelector("strong").innerHTML= +l,c=n.querySelector("time"),c.dateTime=J.IsoDuration(d),c.innerText=J.SecondsInColonTime(d),d=n.querySelector("a"),d.href=g,d.onclick=m;"CPU-CONTROLLER"!==this.element.tagName&&null!==document.CPU.global_controller&&this.audiotag.isEqualNode(document.CPU.global_controller.audiotag)&&document.CPU.global_controller.draw_point(a,b)}add_point(a,b,c,d){d=void 0===d?{}:d;if("CPU-CONTROLLER"===this.element.tagName||void 0===this.get_plane(a)||void 0!==this.get_point(a,c)||0>b||!c.match(q))return!1;d.start= +b;this.audiotag._CPU_planes[a].points[c]=d;this.audiotag._CPU_planes[a]._st_max>b?this.refresh_plane(a):(this.draw_point(a,c),this.audiotag._CPU_planes[a]._st_max=b);return!0}edit_point(a,b,c){let d=this.get_point(a,b),f=!1;"start"in c&&Number(c.start)!==d.start&&(f=!0);for(let g in d)g in c&&(d[g]=c[g]);this.audiotag._CPU_planes[a].points[b]=d;f?(this.clear_plane(a),this.refresh_plane(a)):this.draw_point(a,b);b=Number(c.start);this.audiotag._CPU_planes[a]._st_max{a.remove()},this.container)}redraw_all_planes(){this.undraw_all_planes(); for(let a of Object.keys(this.audiotag._CPU_planes))this.draw_plane(a),this.refresh_plane(a)}remove_highlights_points(a,b){b=void 0===b?!0:b;a="string"===typeof a?a:"with-preview";D(`.${a}`,c=>{c.classList.remove(a)},this.container);b&&null!==document.CPU.global_controller&&this.audiotag.isEqualNode(document.CPU.global_controller.audiotag)&&("CPU-CONTROLLER"!==this.element.tagName?document.CPU.global_controller.remove_highlights_points(a,!1):document.CPU.find_container(document.CPU.global_controller.audiotag).remove_highlights_points(a, !1))}highlight_point(a,b,c,d){d=void 0===d?!0:d;c="string"===typeof c?c:"with-preview";this.remove_highlights_points(c,d);var f=this.get_plane(a);f&&f.highlight&&(this.get_plane_track(a)&&(f=this.get_point_track(a,b))&&f.classList.add(c),this.get_plane_panel(a)&&(f=this.get_point_panel(a,b))&&f.classList.add(c),d&&null!==document.CPU.global_controller&&this.audiotag.isEqualNode(document.CPU.global_controller.audiotag)&&("CPU-CONTROLLER"!==this.element.tagName?document.CPU.global_controller.highlight_point(a, b,c,!1):document.CPU.find_container(document.CPU.global_controller.audiotag).highlight_point(a,b,c,!1)))}_cuechange_event(a){try{let b=a.target.activeCues[0];if(Object.is(b,this._activecue))return;this._activecue=b}catch(b){}K.cuechange(a,this.elements["interface"])}build_chapters(a){if("CPU-CONTROLLER"!==this.element.tagName){var b=this;void 0!==a&&(b=document.CPU.find_container(a.target),null===b&&window.console.error("CPU-AUDIO: ","Container CPU- not ready yet. WTF ?"));var c=b.audiotag;a=!1;if(c&& c.textTracks&&0${y.playlist}`;for(let b of this.current_playlist){let c=document.getElementById(b),d=document.createElement("a");d.classList.add("cue");b===this.audiotag.id&&d.classList.add("active-cue");d.href=`#${c.id}&t=0`;d.tabIndex=0;d.innerHTML=`${c.dataset.title}`;a.append(d)}}}}build_controller(){let a=this; -D("[id]",g=>{a.elements[g.id]=g},this.element.shadowRoot);this.elements.poster.addEventListener("load",()=>{a.elements["interface"].classList.add("poster-loaded")},u);var b={pause:K.play,play:K.pause,time:K.throbble,actions:this.show_actions,back:this.show_main,poster:this.show_main,restart:K.restart};for(var c in b)this.elements[c].addEventListener("click",b[c],u);b=["fastreward","reward","foward","fastfoward"];c={touchstart:!0,touchend:!1,touchcancel:!1,mousedown:!0,mouseup:!1,mouseleave:!1};for(var d of b)for(var f in c)this.elements[d].addEventListener(f, -c[f]?K._press_button:K._release_button);this.element.addEventListener("keydown",K.key);this.elements.control.addEventListener("keydown",K.keydownplay);d=this.elements.time;f={mouseover:!0,mousemove:!0,mouseout:!1,touchstart:!0,touchend:!1,touchcancel:!1};for(let g in f)d.addEventListener(g,f[g]?K.hover:K.out,u);d.addEventListener("touchstart",K.touchstart,u);d.addEventListener("touchend",K.touchcancel,u);d.addEventListener("contextmenu",this.show_handheld_nav);this.audiotag&&(this.show_main(),this.build_chapters_loader(), -this.audiotag.addEventListener("loadedmetadata",this.redraw_all_planes.bind(this),u))}};HTMLAudioElement.prototype.CPU_connected=!1;HTMLAudioElement.prototype.CPU_controller=function(){return this.closest("CPU-AUDIO")};HTMLAudioElement.prototype.CPU_update=function(){var a=this.CPU_controller();a&&(a=a.CPU)&&a.update&&a.update();null!==document.CPU.global_controller&&document.CPU.global_controller.update()};class T extends HTMLElement{constructor(){super();this.CPU=null;window.matchMedia("screen").matches?"CPU-AUDIO"===this.tagName&&null===this.querySelector("audio[controls]")?(I("Tag without