@forsakringskassan/docs-generator 1.30.0 → 1.30.2

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/dist/index.js CHANGED
@@ -1240,6 +1240,11 @@ async function render(doc, docs, nav, vendors, options) {
1240
1240
  site: options.site,
1241
1241
  doc,
1242
1242
  topnav,
1243
+ rootUrl(doc2) {
1244
+ const { fileInfo: fileInfo2 } = doc2;
1245
+ const relative = path$1.relative(fileInfo2.path, ".");
1246
+ return relative !== "" ? relative : ".";
1247
+ },
1243
1248
  sidenav,
1244
1249
  vendors
1245
1250
  };
@@ -2063,8 +2068,18 @@ function themeSelectProcessor() {
2063
2068
  name: "theme-select-processor",
2064
2069
  after: "generate-docs",
2065
2070
  handler(context) {
2071
+ const sessionKey = "fkds-theme";
2072
+ const data = {
2073
+ defaultTheme: "exp",
2074
+ sessionKey
2075
+ };
2076
+ context.addTemplateBlock("head", "theme-render-blocker", {
2077
+ filename: "partials/theme-render-blocker.html",
2078
+ data
2079
+ });
2066
2080
  context.addTemplateBlock("toolbar", "theme-select", {
2067
- filename: "partials/theme-select.html"
2081
+ filename: "partials/theme-select.html",
2082
+ data
2068
2083
  });
2069
2084
  }
2070
2085
  };
@@ -2144,7 +2159,12 @@ async function getGitBranch() {
2144
2159
  }
2145
2160
  }
2146
2161
  function getPullRequestID() {
2147
- return process.env.JOB_BASE_NAME;
2162
+ if (process.env.JOB_BASE_NAME) {
2163
+ const name = process.env.JOB_BASE_NAME;
2164
+ const match = name.match(/PR-(\d+)/);
2165
+ return match ? match[1] : void 0;
2166
+ }
2167
+ return void 0;
2148
2168
  }
2149
2169
  async function getSCMData(pkg, options) {
2150
2170
  const commitHash = await run(`git rev-parse HEAD`);
@@ -2277,14 +2297,7 @@ function searchProcessor() {
2277
2297
  }
2278
2298
  });
2279
2299
  context.addTemplateBlock("toolbar", "search-toolbar", {
2280
- filename: "partials/search-toolbar.html",
2281
- data: {
2282
- rootUrl(doc) {
2283
- const { fileInfo } = doc;
2284
- const relative = path$1.relative(fileInfo.path, ".");
2285
- return relative !== "" ? relative : ".";
2286
- }
2287
- }
2300
+ filename: "partials/search-toolbar.html"
2288
2301
  });
