raffel 1.1.11 → 1.1.15

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.
@@ -951,6 +951,31 @@
951
951
  }
952
952
  }
953
953
 
954
+ .docs-pages-group > .tag-group-header {
955
+ color: var(--text-primary);
956
+ background: var(--hover-bg);
957
+ border-left: 3px solid var(--primary-color);
958
+ padding-left: 9px;
959
+ margin-bottom: 4px;
960
+ letter-spacing: 0.01em;
961
+ }
962
+
963
+ .docs-pages-group > .tag-group-header:hover {
964
+ background: var(--hover-bg);
965
+ opacity: 0.85;
966
+ }
967
+
968
+ .docs-sidebar-home {
969
+ display: flex;
970
+ align-items: center;
971
+ gap: 6px;
972
+ }
973
+
974
+ .docs-sidebar-home-icon {
975
+ flex-shrink: 0;
976
+ opacity: 0.7;
977
+ }
978
+
954
979
  /* ========== TOC (On this page) — editorial sidenote ========== */
955
980
  .toc {
956
981
  align-self: start;
@@ -908,8 +908,13 @@ function setDocsPage(path, headingId = '') {
908
908
  activePagePath = resolveDocsAlias(normalizeDocsPath(path));
909
909
  activeHeadingId = headingId;
910
910
  win.history?.replaceState?.(null, '', routeToHash(activePagePath, activeHeadingId));
911
- if (!activeHeadingId)
912
- win.scrollTo?.({ top: 0, behavior: 'smooth' });
911
+ if (!activeHeadingId) {
912
+ const appEl = doc.getElementById('docs') ?? doc.querySelector('.app-container');
913
+ if (appEl)
914
+ appEl.scrollIntoView({ behavior: 'smooth', block: 'start' });
915
+ else
916
+ win.scrollTo?.({ top: 0, behavior: 'smooth' });
917
+ }
913
918
  runVoidHook('onRouteChange', getPluginContext({ pagePath: activePagePath, headingId: activeHeadingId }));
914
919
  render();
915
920
  }
@@ -1039,8 +1044,30 @@ function renderSidebar() {
1039
1044
  function renderDocsPagesNav(nav) {
1040
1045
  if (sidebarConfig.docsPages === false)
1041
1046
  return;
1047
+ const groupLabel = sidebarConfig.docsPagesGroup;
1048
+ const hasActiveDocPage = Boolean(activePagePath);
1049
+ let target = nav;
1050
+ if (groupLabel) {
1051
+ const allPages = getDocsPageViews();
1052
+ const wrapper = doc.createElement('div');
1053
+ wrapper.className = `tag-group docs-pages-group${hasActiveDocPage || sidebarConfig.expandAll ? '' : ' collapsed'}`;
1054
+ const header = doc.createElement('div');
1055
+ header.className = 'tag-group-header';
1056
+ header.innerHTML = `<span class="tag-group-arrow">▼</span>${esc(groupLabel)}<span class="tag-group-count">${allPages.length}</span>`;
1057
+ const inner = doc.createElement('div');
1058
+ inner.className = 'tag-group-items';
1059
+ inner.style.maxHeight = hasActiveDocPage || sidebarConfig.expandAll ? '9999px' : '0';
1060
+ header.onclick = () => {
1061
+ wrapper.classList.toggle('collapsed');
1062
+ inner.style.maxHeight = wrapper.classList.contains('collapsed') ? '0' : '9999px';
1063
+ };
1064
+ wrapper.appendChild(header);
1065
+ wrapper.appendChild(inner);
1066
+ nav.appendChild(wrapper);
1067
+ target = inner;
1068
+ }
1042
1069
  if (docsSidebar.length > 0 && !searchQuery) {
1043
- renderDeclarativeDocsSidebar(nav);
1070
+ renderDeclarativeDocsSidebar(target);
1044
1071
  return;
1045
1072
  }
1046
1073
  const pages = getDocsPageViews().filter(page => !searchQuery ||
@@ -1054,9 +1081,10 @@ function renderDocsPagesNav(nav) {
1054
1081
  sections.get(page.section)?.push(page);
1055
1082
  }
1056
1083
  for (const [section, sectionPages] of sections) {
1057
- appendSidebarGroup(nav, section, sectionPages.map(page => ({
1084
+ appendSidebarGroup(target, section, sectionPages.map(page => ({
1058
1085
  active: page.path === activePagePath,
1059
1086
  label: page.title,
1087
+ path: page.path,
1060
1088
  children: page.path === activePagePath && !searchQuery ? extractSidebarHeadings(page.markdown) : [],
1061
1089
  onClick: () => setDocsPage(page.path),
1062
1090
  })));
@@ -1078,21 +1106,29 @@ function renderDeclarativeDocsSidebar(nav) {
1078
1106
  extractSidebarHeadings,
1079
1107
  });
1080
1108
  }
1109
+ const HOME_ICON_SVG = '<svg class="docs-sidebar-home-icon" width="13" height="13" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>';
1081
1110
  function appendSidebarGroup(nav, title, items) {
1082
1111
  const group = doc.createElement('div');
1083
1112
  group.className = 'tag-group';
1084
1113
  const header = doc.createElement('div');
1085
1114
  header.className = 'tag-group-header';
1086
1115
  header.innerHTML = `<span class="tag-group-arrow">▼</span>${esc(title)}<span class="tag-group-count">${items.length}</span>`;
1087
- header.onclick = () => group.classList.toggle('collapsed');
1088
1116
  const itemContainer = doc.createElement('div');
1089
1117
  itemContainer.className = 'tag-group-items';
1090
1118
  const childCount = items.reduce((count, item) => count + (item.children?.length ?? 0), 0);
1091
- itemContainer.style.maxHeight = `${items.length * 50 + childCount * 34}px`;
1119
+ const expandedHeight = `${items.length * 50 + childCount * 34}px`;
1120
+ itemContainer.style.maxHeight = expandedHeight;
1121
+ header.onclick = () => {
1122
+ group.classList.toggle('collapsed');
1123
+ itemContainer.style.maxHeight = group.classList.contains('collapsed') ? '0' : expandedHeight;
1124
+ };
1092
1125
  for (const item of items) {
1093
1126
  const el = doc.createElement('div');
1094
1127
  el.className = `nav-item${item.active ? ' active' : ''}`;
1095
- el.innerHTML = `${item.prefix ? `<span class="nav-item-method method-${esc(item.prefix.toLowerCase())}">${esc(item.prefix)}</span>` : ''}<span class="nav-item-path">${esc(item.label)}</span>`;
1128
+ const isHome = item.path === '/' || item.path === '';
1129
+ el.innerHTML = isHome
1130
+ ? `<span class="docs-sidebar-home">${HOME_ICON_SVG}<span class="nav-item-path">${esc(item.label)}</span></span>`
1131
+ : `${item.prefix ? `<span class="nav-item-method method-${esc(item.prefix.toLowerCase())}">${esc(item.prefix)}</span>` : ''}<span class="nav-item-path">${esc(item.label)}</span>`;
1096
1132
  el.onclick = (event) => {
1097
1133
  event.stopPropagation();
1098
1134
  item.onClick();
@@ -16,10 +16,13 @@ function appendSidebarItem(parent, item, depth, deps) {
16
16
  const header = deps.doc.createElement('div');
17
17
  header.className = `tag-group-header${active ? ' active' : ''}`;
18
18
  header.innerHTML = `<span class="tag-group-arrow">▼</span>${deps.esc(title)}<span class="tag-group-count">${countLeaves(children)}</span>`;
19
- header.onclick = () => group.classList.toggle('collapsed');
20
19
  const childContainer = deps.doc.createElement('div');
21
20
  childContainer.className = 'tag-group-items';
22
21
  childContainer.style.maxHeight = expanded ? `${Math.max(1, countRows(children)) * 90}px` : '0';
22
+ header.onclick = () => {
23
+ group.classList.toggle('collapsed');
24
+ childContainer.style.maxHeight = group.classList.contains('collapsed') ? '0' : `${Math.max(1, countRows(children)) * 90}px`;
25
+ };
23
26
  if (itemPath || item.href) {
24
27
  childContainer.appendChild(createPageItem(item, title, active, depth, deps));
25
28
  if (active && !deps.searchQuery)
@@ -39,7 +42,11 @@ function appendSidebarItem(parent, item, depth, deps) {
39
42
  function createPageItem(item, title, active, depth, deps) {
40
43
  const element = deps.doc.createElement('div');
41
44
  element.className = `nav-item docs-page-nav-item docs-sidebar-page docs-sidebar-depth-${depth}${active ? ' active' : ''}`;
42
- element.innerHTML = `<span class="nav-item-text">${deps.esc(title)}</span>`;
45
+ const normalizedPath = item.path ? deps.normalizeDocsPath(item.path) : '';
46
+ const isHome = depth === 0 && (normalizedPath === '/' || normalizedPath === '');
47
+ element.innerHTML = isHome
48
+ ? `<span class="docs-sidebar-home"><svg class="docs-sidebar-home-icon" width="13" height="13" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg><span class="nav-item-text">${deps.esc(title)}</span></span>`
49
+ : `<span class="nav-item-text">${deps.esc(title)}</span>`;
43
50
  element.onclick = (event) => {
44
51
  event.stopPropagation();
45
52
  if (item.href && !item.path) {
@@ -1 +1 @@
1
- {"version":3,"file":"html-builder.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAA6C,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAkB/F;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CA8IlE;AAmCD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAYjE"}
1
+ {"version":3,"file":"html-builder.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAA6C,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAoB/F;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CA0JlE;AAmCD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAYjE"}
@@ -11,6 +11,7 @@
11
11
  * 2. All user-visible text is escaped before rendering
12
12
  * 3. JSON data is escaped for script embedding to prevent XSS
13
13
  */
14
+ const _startupTs = Date.now();
14
15
  import { generateStyles } from './styles.js';
15
16
  import { escapeHtml, escapeJsonForScript, generateHeroBackgroundCSS } from './utils.js';
16
17
  import { generateAppContainer, generateHeroSection, generateIntroductionSection, generateSkipLink, generateTopNavigation, mergeHeroConfig, } from './html-shell.js';
@@ -99,9 +100,21 @@ ${styles}
99
100
  });
100
101
  })();
101
102
  </script>
103
+ <script type="importmap">
104
+ {
105
+ "imports": {
106
+ "${escapeHtml(assetBasePath)}/-/sidebar-tree.js": "${escapeHtml(assetBasePath)}/-/sidebar-tree.js?v=${_startupTs}",
107
+ "${escapeHtml(assetBasePath)}/-/marked-renderer.js": "${escapeHtml(assetBasePath)}/-/marked-renderer.js?v=${_startupTs}",
108
+ "${escapeHtml(assetBasePath)}/-/protocol-console.js": "${escapeHtml(assetBasePath)}/-/protocol-console.js?v=${_startupTs}",
109
+ "${escapeHtml(assetBasePath)}/-/code-block-toolbar.js": "${escapeHtml(assetBasePath)}/-/code-block-toolbar.js?v=${_startupTs}",
110
+ "${escapeHtml(assetBasePath)}/-/page-nav.js": "${escapeHtml(assetBasePath)}/-/page-nav.js?v=${_startupTs}",
111
+ "${escapeHtml(assetBasePath)}/-/search-modal.js": "${escapeHtml(assetBasePath)}/-/search-modal.js?v=${_startupTs}"
112
+ }
113
+ }
114
+ </script>
102
115
  <script src="${escapeHtml(assetBasePath)}/-/marked.umd.js"></script>
103
116
  <script src="${escapeHtml(assetBasePath)}/-/prism.js"></script>
104
- <script type="module" data-raffel-runtime="external" src="${escapeHtml(assetBasePath)}/-/raffel-docs.js"></script>`
117
+ <script type="module" data-raffel-runtime="external" src="${escapeHtml(assetBasePath)}/-/raffel-docs.js?v=${_startupTs}"></script>`
105
118
  : `${generateInlineRuntimeDependencyScripts()}
106
119
  <script type="module" data-raffel-runtime="inline">
107
120
  ${generateClientRuntimeScript()}
@@ -1 +1 @@
1
- {"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"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"}
@@ -908,8 +908,13 @@ function setDocsPage(path, headingId = '') {
908
908
  activePagePath = resolveDocsAlias(normalizeDocsPath(path));
909
909
  activeHeadingId = headingId;
910
910
  win.history?.replaceState?.(null, '', routeToHash(activePagePath, activeHeadingId));
911
- if (!activeHeadingId)
912
- win.scrollTo?.({ top: 0, behavior: 'smooth' });
911
+ if (!activeHeadingId) {
912
+ const appEl = doc.getElementById('docs') ?? doc.querySelector('.app-container');
913
+ if (appEl)
914
+ appEl.scrollIntoView({ behavior: 'smooth', block: 'start' });
915
+ else
916
+ win.scrollTo?.({ top: 0, behavior: 'smooth' });
917
+ }
913
918
  runVoidHook('onRouteChange', getPluginContext({ pagePath: activePagePath, headingId: activeHeadingId }));
914
919
  render();
915
920
  }
@@ -1039,8 +1044,30 @@ function renderSidebar() {
1039
1044
  function renderDocsPagesNav(nav) {
1040
1045
  if (sidebarConfig.docsPages === false)
1041
1046
  return;
1047
+ const groupLabel = sidebarConfig.docsPagesGroup;
1048
+ const hasActiveDocPage = Boolean(activePagePath);
1049
+ let target = nav;
1050
+ if (groupLabel) {
1051
+ const allPages = getDocsPageViews();
1052
+ const wrapper = doc.createElement('div');
1053
+ wrapper.className = `tag-group docs-pages-group${hasActiveDocPage || sidebarConfig.expandAll ? '' : ' collapsed'}`;
1054
+ const header = doc.createElement('div');
1055
+ header.className = 'tag-group-header';
1056
+ header.innerHTML = `<span class="tag-group-arrow">▼</span>${esc(groupLabel)}<span class="tag-group-count">${allPages.length}</span>`;
1057
+ const inner = doc.createElement('div');
1058
+ inner.className = 'tag-group-items';
1059
+ inner.style.maxHeight = hasActiveDocPage || sidebarConfig.expandAll ? '9999px' : '0';
1060
+ header.onclick = () => {
1061
+ wrapper.classList.toggle('collapsed');
1062
+ inner.style.maxHeight = wrapper.classList.contains('collapsed') ? '0' : '9999px';
1063
+ };
1064
+ wrapper.appendChild(header);
1065
+ wrapper.appendChild(inner);
1066
+ nav.appendChild(wrapper);
1067
+ target = inner;
1068
+ }
1042
1069
  if (docsSidebar.length > 0 && !searchQuery) {
1043
- renderDeclarativeDocsSidebar(nav);
1070
+ renderDeclarativeDocsSidebar(target);
1044
1071
  return;
1045
1072
  }
1046
1073
  const pages = getDocsPageViews().filter(page => !searchQuery ||
@@ -1054,9 +1081,10 @@ function renderDocsPagesNav(nav) {
1054
1081
  sections.get(page.section)?.push(page);
1055
1082
  }
1056
1083
  for (const [section, sectionPages] of sections) {
1057
- appendSidebarGroup(nav, section, sectionPages.map(page => ({
1084
+ appendSidebarGroup(target, section, sectionPages.map(page => ({
1058
1085
  active: page.path === activePagePath,
1059
1086
  label: page.title,
1087
+ path: page.path,
1060
1088
  children: page.path === activePagePath && !searchQuery ? extractSidebarHeadings(page.markdown) : [],
1061
1089
  onClick: () => setDocsPage(page.path),
1062
1090
  })));
@@ -1078,21 +1106,29 @@ function renderDeclarativeDocsSidebar(nav) {
1078
1106
  extractSidebarHeadings,
1079
1107
  });
1080
1108
  }
1109
+ const HOME_ICON_SVG = '<svg class="docs-sidebar-home-icon" width="13" height="13" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>';
1081
1110
  function appendSidebarGroup(nav, title, items) {
1082
1111
  const group = doc.createElement('div');
1083
1112
  group.className = 'tag-group';
1084
1113
  const header = doc.createElement('div');
1085
1114
  header.className = 'tag-group-header';
1086
1115
  header.innerHTML = `<span class="tag-group-arrow">▼</span>${esc(title)}<span class="tag-group-count">${items.length}</span>`;
1087
- header.onclick = () => group.classList.toggle('collapsed');
1088
1116
  const itemContainer = doc.createElement('div');
1089
1117
  itemContainer.className = 'tag-group-items';
1090
1118
  const childCount = items.reduce((count, item) => count + (item.children?.length ?? 0), 0);
1091
- itemContainer.style.maxHeight = `${items.length * 50 + childCount * 34}px`;
1119
+ const expandedHeight = `${items.length * 50 + childCount * 34}px`;
1120
+ itemContainer.style.maxHeight = expandedHeight;
1121
+ header.onclick = () => {
1122
+ group.classList.toggle('collapsed');
1123
+ itemContainer.style.maxHeight = group.classList.contains('collapsed') ? '0' : expandedHeight;
1124
+ };
1092
1125
  for (const item of items) {
1093
1126
  const el = doc.createElement('div');
1094
1127
  el.className = `nav-item${item.active ? ' active' : ''}`;
1095
- el.innerHTML = `${item.prefix ? `<span class="nav-item-method method-${esc(item.prefix.toLowerCase())}">${esc(item.prefix)}</span>` : ''}<span class="nav-item-path">${esc(item.label)}</span>`;
1128
+ const isHome = item.path === '/' || item.path === '';
1129
+ el.innerHTML = isHome
1130
+ ? `<span class="docs-sidebar-home">${HOME_ICON_SVG}<span class="nav-item-path">${esc(item.label)}</span></span>`
1131
+ : `${item.prefix ? `<span class="nav-item-method method-${esc(item.prefix.toLowerCase())}">${esc(item.prefix)}</span>` : ''}<span class="nav-item-path">${esc(item.label)}</span>`;
1096
1132
  el.onclick = (event) => {
1097
1133
  event.stopPropagation();
1098
1134
  item.onClick();