@pretextbook/pretext-html 0.1.1 → 0.3.0

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.
Files changed (121) hide show
  1. package/README.md +82 -1
  2. package/assets/preview-html.xsl +0 -0
  3. package/assets/upstream.json +0 -0
  4. package/assets/xsl/README.md +0 -0
  5. package/assets/xsl/entities.ent +0 -0
  6. package/assets/xsl/extract-asymptote.xsl +0 -0
  7. package/assets/xsl/extract-biblio-csl.xsl +0 -0
  8. package/assets/xsl/extract-datafile.xsl +0 -0
  9. package/assets/xsl/extract-dynamic.xsl +0 -0
  10. package/assets/xsl/extract-identity.xsl +0 -0
  11. package/assets/xsl/extract-interactive.xsl +0 -0
  12. package/assets/xsl/extract-latex-image.xsl +0 -0
  13. package/assets/xsl/extract-mermaid.xsl +0 -0
  14. package/assets/xsl/extract-mom.xsl +0 -0
  15. package/assets/xsl/extract-pg.xsl +0 -0
  16. package/assets/xsl/extract-prefigure.xsl +0 -0
  17. package/assets/xsl/extract-qrcode.xsl +0 -0
  18. package/assets/xsl/extract-runestone-page-template.xsl +0 -0
  19. package/assets/xsl/extract-sageplot.xsl +0 -0
  20. package/assets/xsl/extract-stack.xsl +0 -0
  21. package/assets/xsl/extract-trace.xsl +0 -0
  22. package/assets/xsl/extract-youtube.xsl +0 -0
  23. package/assets/xsl/html-symbols.xsl +0 -0
  24. package/assets/xsl/latex/pretext-latex-AIM.xsl +0 -0
  25. package/assets/xsl/latex/pretext-latex-CLP.xsl +0 -0
  26. package/assets/xsl/latex/pretext-latex-chaos.xsl +0 -0
  27. package/assets/xsl/latex/pretext-latex-dyslexic-font.xsl +0 -0
  28. package/assets/xsl/latex/pretext-latex-guide.xsl +0 -0
  29. package/assets/xsl/latex/pretext-latex-texstyle.xsl +0 -0
  30. package/assets/xsl/localizations/README.md +0 -0
  31. package/assets/xsl/localizations/af-ZA.xml +0 -0
  32. package/assets/xsl/localizations/bg-BG.xml +0 -0
  33. package/assets/xsl/localizations/ca-ES.xml +0 -0
  34. package/assets/xsl/localizations/cs-CZ.xml +0 -0
  35. package/assets/xsl/localizations/de-DE.xml +0 -0
  36. package/assets/xsl/localizations/en-US.xml +0 -0
  37. package/assets/xsl/localizations/es-ES.xml +0 -0
  38. package/assets/xsl/localizations/fi-FI.xml +0 -0
  39. package/assets/xsl/localizations/fr-CA.xml +0 -0
  40. package/assets/xsl/localizations/fr-FR.xml +0 -0
  41. package/assets/xsl/localizations/hu-HU.xml +0 -0
  42. package/assets/xsl/localizations/it-IT.xml +0 -0
  43. package/assets/xsl/localizations/ku-CKB.xml +0 -0
  44. package/assets/xsl/localizations/localizations.xml +0 -0
  45. package/assets/xsl/localizations/nl-NL.xml +0 -0
  46. package/assets/xsl/localizations/pt-BR.xml +0 -0
  47. package/assets/xsl/localizations/pt-PT.xml +0 -0
  48. package/assets/xsl/localizations/zh-HANS.xml +0 -0
  49. package/assets/xsl/pretext-assembly.xsl +0 -0
  50. package/assets/xsl/pretext-basic-html.xsl +0 -0
  51. package/assets/xsl/pretext-beamer.xsl +0 -0
  52. package/assets/xsl/pretext-braille-preprint.xsl +0 -0
  53. package/assets/xsl/pretext-common.xsl +0 -0
  54. package/assets/xsl/pretext-dynamic.xsl +0 -0
  55. package/assets/xsl/pretext-epub.xsl +0 -0
  56. package/assets/xsl/pretext-fo.xsl +0 -0
  57. package/assets/xsl/pretext-html.xsl +0 -0
  58. package/assets/xsl/pretext-json-manifest.xsl +0 -0
  59. package/assets/xsl/pretext-jupyter.xsl +0 -0
  60. package/assets/xsl/pretext-latex-classic.xsl +0 -0
  61. package/assets/xsl/pretext-latex-common.xsl +0 -0
  62. package/assets/xsl/pretext-latex.xsl +0 -0
  63. package/assets/xsl/pretext-litprog.xsl +0 -0
  64. package/assets/xsl/pretext-merge.xsl +0 -0
  65. package/assets/xsl/pretext-numbers.xsl +0 -0
  66. package/assets/xsl/pretext-revealjs.xsl +0 -0
  67. package/assets/xsl/pretext-runestone-fitb.xsl +0 -0
  68. package/assets/xsl/pretext-runestone-static.xsl +0 -0
  69. package/assets/xsl/pretext-runestone.xsl +0 -0
  70. package/assets/xsl/pretext-sage-doctest.xsl +0 -0
  71. package/assets/xsl/pretext-smc.xsl +0 -0
  72. package/assets/xsl/pretext-solution-manual-latex.xsl +0 -0
  73. package/assets/xsl/pretext-text-utilities.xsl +0 -0
  74. package/assets/xsl/pretext-text.xsl +0 -0
  75. package/assets/xsl/pretext-units.xsl +0 -0
  76. package/assets/xsl/pretext-view-source.xsl +0 -0
  77. package/assets/xsl/pretext-ww-problem-sets.xsl +0 -0
  78. package/assets/xsl/publisher-variables.xsl +0 -0
  79. package/assets/xsl/support/README.md +0 -0
  80. package/assets/xsl/support/extract-math.xsl +0 -0
  81. package/assets/xsl/support/package-math.xsl +0 -0
  82. package/assets/xsl/support/play-button/README.md +0 -0
  83. package/assets/xsl/support/play-button/play-button.png +0 -0
  84. package/assets/xsl/support/play-button/play-button.svg +0 -0
  85. package/assets/xsl/support/pretext-pg-macros.xsl +0 -0
  86. package/assets/xsl/support/webpack_static_imports.xml +0 -0
  87. package/assets/xsl/tests/README.md +0 -0
  88. package/assets/xsl/tests/null.xml +0 -0
  89. package/assets/xsl/tests/pretext-text-utilities-test.xsl +0 -0
  90. package/assets/xsl/utilities/README.md +0 -0
  91. package/assets/xsl/utilities/author-report.xsl +0 -0
  92. package/assets/xsl/utilities/deprecate-autoname.sed +0 -0
  93. package/assets/xsl/utilities/deprecate-index.sed +0 -0
  94. package/assets/xsl/utilities/fix-deprecations.xsl +0 -0
  95. package/assets/xsl/utilities/pretext-enhanced-source.xsl +0 -0
  96. package/assets/xsl/utilities/report-publisher-variables.xsl +0 -0
  97. package/assets/xsl/xml-to-json.xsl +0 -0
  98. package/assets/xsl/xml-to-string.xsl +0 -0
  99. package/assets/xsl-bundle.json +1 -0
  100. package/dist/assets.d.ts +43 -0
  101. package/dist/assets.js +76 -0
  102. package/dist/cli-CzoinNle.js +639 -0
  103. package/dist/cli.d.ts +0 -0
  104. package/dist/cli.js +1 -1
  105. package/dist/host.browser.d.ts +29 -0
  106. package/dist/host.d.ts +41 -0
  107. package/dist/index.browser.d.ts +29 -0
  108. package/dist/index.browser.js +701 -0
  109. package/dist/index.d.ts +8 -0
  110. package/dist/index.js +20 -13
  111. package/dist/internal/posix-path.d.ts +59 -0
  112. package/dist/missing-asset.d.ts +31 -0
  113. package/dist/mounts.d.ts +18 -0
  114. package/dist/publication.d.ts +27 -0
  115. package/dist/renderer.d.ts +33 -1
  116. package/dist/sourcemap.d.ts +0 -0
  117. package/dist/theme.d.ts +0 -0
  118. package/dist/theme.js +0 -0
  119. package/dist/xinclude.d.ts +0 -0
  120. package/package.json +17 -3
  121. package/dist/cli-BQizBK0N.js +0 -555
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Retargeting the asset URLs PreTeXt emits.
3
+ *
4
+ * A portable build inlines `latex-image` and `prefigure` SVGs directly into
5
+ * the page (pretext-html.xsl, mode="svg-embedded"), so those need nothing from
6
+ * us — they are read at transform time through the fetch shim. Everything else
7
+ * — author-supplied images and media, sageplot, asymptote — is emitted as a
8
+ * *runtime* URL under one of two fixed prefixes:
9
+ *
10
+ * <img src="external/kitten.png">
11
+ * <img src="generated/sageplot/plot.svg">
12
+ *
13
+ * Those prefixes (`$external-directory` / `$generated-directory` in
14
+ * publisher-variables.xsl) name directories a real build populates by copying
15
+ * files next to the output HTML. The preview has no output directory, so the
16
+ * URLs dangle and the assets silently fail to load.
17
+ *
18
+ * The prefixes are hardcoded rather than derived from the publication file,
19
+ * which is what makes retargeting reliable: find them, and hand each path to a
20
+ * host that knows how to serve it — `Webview.asWebviewUri` under VS Code, a
21
+ * blob or hosted URL in a browser. Mapping the prefix back to a real directory
22
+ * needs the publication file's `@external`/`@generated`, which the renderer
23
+ * reports as {@link RenderResult.assetDirs}.
24
+ */
25
+ /** Which of PreTeXt's two asset directories a URL points into. */
26
+ export type AssetKind = "external" | "generated";
27
+ export { describeAsset, missingAssetPlaceholder, missingAssetSvg, } from './missing-asset.js';
28
+ export type { MissingAsset } from './missing-asset.js';
29
+ /**
30
+ * Maps one asset path to a URL the host can actually load.
31
+ *
32
+ * `relPath` is percent-decoded and relative to the directory `kind` names
33
+ * (e.g. `"kitten.png"`, `"sageplot/plot.svg"`). Return `undefined` to leave
34
+ * the URL untouched — appropriate when the file does not exist, so the page
35
+ * keeps PreTeXt's own broken-image markup rather than pointing at a URL that
36
+ * will 404 anyway.
37
+ */
38
+ export type AssetUrlResolver = (kind: AssetKind, relPath: string) => string | undefined;
39
+ /**
40
+ * Rewrite every `external/`- or `generated/`-prefixed asset URL in `html`
41
+ * through `resolve`. Paths the resolver declines are left untouched.
42
+ */
43
+ export declare function rewriteAssetUrls(html: string, resolve: AssetUrlResolver): string;
package/dist/assets.js ADDED
@@ -0,0 +1,76 @@
1
+ const l = {
2
+ png: "image",
3
+ jpg: "image",
4
+ jpeg: "image",
5
+ gif: "image",
6
+ svg: "image",
7
+ webp: "image",
8
+ avif: "image",
9
+ mp4: "video",
10
+ webm: "video",
11
+ ogv: "video",
12
+ mov: "video",
13
+ mp3: "audio",
14
+ wav: "audio",
15
+ ogg: "audio",
16
+ pdf: "PDF"
17
+ };
18
+ function p(e, t) {
19
+ const n = t.split("/").filter(Boolean), i = n[n.length - 1] ?? t;
20
+ if (e === "generated")
21
+ return {
22
+ kind: e,
23
+ assetType: n.length > 1 ? n[0] : "generated",
24
+ fileName: i
25
+ };
26
+ const r = i.split(".").pop()?.toLowerCase() ?? "";
27
+ return { kind: e, assetType: l[r] ?? "file", fileName: i };
28
+ }
29
+ function o(e) {
30
+ return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
31
+ }
32
+ function g(e, t = 38) {
33
+ return e.length <= t ? e : `${e.slice(0, t - 1)}…`;
34
+ }
35
+ function f(e) {
36
+ return e.kind === "generated" ? [
37
+ "Asset not generated yet",
38
+ `${e.assetType} · ${g(e.fileName)}`,
39
+ `Run: pretext generate ${e.assetType}`
40
+ ] : [
41
+ "External asset not found",
42
+ `${e.assetType} · ${g(e.fileName)}`,
43
+ "Check @source and the external directory"
44
+ ];
45
+ }
46
+ const d = "#fffbeb", u = "#f59e0b", m = "#92400e", s = "#b45309", a = "ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif";
47
+ function $(e) {
48
+ const [t, n, i] = f(e), r = `${t}: ${e.fileName}`;
49
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 130" role="img" aria-label="${o(r)}" data-ptx-missing="${o(`${e.kind}:${e.assetType}`)}"><rect x="1" y="1" width="418" height="128" rx="8" fill="${d}" stroke="${u}" stroke-width="2" stroke-dasharray="6 4"/><path d="M40 44 L60 80 L20 80 Z" fill="none" stroke="${s}" stroke-width="3" stroke-linejoin="round"/><rect x="38.5" y="56" width="3" height="12" fill="${s}"/><rect x="38.5" y="71" width="3" height="3" fill="${s}"/><text x="78" y="54" font-family="${a}" font-size="15" font-weight="600" fill="${m}">${o(t)}</text><text x="78" y="77" font-family="${a}" font-size="13" fill="${s}">${o(n)}</text><text x="78" y="99" font-family="${a}" font-size="12" fill="${s}" opacity="0.85">${o(i)}</text></svg>`;
50
+ }
51
+ function v(e, t) {
52
+ return `data:image/svg+xml,${$(p(e, t)).replace(/%/g, "%25").replace(/#/g, "%23").replace(/&/g, "%26").replace(/"/g, "%22").replace(/'/g, "%27").replace(/</g, "%3C").replace(/>/g, "%3E").replace(/\s+/g, " ")}`;
53
+ }
54
+ const h = /\bsrc="(external|generated)\/([^"]*)"/g;
55
+ function x(e) {
56
+ return e.replace(/&/g, "&amp;").replace(/"/g, "&quot;");
57
+ }
58
+ function y(e) {
59
+ try {
60
+ return decodeURIComponent(e);
61
+ } catch {
62
+ return e;
63
+ }
64
+ }
65
+ function w(e, t) {
66
+ return e.replace(h, (n, i, r) => {
67
+ const c = t(i, y(r));
68
+ return c === void 0 ? n : `src="${x(c)}"`;
69
+ });
70
+ }
71
+ export {
72
+ p as describeAsset,
73
+ v as missingAssetPlaceholder,
74
+ $ as missingAssetSvg,
75
+ w as rewriteAssetUrls
76
+ };