nexabase-report 0.28.48 → 0.28.49

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/NEXAREPORT.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- nexabase-report@0.28.48 — generado por scripts/gen-ai-context.mjs, no editar a mano -->
1
+ <!-- nexabase-report@0.28.49 — generado por scripts/gen-ai-context.mjs, no editar a mano -->
2
2
  # NexaReport — referencia para agentes de IA
3
3
 
4
4
  > Este archivo se genera desde los tipos TypeScript reales del paquete (`src/lib/types/report.ts`
@@ -281,10 +281,10 @@ El schema formal completo (todas las interfaces, no solo bandas/elementos) está
281
281
  `nexabase-report/schema`, así que es accesible sin instalar nada vía:
282
282
 
283
283
  ```
284
- https://unpkg.com/nexabase-report@0.28.48/schema/nexareport.schema.json
284
+ https://unpkg.com/nexabase-report@0.28.49/schema/nexareport.schema.json
285
285
  ```
286
286
 
287
- (cambia `@0.28.48` por `@latest` para la versión más reciente). Valida el JSON generado
287
+ (cambia `@0.28.49` por `@latest` para la versión más reciente). Valida el JSON generado
288
288
  contra ese schema antes de darlo por bueno — evita que un campo inventado llegue al usuario.
289
289
 
290
290
  Más ejemplos reales (subreportes, crosstab, master-detail, códigos de barras) en `examples/*.json`
@@ -883,6 +883,75 @@ desde el código. Nunca vas a recibir un JSON con un campo que ya no existe, o l
883
883
  <p>Pega el JSON resultante en el diseñador (<strong>Importar JSON</strong>) para revisarlo visualmente y ajustar
884
884
  posiciones, colores o binding fino — la IA arma la estructura, el diseñador es donde lo dejas
885
885
  exacto.</p>
886
+ `
887
+ },
888
+ {
889
+ id: "integracion-cdn",
890
+ title: "Publicar el visor en tu web (CDN)",
891
+ search: `cdn, jsdelivr, unpkg, embeber, integrar, cache, navegador, produccion, actualizar, script publicar el visor en tu web (cdn) si vas a mostrar <nexa viewer en un sitio externo sin pasar por un bundler, la forma más rápida es cargarlo desde un cdn público. hay una trampa con la que se han topado varios clientes: cargarlo mal hace que dejen de ver las correcciones que publicas. el problema: el navegador cachea la copia vieja un <script apuntando siempre a la misma url —sin número de versión— se cachea en el navegador de cada visitante hasta por 7 días . publicás un fix, el cdn ya lo tiene, pero el navegador del cliente sigue sirviendo su copia local vieja hasta que expire el caché o el usuario haga un refresco forzado (ctrl+shift+r). desde el diseñador no hay forma de "empujar" esa actualización: es una limitación del navegador, no de nexareport. html <! ❌ el navegador puede quedarse con esta copia hasta 7 días <script src="https://cdn.jsdelivr.net/npm/nexabase report/dist/nexabase report.umd.js" <\/script la solución: resolver la versión antes de cargar en vez de apuntar a la url sin versión, resolvé la última versión publicada (jsdelivr cachea esa consulta solo 10 segundos) y cargá el archivo desde la url versionada resultante. cada release usa una url distinta, así que el navegador no tiene forma de servir una copia vieja aunque quiera. html <nexa viewer id="viewer" minimal </nexa viewer <script fetch('https://data.jsdelivr.com/v1/packages/npm/nexabase report/resolved?specifier=latest') .then(r = r.json()) .then(({ version }) = { const css = document.createelement('link'); css.rel = 'stylesheet'; css.href = https://cdn.jsdelivr.net/npm/nexabase report@\${version}/dist/style.css ; const cssready = new promise(resolve = { css.onload = resolve; css.onerror = resolve; }); document.head.appendchild(css); const js = document.createelement('script'); js.src = https://cdn.jsdelivr.net/npm/nexabase report@\${version}/dist/nexabase report.umd.js ; const jsready = new promise(resolve = { js.onload = resolve; }); document.head.appendchild(js); // esperar los dos recursos, no solo el js: si el visor arranca a medir alturas de // página antes de que el css esté aplicado, la paginación sale mal (páginas de // menos, scroll roto) sin que salte ningún error en consola. promise.all([cssready, jsready]).then(() = { nexareport.registernexareport(); const viewer = document.getelementbyid('viewer'); viewer.definition = { / json del reporte / }; viewer.data = [ / datos / ]; }); }); <\/script no hace falta fijar el número de versión a mano ni editar nada en cada release: la resolución siempre trae la última publicada, y el navegador solo se ve obligado a bajarla de nuevo cuando efectivamente cambió. importante: esperá siempre los dos recursos (css y js) antes de inicializar el visor. si solo esperás el <script y dejás que el <link cargue en paralelo sin que nadie lo espere, en redes donde el css tarda más que el js (por ejemplo, el js ya en caché de una visita anterior y el css no) el visor puede arrancar a medir alturas de página antes de que el estilo esté aplicado — un candidato plausible para un reporte que de repente muestra una sola página sin ningún error en consola. si ya integraste con la url sin versión cambiar tu propio código al patrón de arriba resuelve el problema hacia adelante. para los usuarios que ya cargaron la versión vieja antes del cambio, no hay forma de purgar su caché de forma remota: necesitan un refresco forzado una única vez.`,
892
+ element: "",
893
+ html: `<h1>Publicar el visor en tu web (CDN)</h1>
894
+ <p>Si vas a mostrar <code>&lt;nexa-viewer&gt;</code> en un sitio externo sin pasar por un bundler, la forma más rápida
895
+ es cargarlo desde un CDN público. Hay una trampa con la que se han topado varios clientes: cargarlo
896
+ mal hace que dejen de ver las correcciones que publicas.</p>
897
+ <h2>El problema: el navegador cachea la copia vieja</h2>
898
+ <p>Un <code>&lt;script&gt;</code> apuntando siempre a la misma URL —sin número de versión— se cachea en el navegador de
899
+ cada visitante hasta por <strong>7 días</strong>. Publicás un fix, el CDN ya lo tiene, pero el navegador del
900
+ cliente sigue sirviendo su copia local vieja hasta que expire el caché o el usuario haga un refresco
901
+ forzado (Ctrl+Shift+R). Desde el diseñador no hay forma de &quot;empujar&quot; esa actualización: es una
902
+ limitación del navegador, no de NexaReport.</p>
903
+ <pre><code class="language-html">&lt;!-- ❌ El navegador puede quedarse con esta copia hasta 7 días --&gt;
904
+ &lt;script src=&quot;https://cdn.jsdelivr.net/npm/nexabase-report/dist/nexabase-report.umd.js&quot;&gt;&lt;/script&gt;
905
+ </code></pre>
906
+ <h2>La solución: resolver la versión antes de cargar</h2>
907
+ <p>En vez de apuntar a la URL sin versión, resolvé la última versión publicada (jsDelivr cachea esa
908
+ consulta solo 10 segundos) y cargá el archivo desde la URL versionada resultante. Cada release usa
909
+ una URL distinta, así que el navegador no tiene forma de servir una copia vieja aunque quiera.</p>
910
+ <pre><code class="language-html">&lt;nexa-viewer id=&quot;viewer&quot; minimal&gt;&lt;/nexa-viewer&gt;
911
+
912
+ &lt;script&gt;
913
+ fetch(&#39;https://data.jsdelivr.com/v1/packages/npm/nexabase-report/resolved?specifier=latest&#39;)
914
+ .then(r =&gt; r.json())
915
+ .then(({ version }) =&gt; {
916
+ const css = document.createElement(&#39;link&#39;);
917
+ css.rel = &#39;stylesheet&#39;;
918
+ css.href = \`https://cdn.jsdelivr.net/npm/nexabase-report@\${version}/dist/style.css\`;
919
+ const cssReady = new Promise(resolve =&gt; { css.onload = resolve; css.onerror = resolve; });
920
+ document.head.appendChild(css);
921
+
922
+ const js = document.createElement(&#39;script&#39;);
923
+ js.src = \`https://cdn.jsdelivr.net/npm/nexabase-report@\${version}/dist/nexabase-report.umd.js\`;
924
+ const jsReady = new Promise(resolve =&gt; { js.onload = resolve; });
925
+ document.head.appendChild(js);
926
+
927
+ // Esperar los DOS recursos, no solo el JS: si el visor arranca a medir alturas de
928
+ // página antes de que el CSS esté aplicado, la paginación sale mal (páginas de
929
+ // menos, scroll roto) sin que salte ningún error en consola.
930
+ Promise.all([cssReady, jsReady]).then(() =&gt; {
931
+ NexaReport.registerNexaReport();
932
+
933
+ const viewer = document.getElementById(&#39;viewer&#39;);
934
+ viewer.definition = { /* JSON del reporte */ };
935
+ viewer.data = [ /* datos */ ];
936
+ });
937
+ });
938
+ &lt;/script&gt;
939
+ </code></pre>
940
+ <p>No hace falta fijar el número de versión a mano ni editar nada en cada release: la resolución
941
+ siempre trae la última publicada, y el navegador solo se ve obligado a bajarla de nuevo cuando
942
+ efectivamente cambió.</p>
943
+ <blockquote>
944
+ <p><strong>Importante:</strong> esperá siempre los dos recursos (CSS y JS) antes de inicializar el visor. Si
945
+ solo esperás el <code>&lt;script&gt;</code> y dejás que el <code>&lt;link&gt;</code> cargue en paralelo sin que nadie lo espere,
946
+ en redes donde el CSS tarda más que el JS (por ejemplo, el JS ya en caché de una visita anterior
947
+ y el CSS no) el visor puede arrancar a medir alturas de página antes de que el estilo esté
948
+ aplicado — un candidato plausible para un reporte que de repente muestra una sola página sin
949
+ ningún error en consola.</p>
950
+ </blockquote>
951
+ <h2>Si ya integraste con la URL sin versión</h2>
952
+ <p>Cambiar tu propio código al patrón de arriba resuelve el problema hacia adelante. Para los usuarios
953
+ que ya cargaron la versión vieja antes del cambio, no hay forma de purgar su caché de forma remota:
954
+ necesitan un refresco forzado una única vez.</p>
886
955
  `
887
956
  }
888
957
  ];
@@ -1,5 +1,5 @@
1
- import { g as Nl, c as ut, d as Vl } from "./index-BExMmJUt.js";
2
- import { j as Xl } from "./jspdf.es.min-miF7naN5.js";
1
+ import { g as Nl, c as ut, d as Vl } from "./index-CNxyint1.js";
2
+ import { j as Xl } from "./jspdf.es.min-Cvx4ls2L.js";
3
3
  function Jl(Pe, br) {
4
4
  for (var fe = 0; fe < br.length; fe++) {
5
5
  const HA = br[fe];