discovery-media-player 0.1.53 → 0.1.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/handler.js +53 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discovery-media-player",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.54",
|
|
4
4
|
"description": "Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the application hosting it — everything it borrows arrives through an injected context.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pdf-viewer",
|
package/server/handler.js
CHANGED
|
@@ -2708,6 +2708,18 @@ function presentHtml(pres, nonce, logoUrl, supaUrl, supaKey) {
|
|
|
2708
2708
|
if(!PDF) return;
|
|
2709
2709
|
n=Math.max(1,Math.min(total||1, n||1)); cur=n;
|
|
2710
2710
|
var c=document.getElementById('cur'); if(c)c.textContent=n;
|
|
2711
|
+
// Une image tient sur une page : on la pose, ajustée au cadre, et le reste de la vue —
|
|
2712
|
+
// synchronisation, présence, chat — continue de fonctionner à l identique.
|
|
2713
|
+
if(PDF.image){
|
|
2714
|
+
var pgi=document.getElementById('page'); if(!pgi) return;
|
|
2715
|
+
var dispoW=Math.max(120, stage.clientWidth-40), dispoH=Math.max(120, stage.clientHeight-40);
|
|
2716
|
+
var ech=Math.min(dispoW/(PDF.image.naturalWidth||1), dispoH/(PDF.image.naturalHeight||1), 1);
|
|
2717
|
+
var el=PDF.image.cloneNode(false);
|
|
2718
|
+
el.style.width=Math.round((PDF.image.naturalWidth||1)*ech)+'px';
|
|
2719
|
+
el.style.height='auto'; el.style.display='block';
|
|
2720
|
+
pgi.innerHTML=''; pgi.appendChild(el);
|
|
2721
|
+
return;
|
|
2722
|
+
}
|
|
2711
2723
|
PDF.getPage(n).then(function(page){
|
|
2712
2724
|
var availW=Math.max(120, stage.clientWidth-40), availH=Math.max(120, stage.clientHeight-40);
|
|
2713
2725
|
var v1=page.getViewport({scale:1});
|
|
@@ -2726,7 +2738,48 @@ function presentHtml(pres, nonce, logoUrl, supaUrl, supaKey) {
|
|
|
2726
2738
|
pdfjsLib.GlobalWorkerOptions.workerSrc=u; load();
|
|
2727
2739
|
}).catch(function(){ window.__workerRefuse=1; var _e=document.getElementById('pg'); if(_e)_e.textContent="Document non affiche : une dependance n a pas pu etre verifiee."; });
|
|
2728
2740
|
}
|
|
2741
|
+
// ⚠️ UNE PRÉSENTATION PEUT PORTER UNE IMAGE, ET CETTE VUE NE LE SAVAIT PAS. Le bouton
|
|
2742
|
+
// Présenter s apparait sans condition sur le type de document : un présentateur qui regarde un
|
|
2743
|
+
// PNG peut donc le présenter, et son audience recevait une page qui appelait pdf.js sur une
|
|
2744
|
+
// image — « Document indisponible ». Un bouton qui mène à une page morte est pire qu un bouton
|
|
2745
|
+
// absent.
|
|
2746
|
+
//
|
|
2747
|
+
// Ce n est PAS une régression du refus de worker : ce chemin était muet bien avant, et
|
|
2748
|
+
// personne ne l avait vu parce qu on ne présente pas souvent une image. Trouvé par le second
|
|
2749
|
+
// hôte, en POSANT LA QUESTION là où nous aurions affirmé — sa vue à lui sert des images, il a
|
|
2750
|
+
// demandé si la nôtre pouvait en recevoir.
|
|
2751
|
+
// ⚠️ Évalué AU CHARGEMENT, pas à l analyse du script : posé en constante de haut niveau, il
|
|
2752
|
+
// s exécutait avant que tout soit en place et emportait le reste du bloc avec lui — le
|
|
2753
|
+
// gestionnaire d état n était plus exposé, et la couche live ne pouvait plus se brancher. Un
|
|
2754
|
+
// essai l a dit tout de suite. Une question posée au bon moment ne coûte rien ; posée trop tôt,
|
|
2755
|
+
// elle emporte ce qui vient après.
|
|
2756
|
+
// ⚠️ SUR L URL D ORIGINE, JAMAIS SUR L URL DE PROXY. Premier jet : je passais
|
|
2757
|
+
// CFG.fileUrl, qui vaut /api/doc?present=...&file=1 — aucune extension, donc la réponse était
|
|
2758
|
+
// toujours « ce n est pas une image », et la page repartait sur pdf.js avec un PNG. Pire, un
|
|
2759
|
+
// try/catch posé par prudence avalait tout : la sonde n a rien vu jusqu à ce qu on lise le
|
|
2760
|
+
// sous-titre du loader, qui disait « Document indisponible ».
|
|
2761
|
+
//
|
|
2762
|
+
// Une garde défensive qui rend faux sur erreur ne protège pas, elle CACHE. Retirée.
|
|
2763
|
+
//
|
|
2764
|
+
// ⚠️ ET IL N Y A QU UNE SEULE CORRECTION ICI, alors que j en avais écrit deux. J avais aussi
|
|
2765
|
+
// ajouté le nom du fichier au cfg — chacune suffisait, donc aucune mutation ne pouvait faire
|
|
2766
|
+
// rougir le banc : retirer l une laissait l autre agir. Deux correctifs pour un symptôme
|
|
2767
|
+
// rendent un essai ininterprétable. Celle-ci est conservée parce qu elle ne change rien à ce
|
|
2768
|
+
// que la page reçoit ; retirer l URL d origine fait bien tomber le banc.
|
|
2769
|
+
function estImage(){ return Player.viewer.isImageDocument("", CFG.docUrl); }
|
|
2770
|
+
function chargerImage(){
|
|
2771
|
+
var im=new Image();
|
|
2772
|
+
im.onload=function(){
|
|
2773
|
+
total=1; ready=true; PDF={image:im};
|
|
2774
|
+
var tot=document.getElementById('tot'); if(tot)tot.textContent=1;
|
|
2775
|
+
show(1); hideLoader();
|
|
2776
|
+
if(!CFG.active) ended();
|
|
2777
|
+
};
|
|
2778
|
+
im.onerror=function(){ var l=document.getElementById('load'); if(l)l.querySelector('.lsub').textContent="Document indisponible."; };
|
|
2779
|
+
im.src=CFG.fileUrl;
|
|
2780
|
+
}
|
|
2729
2781
|
function load(){
|
|
2782
|
+
if(estImage()){ chargerImage(); return; }
|
|
2730
2783
|
pdfjsLib.getDocument({url:CFG.fileUrl,isEvalSupported:false}).promise.then(function(pdf){
|
|
2731
2784
|
PDF=pdf; total=pdf.numPages; ready=true;
|
|
2732
2785
|
var tot=document.getElementById('tot'); if(tot)tot.textContent=total;
|