Skip to content

Commit 7bad088

Browse files
committed
wip
1 parent 94b4cac commit 7bad088

5 files changed

Lines changed: 56 additions & 8 deletions

File tree

docs-app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
},
3030
"dependencies": {
3131
"@shikijs/rehype": "^3.14.0",
32-
"@universal-ember/docs-support": "^0.8.1",
32+
"@universal-ember/docs-support": "workspace:*",
3333
"assert": "^2.0.0",
3434
"change-case": "^5.4.4",
3535
"decorator-transforms": "^2.3.0",

packages/docs-support/rollup.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default {
1010
output: addon.output(),
1111

1212
plugins: [
13-
addon.publicEntrypoints(["index.js", "template-registry.js"]),
13+
addon.publicEntrypoints(["index.js", "template-registry.js", "icons.js"]),
1414
addon.dependencies(),
1515
babel({
1616
extensions: [".js", ".gjs", ".ts", ".gts"],
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import Component from '@glimmer/component';
2+
import { registerDestructor } from '@ember/destroyable';
3+
4+
import type Owner from '@ember/owner';
5+
6+
function findHeadings() {
7+
const headings = document.querySelectorAll(
8+
'main h1, main h2, main h3, main h4, main h5, main h6'
9+
);
10+
11+
return [...headings].map((heading) => {
12+
return {
13+
level: heading.tagName.replace(/h/i, ''),
14+
text: heading.textContent.trim().replace(/\s+/g, ' '),
15+
};
16+
});
17+
}
18+
19+
export class OnThisPage extends Component<{
20+
Blocks: [];
21+
}> {
22+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
23+
constructor(owner: Owner, args: {}) {
24+
super(owner, args);
25+
26+
const observer = new MutationObserver(this.updateHeadings);
27+
28+
observer.observe(document.body, { childList: true, subtree: true });
29+
30+
registerDestructor(this, () => {
31+
observer.disconnect();
32+
});
33+
}
34+
35+
updateHeadings = (mutationList: unknown[]) => {
36+
console.log(mutationList, findHeadings());
37+
};
38+
39+
<template>
40+
{{#each (findHeadings) as |heading|}}
41+
{{heading.text}}
42+
43+
{{/each}}
44+
</template>
45+
}

packages/docs-support/src/page-layout.gts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Page } from 'kolay/components';
55
import { Article } from './article.gts';
66
import { Link } from './links.gts';
77
import { ResponsiveMenuLayout } from './menu-layout.gts';
8+
import { OnThisPage } from './on-this-page.gts';
89
import { ThemeToggle } from './theme-toggle.gts';
910

1011
import type { TOC } from '@ember/component/template-only';
@@ -15,7 +16,6 @@ function removeLoader() {
1516
document.querySelector('#initial-loader')?.remove();
1617
}
1718

18-
1919
function resetScroll(..._args: unknown[]) {
2020
document.querySelector('html')?.scrollTo(0, 0);
2121
}
@@ -118,6 +118,9 @@ export const PageLayout: TOC<{
118118
</div>
119119
{{/if}}
120120
</section>
121+
<aside>
122+
<OnThisPage />
123+
</aside>
121124
</:content>
122125

123126
</ResponsiveMenuLayout>

pnpm-lock.yaml

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)