2289
2302
  context.addTemplateBlock("body:end", "search-dialog", {
2290
2303
  filename: "partials/search-dialog.html"
package/dist/runtime.js CHANGED
@@ -203810,6 +203810,7 @@ async function replaceContent(href) {
203810
203810
  const body = await response.text();
203811
203811
  const doc = parser20.parseFromString(body, "text/html");
203812
203812
  const sidenav = doc.querySelector("#sidenav");
203813
+ const rootUrl = doc.documentElement.dataset.rootUrl;
203813
203814
  const selector = response.ok && sidenav ? "main" : "body";
203814
203815
  const header2 = doc.querySelector("header");
203815
203816
  const headerTarget = document.querySelector("header");
@@ -203822,6 +203823,17 @@ async function replaceContent(href) {
203822
203823
  cloneScripts(importedHeader, href);
203823
203824
  headerTarget.replaceWith(importedHeader);
203824
203825
  }
203826
+ const anchorSelector = "#sidenav li.link a";
203827
+ const anchorLinks = document.querySelectorAll(anchorSelector);
203828
+ for (const link2 of anchorLinks) {
203829
+ const { rel: rel2 } = link2;
203830
+ if (rel2 !== "external") {
203831
+ continue;
203832
+ }
203833
+ const path4 = link2.dataset.path ?? ".";
203834
+ link2.setAttribute("href", [rootUrl, path4].join("/"));
203835
+ }
203836
+ document.documentElement.dataset.rootUrl = rootUrl;
203825
203837
  document.title = doc.title;
203826
203838
  target.replaceWith(element2);
203827
203839
  }
@@ -204678,7 +204690,6 @@ var results = document.querySelector("#search-results");
204678
204690
  var index2 = null;
204679
204691
  var searchTerm = "";
204680
204692
  var active = 0;
204681
- var rootUrl = button.dataset.rootUrl;
204682
204693
  var uf = new uFuzzy({
204683
204694
  intraIns: Infinity
204684
204695
  });
@@ -204695,6 +204706,7 @@ function updateResults() {
204695
204706
  const info3 = uf.info(idxs, index2.terms, searchTerm);
204696
204707
  const order2 = uf.sort(info3, index2.terms, searchTerm);
204697
204708
  active = 0;
204709
+ const rootUrl = document.documentElement.dataset.rootUrl ?? ".";
204698
204710
  const ul = document.createElement("ul");
204699
204711
  ul.classList.add("list");
204700
204712
  for (let i2 = 0; i2 < order2.length; i2++) {
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.44.1"
8
+ "packageVersion": "7.47.0"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forsakringskassan/docs-generator",
3
- "version": "1.30.0",
3
+ "version": "1.30.2",
4
4
  "description": "Documentation generator",
5
5
  "keywords": [
6
6
  "documentation"
@@ -1,5 +1,5 @@
1
1
  <!doctype html>
2
- <html lang="{{ site.lang }}" class="layout--{{ doc.template }}">
2
+ <html lang="{{ site.lang }}" class="layout--{{ doc.template }}" data-root-url="{{ rootUrl(doc) }}">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -21,7 +21,15 @@
21
21
  {# leaf node #}
22
22
  {%- if not item.children -%}
23
23
  <li class="link {% if item.active %}active{% endif %}">
24
- <a href="{{ item.path | relative(doc) }}" {% if item.external %} target="_blank" rel="external" {% endif %}>
24
+ <!-- prettier-ignore -->
25
+ <a
26
+ href="{{ item.path | relative(doc) }}"
27
+ {% if item.external %}
28
+ target="_blank"
29
+ rel="external"
30
+ data-path="{{ item.path.startsWith('/') and item.path.slice(1) or item.path }}"
31
+ {% endif %}
32
+ >
25
33
  {{ item.title }}
26
34
  </a>
27
35
  </li>
@@ -0,0 +1,5 @@
1
+ {%- macro scmInfo(build, scm) -%}
2
+ {{ scm.branch }} (<a href="{{ scm.commitUrl }}">{{ scm.commitShort }}</a>)<br />
3
+ {% if scm.pr %}<a href="{{ scm.prUrl }}">PR {{ scm.pr }}</a><br />{% endif %}
4
+ {{ build.date }} {{ build.time }}
5
+ {%- endmacro -%}
@@ -1,5 +1,5 @@
1
1
  <div class="toolbar__item">
2
- <form id="search" role="search" data-root-url="{{ rootUrl(doc) }}">
2
+ <form id="search" role="search">
3
3
  <button class="text-field__input" type="submit">
4
4
  <svg focusable="false" class="icon button__icon">
5
5
  <use xlink:href="#docs-icon-search"></use></svg
@@ -0,0 +1,11 @@
1
+ <script>
2
+ function themeRenderBlocker() {
3
+ const theme = window.localStorage.getItem("{{ sessionKey }}") ?? "{{ defaultTheme }}";
4
+ const style = Array.from(document.querySelectorAll("[data-theme]"));
5
+ for (const el of style) {
6
+ el.disabled = el.dataset.theme !== theme;
7
+ }
8
+ }
9
+
10
+ themeRenderBlocker();
11
+ </script>
@@ -1,5 +1,5 @@
1
1
  <div class="toolbar__item">
2
- <div class="select-field" hidden>
2
+ <div class="select-field" style="visibility: hidden">
3
3
  <label for="fkds-theme-select" class="label sr-only"> Tema </label>
4
4
  <div class="select-field__icon-wrapper">
5
5
  <select id="fkds-theme-select" class="select-field__select">
@@ -14,20 +14,12 @@
14
14
 
15
15
  <script>
16
16
  function themeSelector() {
17
- const cookieName = "fkds-theme";
18
-
19
- function getCookie(key) {
20
- const cookie = document.cookie.split("; ").find((item) => item.trim().startsWith(`${key}=`));
21
- if (cookie) {
22
- const [, value] = cookie.split("=", 2);
23
- return value;
24
- } else {
25
- return null;
26
- }
17
+ function getSelectedTheme(key) {
18
+ return window.localStorage.getItem(key) ?? "{{ defaultTheme }}";
27
19
  }
28
20
 
29
- function setCookie(key, value) {
30
- document.cookie = `${key}=${value}; expires=Fri, 31 Dec 9999 23:59:59 GMT; SameSite=strict`;
21
+ function saveSelectedTheme(key, value) {
22
+ window.localStorage.setItem(key, value);
31
23
  }
32
24
 
33
25
  function enableTheme(theme) {
@@ -38,31 +30,20 @@
38
30
  }
39
31
 
40
32
  const el = document.querySelector("#fkds-theme-select");
41
- const wrapper = el.closest(".select-field");
33
+ const wrapper = /** @type {HTMLElement} */ (el.closest(".select-field"));
42
34
  el.addEventListener("change", () => {
43
35
  const theme = el.value;
44
- setCookie(cookieName, theme);
36
+ saveSelectedTheme("{{ sessionKey }}", theme);
45
37
  enableTheme(theme);
46
38
  });
47
39
 
48
- const selected = getCookie(cookieName) || "exp";
40
+ const selected = getSelectedTheme("{{ sessionKey }}");
49
41
  enableTheme(selected);
50
42
  el.value = selected;
51
43
 
52
- wrapper.hidden = false;
53
- }
54
-
55
- /* technical debt, this entire script should be moved to src/runtime and
56
- * import this function instead */
57
- function onContentReady(callback) {
58
- const { readyState } = document;
59
- if (readyState === "complete" || readyState === "interactive") {
60
- setTimeout(callback, 0);
61
- } else {
62
- document.addEventListener("DOMContentLoaded", callback);
63
- }
44
+ wrapper.style.visibility = null;
64
45
  }
65
46
 
66
- onContentReady(themeSelector);
47
+ themeSelector();
67
48
  </script>
68
49
  </div>
@@ -1,13 +1,9 @@
1
- {%- macro scmInfo(scm) -%}
2
- {% if scm.pr %}<a href="{{ scm.prUrl }}">PR {{ scm.pr }}</a>{% endif %}
3
- {{ scm.branch }} (<a href="{{ scm.commitUrl }}">{{ scm.commitShort }}</a>)<br />
4
- {{ build.date }} {{ build.time }}
5
- {%- endmacro -%}
1
+ {% from "macro/scm-info.njk.html" import scmInfo -%}
6
2
 
7
3
  <div class="toolbar__item">
8
4
  <span class="version">
9
5
  {% if scm -%}
10
- {{ scmInfo(scm) }}
6
+ {{ scmInfo(build, scm) }}
11
7
  {%- else -%}
12
8
  {{ pkg.version }}
13
9
  {%- endif %}