@janga/norna 0.7.25 → 0.7.26
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/README.md +3 -2
- package/astro.config.mjs +26 -12
- package/bin/norna-cli.mjs +12 -0
- package/package.json +14 -5
- package/schemas/card-list.schema.json +121 -0
- package/schemas/category.schema.json +2 -2
- package/schemas/config.schema.json +306 -32
- package/schemas/content-frontmatter.schema.json +7 -7
- package/schemas/image-carousel.schema.json +43 -0
- package/schemas/image-stack.schema.json +43 -0
- package/schemas/manifest.json +6 -1
- package/schemas/page-theme.schema.json +26 -26
- package/schemas/sitewide-content.schema.json +18 -18
- package/schemas/theme.schema.json +237 -262
- package/scripts/dev-local.mjs +24 -2
- package/scripts/generate-schemas.mjs +15 -3
- package/scripts/lib/category-destinations.mjs +48 -0
- package/scripts/lib/code-fence-metadata.mjs +14 -37
- package/scripts/lib/content-tabs.mjs +155 -0
- package/scripts/lib/details-headings.mjs +58 -0
- package/scripts/lib/docusaurus-migration-audit.mjs +603 -0
- package/scripts/lib/editor-language-service.mjs +238 -116
- package/scripts/lib/locale-registry.mjs +597 -0
- package/scripts/lib/locales/az-Latn.mjs +78 -0
- package/scripts/lib/locales/be.mjs +78 -0
- package/scripts/lib/locales/bg.mjs +78 -0
- package/scripts/lib/locales/bs.mjs +78 -0
- package/scripts/lib/locales/ca.mjs +78 -0
- package/scripts/lib/locales/cnr.mjs +78 -0
- package/scripts/lib/locales/cs.mjs +78 -0
- package/scripts/lib/locales/da.mjs +78 -0
- package/scripts/lib/locales/de.mjs +78 -0
- package/scripts/lib/locales/el.mjs +78 -0
- package/scripts/lib/locales/en.mjs +78 -0
- package/scripts/lib/locales/es.mjs +78 -0
- package/scripts/lib/locales/et.mjs +78 -0
- package/scripts/lib/locales/fi.mjs +78 -0
- package/scripts/lib/locales/fil.mjs +78 -0
- package/scripts/lib/locales/fr.mjs +78 -0
- package/scripts/lib/locales/ga.mjs +78 -0
- package/scripts/lib/locales/ha.mjs +78 -0
- package/scripts/lib/locales/hr.mjs +78 -0
- package/scripts/lib/locales/hu.mjs +78 -0
- package/scripts/lib/locales/id.mjs +78 -0
- package/scripts/lib/locales/is.mjs +78 -0
- package/scripts/lib/locales/it.mjs +78 -0
- package/scripts/lib/locales/jv.mjs +78 -0
- package/scripts/lib/locales/lb.mjs +78 -0
- package/scripts/lib/locales/lt.mjs +78 -0
- package/scripts/lib/locales/lv.mjs +78 -0
- package/scripts/lib/locales/mk.mjs +78 -0
- package/scripts/lib/locales/mt.mjs +78 -0
- package/scripts/lib/locales/nb.mjs +78 -0
- package/scripts/lib/locales/nl.mjs +78 -0
- package/scripts/lib/locales/nn.mjs +78 -0
- package/scripts/lib/locales/pcm.mjs +78 -0
- package/scripts/lib/locales/pl.mjs +78 -0
- package/scripts/lib/locales/pt.mjs +78 -0
- package/scripts/lib/locales/ro.mjs +78 -0
- package/scripts/lib/locales/ru.mjs +78 -0
- package/scripts/lib/locales/sk.mjs +78 -0
- package/scripts/lib/locales/sl.mjs +78 -0
- package/scripts/lib/locales/sq.mjs +78 -0
- package/scripts/lib/locales/sr-Cyrl.mjs +78 -0
- package/scripts/lib/locales/sr-Latn.mjs +78 -0
- package/scripts/lib/locales/sv.mjs +78 -0
- package/scripts/lib/locales/sw.mjs +78 -0
- package/scripts/lib/locales/tr.mjs +78 -0
- package/scripts/lib/locales/uk.mjs +78 -0
- package/scripts/lib/locales/vi.mjs +78 -0
- package/scripts/lib/markdown-links.mjs +4 -25
- package/scripts/lib/markdown-notes-render-plugin.mjs +75 -0
- package/scripts/lib/markdown-notes.mjs +165 -0
- package/scripts/lib/norna-markdown-blocks.mjs +32 -447
- package/scripts/lib/norna-markdown-render-plugin.mjs +4 -0
- package/scripts/lib/page-aliases.mjs +12 -1
- package/scripts/lib/page-markdown.mjs +63 -16
- package/scripts/lib/page-move-plan.mjs +22 -5
- package/scripts/lib/pagefind-translations.mjs +620 -0
- package/scripts/lib/presentation-contract.mjs +6 -1
- package/scripts/lib/presentation.mjs +29 -30
- package/scripts/lib/project-config.mjs +2 -173
- package/scripts/lib/schema-definitions.mjs +3 -10
- package/scripts/lib/schema-editor-metadata.mjs +22 -43
- package/scripts/lib/schema-value-definitions.mjs +4 -8
- package/scripts/lib/semantic-callouts.mjs +4 -2
- package/scripts/lib/site-content.mjs +4 -2
- package/scripts/lib/site-link-graph.mjs +16 -6
- package/scripts/lib/site-navigation-tree.mjs +0 -11
- package/scripts/lib/sitemap.mjs +5 -3
- package/scripts/lib/structured-blocks.mjs +108 -0
- package/scripts/lib/table-render-plugin.mjs +46 -3
- package/scripts/lib/table-row-headers.mjs +218 -0
- package/scripts/lib/theme-presets.mjs +3 -10
- package/scripts/lib/yaml-config.mjs +2 -6
- package/scripts/migrate-check.mjs +19 -0
- package/scripts/sync-content-sections.mjs +39 -10
- package/scripts/sync-site-public.mjs +7 -1
- package/src/components/CodeBlockCopyScript.astro +47 -5
- package/src/components/ContentBlocks.astro +39 -0
- package/src/components/ContentTabsScript.astro +60 -0
- package/src/components/DisplaySettings.astro +17 -19
- package/src/components/NavigationPageTree.astro +1 -1
- package/src/components/NoteNavigationScript.astro +4 -0
- package/src/components/PageAliasRedirect.astro +5 -4
- package/src/components/SearchNavigationScript.astro +4 -0
- package/src/components/SearchPage.astro +43 -2
- package/src/components/SectionNavigationScript.astro +43 -11
- package/src/components/SiteBreadcrumbs.astro +1 -1
- package/src/components/SiteNavigation.astro +29 -20
- package/src/components/SitePage.astro +40 -15
- package/src/components/SiteSection.astro +5 -81
- package/src/components/SiteTreeNavigation.astro +2 -2
- package/src/components/TableOverflowScript.astro +386 -58
- package/src/components/TopPageMenu.astro +47 -0
- package/src/components/TreeNavigationScript.astro +10 -3
- package/src/layouts/BaseLayout.astro +8 -12
- package/src/lib/navigationFollowing.ts +142 -0
- package/src/lib/noteNavigation.ts +50 -0
- package/src/lib/searchNavigation.ts +107 -0
- package/src/lib/sectionContent.ts +20 -90
- package/src/lib/siteNavigation.ts +0 -5
- package/src/lib/sitePages.ts +13 -2
- package/src/lib/table-sort-tooltip.ts +109 -0
- package/src/pages/[...slug].astro +16 -6
- package/src/styles/content.css +394 -132
- package/src/styles/foundations.css +9 -0
- package/src/styles/media.css +5 -0
- package/src/styles/navigation.css +63 -74
- package/src/styles/page-layout.css +7 -0
- package/src/styles/responsive.css +2 -7
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export default Object.freeze({
|
|
2
|
+
tableSortAscending: 'Sortiraj rastuće',
|
|
3
|
+
tableSortDescending: 'Sortiraj opadajuće',
|
|
4
|
+
tableSortReset: 'Vrati izvorni redosled',
|
|
5
|
+
breadcrumb: 'Putanja navigacije',
|
|
6
|
+
appearance: 'Izgled',
|
|
7
|
+
appearanceDark: 'Tamni',
|
|
8
|
+
appearanceLight: 'Svetli',
|
|
9
|
+
appearanceSystem: 'Sistemski',
|
|
10
|
+
codeCopied: 'Kopirano',
|
|
11
|
+
codeCopyFailed: 'Kod nije moguće kopirati',
|
|
12
|
+
copyCode: 'Kopiraj kod',
|
|
13
|
+
calloutCaution: 'Oprez',
|
|
14
|
+
calloutDanger: 'Opasnost',
|
|
15
|
+
calloutImportant: 'Važno',
|
|
16
|
+
calloutNote: 'Napomena',
|
|
17
|
+
calloutTip: 'Savet',
|
|
18
|
+
calloutWarning: 'Upozorenje',
|
|
19
|
+
closeNavigation: 'Zatvori navigaciju',
|
|
20
|
+
editSource: 'Uredi ovu stranicu',
|
|
21
|
+
displaySettings: 'Prikaz',
|
|
22
|
+
focusReading: 'Fokusirano čitanje',
|
|
23
|
+
footnoteBackReference: 'Nazad na referencu {reference}',
|
|
24
|
+
footnotes: 'Fusnote',
|
|
25
|
+
readingWidth: 'Širina čitanja',
|
|
26
|
+
readingWidthNarrow: 'Uska',
|
|
27
|
+
readingWidthStandard: 'Standardna',
|
|
28
|
+
readingWidthWide: 'Široka',
|
|
29
|
+
resetDisplaySettings: 'Vrati postavke',
|
|
30
|
+
dismissBanner: 'Zatvori obaveštenje',
|
|
31
|
+
built: 'Izgrađeno',
|
|
32
|
+
images: 'Slike',
|
|
33
|
+
imageCarousel: 'vrteška slika',
|
|
34
|
+
imageInspection: 'Pregled slike',
|
|
35
|
+
imageInspectionActualSize: 'Prikaži stvarnu veličinu',
|
|
36
|
+
imageInspectionClose: 'Zatvori pregled slike',
|
|
37
|
+
imageInspectionFit: 'Prilagodi sliku prozoru',
|
|
38
|
+
inspectImage: 'Pregledaj sliku: {description}',
|
|
39
|
+
navigationCollapsedAll: 'Sve stavke navigacije su skupljene.',
|
|
40
|
+
navigationCollapseAll: 'Skupi sve',
|
|
41
|
+
navigationControls: 'Kontrole navigacionog stabla',
|
|
42
|
+
navigationChildren: 'Podstranice',
|
|
43
|
+
navigationExpandedAll: 'Sve stavke navigacije su proširene.',
|
|
44
|
+
navigationExpandAll: 'Proširi sve',
|
|
45
|
+
navigationFilter: 'Filtriraj stranice i grupe',
|
|
46
|
+
navigationFilterEmpty: 'Nema odgovarajućih stranica ili grupa. Trenutna stranica ostaje dostupna.',
|
|
47
|
+
navigationFilterMatches: 'Odgovarajuće stavke navigacije: {count}',
|
|
48
|
+
navigationLocatedCurrent: 'Trenutna stranica je pronađena.',
|
|
49
|
+
navigationLocateCurrent: 'Pronađi trenutnu stranicu',
|
|
50
|
+
navigationMenu: 'Meni',
|
|
51
|
+
nextImage: 'Sledeća slika',
|
|
52
|
+
nextPage: 'Sledeća stranica',
|
|
53
|
+
note: 'Napomena',
|
|
54
|
+
openInVsCode: 'Otvori u VS Code-u',
|
|
55
|
+
notFound: 'Stranica nije pronađena',
|
|
56
|
+
notFoundText: 'Tražena stranica ne postoji ili je možda premeštena.',
|
|
57
|
+
pageMoved: 'Stranica je premeštena',
|
|
58
|
+
pageMovedText: 'Ova adresa sada vodi na',
|
|
59
|
+
pageNavigation: 'Sadržaj stranice',
|
|
60
|
+
pageSequence: 'Redosled stranica',
|
|
61
|
+
pageSections: 'Odeljci',
|
|
62
|
+
previousImage: 'Prethodna slika',
|
|
63
|
+
previousPage: 'Prethodna stranica',
|
|
64
|
+
returnHome: 'Idi na početnu stranicu',
|
|
65
|
+
searchReturn: 'Nazad na {page}',
|
|
66
|
+
search: 'Pretraga',
|
|
67
|
+
searchDescription: 'Pretraži objavljeni sadržaj ovog sajta.',
|
|
68
|
+
searchLoading: 'Učitavanje pretrage…',
|
|
69
|
+
searchNoScript: 'Pretraga zahteva JavaScript. Koristite navigaciju stranica kada JavaScript nije dostupan.',
|
|
70
|
+
searchUnavailable: 'Pretraga nije dostupna. Tokom lokalnog rada pokrenite norna build:local da napravite ili osvežite indeks pretrage.',
|
|
71
|
+
siteBanners: 'Obaveštenja sajta',
|
|
72
|
+
siteNavigation: 'Stranice',
|
|
73
|
+
skipToContent: 'Idi na sadržaj',
|
|
74
|
+
tableColumns: 'Kolone tabele',
|
|
75
|
+
tableNextColumns: 'Prikaži sledeće kolone',
|
|
76
|
+
tableOverflowDescription: 'Više kolona tabele dostupno je vodoravno.',
|
|
77
|
+
tablePreviousColumns: 'Prikaži prethodne kolone',
|
|
78
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export default Object.freeze({
|
|
2
|
+
tableSortAscending: 'Sortera stigande',
|
|
3
|
+
tableSortDescending: 'Sortera fallande',
|
|
4
|
+
tableSortReset: 'Återställ ursprunglig ordning',
|
|
5
|
+
breadcrumb: 'Brödsmulor',
|
|
6
|
+
appearance: 'Utseende',
|
|
7
|
+
appearanceDark: 'Mörkt',
|
|
8
|
+
appearanceLight: 'Ljust',
|
|
9
|
+
appearanceSystem: 'System',
|
|
10
|
+
codeCopied: 'Kopierat',
|
|
11
|
+
codeCopyFailed: 'Kunde inte kopiera koden',
|
|
12
|
+
copyCode: 'Kopiera kod',
|
|
13
|
+
calloutCaution: 'Var försiktig',
|
|
14
|
+
calloutDanger: 'Fara',
|
|
15
|
+
calloutImportant: 'Viktigt',
|
|
16
|
+
calloutNote: 'Notera',
|
|
17
|
+
calloutTip: 'Tips',
|
|
18
|
+
calloutWarning: 'Varning',
|
|
19
|
+
closeNavigation: 'Stäng navigationen',
|
|
20
|
+
editSource: 'Redigera den här sidan',
|
|
21
|
+
displaySettings: 'Visning',
|
|
22
|
+
focusReading: 'Fokuserad läsning',
|
|
23
|
+
footnoteBackReference: 'Tillbaka till referens {reference}',
|
|
24
|
+
footnotes: 'Fotnoter',
|
|
25
|
+
readingWidth: 'Textbredd',
|
|
26
|
+
readingWidthNarrow: 'Smal',
|
|
27
|
+
readingWidthStandard: 'Standard',
|
|
28
|
+
readingWidthWide: 'Bred',
|
|
29
|
+
resetDisplaySettings: 'Återställ',
|
|
30
|
+
dismissBanner: 'Stäng meddelande',
|
|
31
|
+
built: 'Byggd',
|
|
32
|
+
images: 'Bilder',
|
|
33
|
+
imageCarousel: 'bildkarusell',
|
|
34
|
+
imageInspection: 'Bildgranskning',
|
|
35
|
+
imageInspectionActualSize: 'Visa faktisk storlek',
|
|
36
|
+
imageInspectionClose: 'Stäng bildgranskning',
|
|
37
|
+
imageInspectionFit: 'Anpassa bilden till fönstret',
|
|
38
|
+
inspectImage: 'Granska bild: {description}',
|
|
39
|
+
navigationCollapsedAll: 'Alla navigationsposter har fällts ihop.',
|
|
40
|
+
navigationCollapseAll: 'Fäll ihop alla',
|
|
41
|
+
navigationControls: 'Kontroller för navigationsträdet',
|
|
42
|
+
navigationChildren: 'Undersidor',
|
|
43
|
+
navigationExpandedAll: 'Alla navigationsposter har fällts ut.',
|
|
44
|
+
navigationExpandAll: 'Fäll ut alla',
|
|
45
|
+
navigationFilter: 'Filtrera sidor och grupper',
|
|
46
|
+
navigationFilterEmpty: 'Inga sidor eller grupper matchar. Den aktuella sidan är fortfarande tillgänglig.',
|
|
47
|
+
navigationFilterMatches: 'Matchande navigationsposter: {count}',
|
|
48
|
+
navigationLocatedCurrent: 'Den aktuella sidan har hittats.',
|
|
49
|
+
navigationLocateCurrent: 'Hitta aktuell sida',
|
|
50
|
+
navigationMenu: 'Meny',
|
|
51
|
+
nextImage: 'Nästa bild',
|
|
52
|
+
nextPage: 'Nästa sida',
|
|
53
|
+
note: 'Not',
|
|
54
|
+
openInVsCode: 'Öppna i VS Code',
|
|
55
|
+
notFound: 'Sidan hittades inte',
|
|
56
|
+
notFoundText: 'Den begärda sidan finns inte eller kan ha flyttats.',
|
|
57
|
+
pageMoved: 'Sidan har flyttats',
|
|
58
|
+
pageMovedText: 'Den här adressen identifierar nu',
|
|
59
|
+
pageNavigation: 'Sidinnehåll',
|
|
60
|
+
pageSequence: 'Sidföljd',
|
|
61
|
+
pageSections: 'Avsnitt',
|
|
62
|
+
previousImage: 'Föregående bild',
|
|
63
|
+
previousPage: 'Föregående sida',
|
|
64
|
+
returnHome: 'Gå till startsidan',
|
|
65
|
+
searchReturn: 'Tillbaka till {page}',
|
|
66
|
+
search: 'Sök',
|
|
67
|
+
searchDescription: 'Sök i det publicerade innehållet på webbplatsen.',
|
|
68
|
+
searchLoading: 'Laddar sökning…',
|
|
69
|
+
searchNoScript: 'Sökning kräver JavaScript. Använd sidnavigeringen när JavaScript inte är tillgängligt.',
|
|
70
|
+
searchUnavailable: 'Sökningen är inte tillgänglig. Kör norna build:local under lokalt arbete för att skapa eller uppdatera sökindexet.',
|
|
71
|
+
siteBanners: 'Meddelanden',
|
|
72
|
+
siteNavigation: 'Sidor',
|
|
73
|
+
skipToContent: 'Hoppa till innehållet',
|
|
74
|
+
tableColumns: 'Tabellkolumner',
|
|
75
|
+
tableNextColumns: 'Visa nästa kolumner',
|
|
76
|
+
tableOverflowDescription: 'Fler tabellkolumner är tillgängliga i sidled.',
|
|
77
|
+
tablePreviousColumns: 'Visa föregående kolumner',
|
|
78
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export default Object.freeze({
|
|
2
|
+
tableSortAscending: 'Panga kwa kupanda',
|
|
3
|
+
tableSortDescending: 'Panga kwa kushuka',
|
|
4
|
+
tableSortReset: 'Rejesha mpangilio wa awali',
|
|
5
|
+
breadcrumb: 'Mfuatano wa urambazaji',
|
|
6
|
+
appearance: 'Mwonekano',
|
|
7
|
+
appearanceDark: 'Giza',
|
|
8
|
+
appearanceLight: 'Nuru',
|
|
9
|
+
appearanceSystem: 'Mfumo',
|
|
10
|
+
codeCopied: 'Imenakiliwa',
|
|
11
|
+
codeCopyFailed: 'Haikuwezekana kunakili msimbo',
|
|
12
|
+
copyCode: 'Nakili msimbo',
|
|
13
|
+
calloutCaution: 'Tahadhari',
|
|
14
|
+
calloutDanger: 'Hatari',
|
|
15
|
+
calloutImportant: 'Muhimu',
|
|
16
|
+
calloutNote: 'Dokezo',
|
|
17
|
+
calloutTip: 'Kidokezo',
|
|
18
|
+
calloutWarning: 'Onyo',
|
|
19
|
+
closeNavigation: 'Funga urambazaji',
|
|
20
|
+
editSource: 'Hariri ukurasa huu',
|
|
21
|
+
displaySettings: 'Onyesho',
|
|
22
|
+
focusReading: 'Usomaji wenye umakini',
|
|
23
|
+
footnoteBackReference: 'Rudi kwenye rejeleo {reference}',
|
|
24
|
+
footnotes: 'Tanbihi',
|
|
25
|
+
readingWidth: 'Upana wa kusoma',
|
|
26
|
+
readingWidthNarrow: 'Mwembamba',
|
|
27
|
+
readingWidthStandard: 'Wastani',
|
|
28
|
+
readingWidthWide: 'Mpana',
|
|
29
|
+
resetDisplaySettings: 'Weka upya',
|
|
30
|
+
dismissBanner: 'Funga taarifa',
|
|
31
|
+
built: 'Imejengwa',
|
|
32
|
+
images: 'Picha',
|
|
33
|
+
imageCarousel: 'mzunguko wa picha',
|
|
34
|
+
imageInspection: 'Ukaguzi wa picha',
|
|
35
|
+
imageInspectionActualSize: 'Onyesha ukubwa halisi',
|
|
36
|
+
imageInspectionClose: 'Funga ukaguzi wa picha',
|
|
37
|
+
imageInspectionFit: 'Linganisha picha na dirisha',
|
|
38
|
+
inspectImage: 'Kagua picha: {description}',
|
|
39
|
+
navigationCollapsedAll: 'Vipengee vyote vya urambazaji vimekunjwa.',
|
|
40
|
+
navigationCollapseAll: 'Kunja vyote',
|
|
41
|
+
navigationControls: 'Vidhibiti vya mti wa urambazaji',
|
|
42
|
+
navigationChildren: 'Kurasa tanzu',
|
|
43
|
+
navigationExpandedAll: 'Vipengee vyote vya urambazaji vimepanuliwa.',
|
|
44
|
+
navigationExpandAll: 'Panua vyote',
|
|
45
|
+
navigationFilter: 'Chuja kurasa na vikundi',
|
|
46
|
+
navigationFilterEmpty: 'Hakuna kurasa au vikundi vinavyolingana. Ukurasa wa sasa bado unapatikana.',
|
|
47
|
+
navigationFilterMatches: 'Vipengee vya urambazaji vinavyolingana: {count}',
|
|
48
|
+
navigationLocatedCurrent: 'Ukurasa wa sasa umepatikana.',
|
|
49
|
+
navigationLocateCurrent: 'Tafuta ukurasa wa sasa',
|
|
50
|
+
navigationMenu: 'Menyu',
|
|
51
|
+
nextImage: 'Picha inayofuata',
|
|
52
|
+
nextPage: 'Ukurasa unaofuata',
|
|
53
|
+
note: 'Dokezo',
|
|
54
|
+
openInVsCode: 'Fungua katika VS Code',
|
|
55
|
+
notFound: 'Ukurasa haujapatikana',
|
|
56
|
+
notFoundText: 'Ukurasa ulioombwa haupo au huenda umehamishwa.',
|
|
57
|
+
pageMoved: 'Ukurasa umehamishwa',
|
|
58
|
+
pageMovedText: 'Anwani hii sasa inatambulisha',
|
|
59
|
+
pageNavigation: 'Yaliyomo kwenye ukurasa',
|
|
60
|
+
pageSequence: 'Mfuatano wa kurasa',
|
|
61
|
+
pageSections: 'Sehemu',
|
|
62
|
+
previousImage: 'Picha iliyotangulia',
|
|
63
|
+
previousPage: 'Ukurasa uliotangulia',
|
|
64
|
+
returnHome: 'Nenda kwenye ukurasa wa mwanzo',
|
|
65
|
+
searchReturn: 'Rudi kwenye {page}',
|
|
66
|
+
search: 'Tafuta',
|
|
67
|
+
searchDescription: 'Tafuta maudhui yaliyochapishwa kwenye tovuti hii.',
|
|
68
|
+
searchLoading: 'Inapakia utafutaji…',
|
|
69
|
+
searchNoScript: 'Utafutaji unahitaji JavaScript. Tumia urambazaji wa kurasa wakati JavaScript haipatikani.',
|
|
70
|
+
searchUnavailable: 'Utafutaji haupatikani. Unapofanya kazi ndani ya kompyuta, endesha norna build:local ili kuunda au kusasisha faharasa ya utafutaji.',
|
|
71
|
+
siteBanners: 'Taarifa za tovuti',
|
|
72
|
+
siteNavigation: 'Kurasa',
|
|
73
|
+
skipToContent: 'Ruka hadi kwenye maudhui',
|
|
74
|
+
tableColumns: 'Safu wima za jedwali',
|
|
75
|
+
tableNextColumns: 'Onyesha safu wima zinazofuata',
|
|
76
|
+
tableOverflowDescription: 'Safu wima zaidi za jedwali zinapatikana kwa upande.',
|
|
77
|
+
tablePreviousColumns: 'Onyesha safu wima zilizotangulia',
|
|
78
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export default Object.freeze({
|
|
2
|
+
tableSortAscending: 'Artan sırada sırala',
|
|
3
|
+
tableSortDescending: 'Azalan sırada sırala',
|
|
4
|
+
tableSortReset: 'Özgün sırayı geri yükle',
|
|
5
|
+
breadcrumb: 'Gezinti yolu',
|
|
6
|
+
appearance: 'Görünüm',
|
|
7
|
+
appearanceDark: 'Koyu',
|
|
8
|
+
appearanceLight: 'Açık',
|
|
9
|
+
appearanceSystem: 'Sistem',
|
|
10
|
+
codeCopied: 'Kopyalandı',
|
|
11
|
+
codeCopyFailed: 'Kod kopyalanamadı',
|
|
12
|
+
copyCode: 'Kodu kopyala',
|
|
13
|
+
calloutCaution: 'Dikkat',
|
|
14
|
+
calloutDanger: 'Tehlike',
|
|
15
|
+
calloutImportant: 'Önemli',
|
|
16
|
+
calloutNote: 'Not',
|
|
17
|
+
calloutTip: 'İpucu',
|
|
18
|
+
calloutWarning: 'Uyarı',
|
|
19
|
+
closeNavigation: 'Gezintiyi kapat',
|
|
20
|
+
editSource: 'Bu sayfayı düzenle',
|
|
21
|
+
displaySettings: 'Görüntüleme',
|
|
22
|
+
focusReading: 'Odaklı okuma',
|
|
23
|
+
footnoteBackReference: '{reference} numaralı başvuruya dön',
|
|
24
|
+
footnotes: 'Dipnotlar',
|
|
25
|
+
readingWidth: 'Okuma genişliği',
|
|
26
|
+
readingWidthNarrow: 'Dar',
|
|
27
|
+
readingWidthStandard: 'Standart',
|
|
28
|
+
readingWidthWide: 'Geniş',
|
|
29
|
+
resetDisplaySettings: 'Sıfırla',
|
|
30
|
+
dismissBanner: 'Bildirimi kapat',
|
|
31
|
+
built: 'Oluşturuldu',
|
|
32
|
+
images: 'Görseller',
|
|
33
|
+
imageCarousel: 'görsel döngüsü',
|
|
34
|
+
imageInspection: 'Görsel inceleme',
|
|
35
|
+
imageInspectionActualSize: 'Gerçek boyutu göster',
|
|
36
|
+
imageInspectionClose: 'Görsel incelemeyi kapat',
|
|
37
|
+
imageInspectionFit: 'Görseli pencereye sığdır',
|
|
38
|
+
inspectImage: 'Görseli incele: {description}',
|
|
39
|
+
navigationCollapsedAll: 'Tüm gezinti öğeleri daraltıldı.',
|
|
40
|
+
navigationCollapseAll: 'Tümünü daralt',
|
|
41
|
+
navigationControls: 'Gezinti ağacı denetimleri',
|
|
42
|
+
navigationChildren: 'Alt sayfalar',
|
|
43
|
+
navigationExpandedAll: 'Tüm gezinti öğeleri genişletildi.',
|
|
44
|
+
navigationExpandAll: 'Tümünü genişlet',
|
|
45
|
+
navigationFilter: 'Sayfaları ve grupları filtrele',
|
|
46
|
+
navigationFilterEmpty: 'Eşleşen sayfa veya grup yok. Geçerli sayfaya erişilebilir.',
|
|
47
|
+
navigationFilterMatches: 'Eşleşen gezinti öğeleri: {count}',
|
|
48
|
+
navigationLocatedCurrent: 'Geçerli sayfa bulundu.',
|
|
49
|
+
navigationLocateCurrent: 'Geçerli sayfayı bul',
|
|
50
|
+
navigationMenu: 'Menü',
|
|
51
|
+
nextImage: 'Sonraki görsel',
|
|
52
|
+
nextPage: 'Sonraki sayfa',
|
|
53
|
+
note: 'Not',
|
|
54
|
+
openInVsCode: 'VS Code ile aç',
|
|
55
|
+
notFound: 'Sayfa bulunamadı',
|
|
56
|
+
notFoundText: 'İstenen sayfa mevcut değil veya taşınmış olabilir.',
|
|
57
|
+
pageMoved: 'Sayfa taşındı',
|
|
58
|
+
pageMovedText: 'Bu adres artık şu sayfayı tanımlıyor:',
|
|
59
|
+
pageNavigation: 'Sayfa içeriği',
|
|
60
|
+
pageSequence: 'Sayfa sırası',
|
|
61
|
+
pageSections: 'Bölümler',
|
|
62
|
+
previousImage: 'Önceki görsel',
|
|
63
|
+
previousPage: 'Önceki sayfa',
|
|
64
|
+
returnHome: 'Ana sayfaya git',
|
|
65
|
+
searchReturn: '{page} sayfasına dön',
|
|
66
|
+
search: 'Ara',
|
|
67
|
+
searchDescription: 'Bu sitede yayımlanmış içeriği arayın.',
|
|
68
|
+
searchLoading: 'Arama yükleniyor…',
|
|
69
|
+
searchNoScript: 'Arama için JavaScript gerekir. JavaScript kullanılamıyorsa sayfa gezintisini kullanın.',
|
|
70
|
+
searchUnavailable: 'Arama kullanılamıyor. Yerel çalışma sırasında arama dizinini oluşturmak veya yenilemek için norna build:local komutunu çalıştırın.',
|
|
71
|
+
siteBanners: 'Site bildirimleri',
|
|
72
|
+
siteNavigation: 'Sayfalar',
|
|
73
|
+
skipToContent: 'İçeriğe geç',
|
|
74
|
+
tableColumns: 'Tablo sütunları',
|
|
75
|
+
tableNextColumns: 'Sonraki sütunları göster',
|
|
76
|
+
tableOverflowDescription: 'Yatay olarak daha fazla tablo sütunu bulunuyor.',
|
|
77
|
+
tablePreviousColumns: 'Önceki sütunları göster',
|
|
78
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export default Object.freeze({
|
|
2
|
+
tableSortAscending: 'Сортувати за зростанням',
|
|
3
|
+
tableSortDescending: 'Сортувати за спаданням',
|
|
4
|
+
tableSortReset: 'Відновити початковий порядок',
|
|
5
|
+
breadcrumb: 'Шлях навігації',
|
|
6
|
+
appearance: 'Вигляд',
|
|
7
|
+
appearanceDark: 'Темний',
|
|
8
|
+
appearanceLight: 'Світлий',
|
|
9
|
+
appearanceSystem: 'Системний',
|
|
10
|
+
codeCopied: 'Скопійовано',
|
|
11
|
+
codeCopyFailed: 'Не вдалося скопіювати код',
|
|
12
|
+
copyCode: 'Копіювати код',
|
|
13
|
+
calloutCaution: 'Обережно',
|
|
14
|
+
calloutDanger: 'Небезпека',
|
|
15
|
+
calloutImportant: 'Важливо',
|
|
16
|
+
calloutNote: 'Примітка',
|
|
17
|
+
calloutTip: 'Порада',
|
|
18
|
+
calloutWarning: 'Попередження',
|
|
19
|
+
closeNavigation: 'Закрити навігацію',
|
|
20
|
+
editSource: 'Редагувати цю сторінку',
|
|
21
|
+
displaySettings: 'Відображення',
|
|
22
|
+
focusReading: 'Зосереджене читання',
|
|
23
|
+
footnoteBackReference: 'Повернутися до посилання {reference}',
|
|
24
|
+
footnotes: 'Виноски',
|
|
25
|
+
readingWidth: 'Ширина читання',
|
|
26
|
+
readingWidthNarrow: 'Вузька',
|
|
27
|
+
readingWidthStandard: 'Стандартна',
|
|
28
|
+
readingWidthWide: 'Широка',
|
|
29
|
+
resetDisplaySettings: 'Скинути',
|
|
30
|
+
dismissBanner: 'Закрити повідомлення',
|
|
31
|
+
built: 'Створено',
|
|
32
|
+
images: 'Зображення',
|
|
33
|
+
imageCarousel: 'карусель зображень',
|
|
34
|
+
imageInspection: 'Перегляд зображення',
|
|
35
|
+
imageInspectionActualSize: 'Показати справжній розмір',
|
|
36
|
+
imageInspectionClose: 'Закрити перегляд зображення',
|
|
37
|
+
imageInspectionFit: 'Припасувати зображення до вікна',
|
|
38
|
+
inspectImage: 'Переглянути зображення: {description}',
|
|
39
|
+
navigationCollapsedAll: 'Усі елементи навігації згорнуто.',
|
|
40
|
+
navigationCollapseAll: 'Згорнути все',
|
|
41
|
+
navigationControls: 'Елементи керування деревом навігації',
|
|
42
|
+
navigationChildren: 'Дочірні сторінки',
|
|
43
|
+
navigationExpandedAll: 'Усі елементи навігації розгорнуто.',
|
|
44
|
+
navigationExpandAll: 'Розгорнути все',
|
|
45
|
+
navigationFilter: 'Фільтрувати сторінки та групи',
|
|
46
|
+
navigationFilterEmpty: 'Відповідних сторінок або груп немає. Поточна сторінка залишається доступною.',
|
|
47
|
+
navigationFilterMatches: 'Відповідні елементи навігації: {count}',
|
|
48
|
+
navigationLocatedCurrent: 'Поточну сторінку знайдено.',
|
|
49
|
+
navigationLocateCurrent: 'Знайти поточну сторінку',
|
|
50
|
+
navigationMenu: 'Меню',
|
|
51
|
+
nextImage: 'Наступне зображення',
|
|
52
|
+
nextPage: 'Наступна сторінка',
|
|
53
|
+
note: 'Примітка',
|
|
54
|
+
openInVsCode: 'Відкрити у VS Code',
|
|
55
|
+
notFound: 'Сторінку не знайдено',
|
|
56
|
+
notFoundText: 'Запитана сторінка не існує або її могли перемістити.',
|
|
57
|
+
pageMoved: 'Сторінку переміщено',
|
|
58
|
+
pageMovedText: 'Ця адреса тепер веде на',
|
|
59
|
+
pageNavigation: 'Зміст сторінки',
|
|
60
|
+
pageSequence: 'Послідовність сторінок',
|
|
61
|
+
pageSections: 'Розділи',
|
|
62
|
+
previousImage: 'Попереднє зображення',
|
|
63
|
+
previousPage: 'Попередня сторінка',
|
|
64
|
+
returnHome: 'Перейти на головну сторінку',
|
|
65
|
+
searchReturn: 'Повернутися до {page}',
|
|
66
|
+
search: 'Пошук',
|
|
67
|
+
searchDescription: 'Шукати в опублікованому вмісті цього сайту.',
|
|
68
|
+
searchLoading: 'Завантаження пошуку…',
|
|
69
|
+
searchNoScript: 'Для пошуку потрібен JavaScript. Коли JavaScript недоступний, використовуйте навігацію сторінками.',
|
|
70
|
+
searchUnavailable: 'Пошук недоступний. Під час локальної роботи запустіть norna build:local, щоб створити або оновити пошуковий індекс.',
|
|
71
|
+
siteBanners: 'Повідомлення сайту',
|
|
72
|
+
siteNavigation: 'Сторінки',
|
|
73
|
+
skipToContent: 'Перейти до вмісту',
|
|
74
|
+
tableColumns: 'Стовпці таблиці',
|
|
75
|
+
tableNextColumns: 'Показати наступні стовпці',
|
|
76
|
+
tableOverflowDescription: 'Додаткові стовпці таблиці доступні горизонтально.',
|
|
77
|
+
tablePreviousColumns: 'Показати попередні стовпці',
|
|
78
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export default Object.freeze({
|
|
2
|
+
tableSortAscending: 'Sắp xếp tăng dần',
|
|
3
|
+
tableSortDescending: 'Sắp xếp giảm dần',
|
|
4
|
+
tableSortReset: 'Khôi phục thứ tự ban đầu',
|
|
5
|
+
breadcrumb: 'Đường dẫn điều hướng',
|
|
6
|
+
appearance: 'Giao diện',
|
|
7
|
+
appearanceDark: 'Tối',
|
|
8
|
+
appearanceLight: 'Sáng',
|
|
9
|
+
appearanceSystem: 'Hệ thống',
|
|
10
|
+
codeCopied: 'Đã sao chép',
|
|
11
|
+
codeCopyFailed: 'Không thể sao chép mã',
|
|
12
|
+
copyCode: 'Sao chép mã',
|
|
13
|
+
calloutCaution: 'Thận trọng',
|
|
14
|
+
calloutDanger: 'Nguy hiểm',
|
|
15
|
+
calloutImportant: 'Quan trọng',
|
|
16
|
+
calloutNote: 'Ghi chú',
|
|
17
|
+
calloutTip: 'Mẹo',
|
|
18
|
+
calloutWarning: 'Cảnh báo',
|
|
19
|
+
closeNavigation: 'Đóng điều hướng',
|
|
20
|
+
editSource: 'Chỉnh sửa trang này',
|
|
21
|
+
displaySettings: 'Hiển thị',
|
|
22
|
+
focusReading: 'Tập trung đọc',
|
|
23
|
+
footnoteBackReference: 'Quay lại tham chiếu {reference}',
|
|
24
|
+
footnotes: 'Chú thích cuối trang',
|
|
25
|
+
readingWidth: 'Chiều rộng đọc',
|
|
26
|
+
readingWidthNarrow: 'Hẹp',
|
|
27
|
+
readingWidthStandard: 'Tiêu chuẩn',
|
|
28
|
+
readingWidthWide: 'Rộng',
|
|
29
|
+
resetDisplaySettings: 'Đặt lại',
|
|
30
|
+
dismissBanner: 'Đóng thông báo',
|
|
31
|
+
built: 'Đã tạo',
|
|
32
|
+
images: 'Hình ảnh',
|
|
33
|
+
imageCarousel: 'băng chuyền hình ảnh',
|
|
34
|
+
imageInspection: 'Kiểm tra hình ảnh',
|
|
35
|
+
imageInspectionActualSize: 'Hiển thị kích thước thật',
|
|
36
|
+
imageInspectionClose: 'Đóng kiểm tra hình ảnh',
|
|
37
|
+
imageInspectionFit: 'Điều chỉnh hình ảnh vừa cửa sổ',
|
|
38
|
+
inspectImage: 'Kiểm tra hình ảnh: {description}',
|
|
39
|
+
navigationCollapsedAll: 'Tất cả mục điều hướng đã được thu gọn.',
|
|
40
|
+
navigationCollapseAll: 'Thu gọn tất cả',
|
|
41
|
+
navigationControls: 'Điều khiển cây điều hướng',
|
|
42
|
+
navigationChildren: 'Trang con',
|
|
43
|
+
navigationExpandedAll: 'Tất cả mục điều hướng đã được mở rộng.',
|
|
44
|
+
navigationExpandAll: 'Mở rộng tất cả',
|
|
45
|
+
navigationFilter: 'Lọc trang và nhóm',
|
|
46
|
+
navigationFilterEmpty: 'Không có trang hoặc nhóm phù hợp. Trang hiện tại vẫn có sẵn.',
|
|
47
|
+
navigationFilterMatches: 'Mục điều hướng phù hợp: {count}',
|
|
48
|
+
navigationLocatedCurrent: 'Đã định vị trang hiện tại.',
|
|
49
|
+
navigationLocateCurrent: 'Định vị trang hiện tại',
|
|
50
|
+
navigationMenu: 'Trình đơn',
|
|
51
|
+
nextImage: 'Hình ảnh tiếp theo',
|
|
52
|
+
nextPage: 'Trang tiếp theo',
|
|
53
|
+
note: 'Ghi chú',
|
|
54
|
+
openInVsCode: 'Mở trong VS Code',
|
|
55
|
+
notFound: 'Không tìm thấy trang',
|
|
56
|
+
notFoundText: 'Trang được yêu cầu không tồn tại hoặc có thể đã được di chuyển.',
|
|
57
|
+
pageMoved: 'Trang đã di chuyển',
|
|
58
|
+
pageMovedText: 'Địa chỉ này hiện xác định',
|
|
59
|
+
pageNavigation: 'Nội dung trang',
|
|
60
|
+
pageSequence: 'Thứ tự trang',
|
|
61
|
+
pageSections: 'Các phần',
|
|
62
|
+
previousImage: 'Hình ảnh trước',
|
|
63
|
+
previousPage: 'Trang trước',
|
|
64
|
+
returnHome: 'Đi đến trang chủ',
|
|
65
|
+
searchReturn: 'Quay lại {page}',
|
|
66
|
+
search: 'Tìm kiếm',
|
|
67
|
+
searchDescription: 'Tìm kiếm nội dung đã xuất bản trên trang web này.',
|
|
68
|
+
searchLoading: 'Đang tải tìm kiếm…',
|
|
69
|
+
searchNoScript: 'Tìm kiếm cần JavaScript. Hãy dùng điều hướng trang khi không có JavaScript.',
|
|
70
|
+
searchUnavailable: 'Tìm kiếm không khả dụng. Khi làm việc cục bộ, hãy chạy norna build:local để tạo hoặc làm mới chỉ mục tìm kiếm.',
|
|
71
|
+
siteBanners: 'Thông báo trang web',
|
|
72
|
+
siteNavigation: 'Trang',
|
|
73
|
+
skipToContent: 'Chuyển đến nội dung',
|
|
74
|
+
tableColumns: 'Cột bảng',
|
|
75
|
+
tableNextColumns: 'Hiển thị các cột tiếp theo',
|
|
76
|
+
tableOverflowDescription: 'Có thêm các cột bảng theo chiều ngang.',
|
|
77
|
+
tablePreviousColumns: 'Hiển thị các cột trước',
|
|
78
|
+
});
|
|
@@ -129,28 +129,6 @@ const getLineOffsets = (source) => {
|
|
|
129
129
|
return offsets;
|
|
130
130
|
};
|
|
131
131
|
|
|
132
|
-
const getCardLinkTargetRange = (source, lineStart) => {
|
|
133
|
-
const lineEnd = source.indexOf('\n', lineStart);
|
|
134
|
-
const end = lineEnd < 0 ? source.length : lineEnd;
|
|
135
|
-
const line = source.slice(lineStart, end);
|
|
136
|
-
const match = line.match(/^\s*link:\s*(.*?)\s*$/);
|
|
137
|
-
if (!match) return null;
|
|
138
|
-
|
|
139
|
-
const value = match[1] ?? '';
|
|
140
|
-
let valueStart = lineStart + (match.index ?? 0) + match[0].indexOf(value);
|
|
141
|
-
let valueEnd = valueStart + value.length;
|
|
142
|
-
if (
|
|
143
|
-
value.length >= 2
|
|
144
|
-
&& (value[0] === '"' || value[0] === "'")
|
|
145
|
-
&& value.at(-1) === value[0]
|
|
146
|
-
) {
|
|
147
|
-
valueStart += 1;
|
|
148
|
-
valueEnd -= 1;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return { start: valueStart, end: valueEnd };
|
|
152
|
-
};
|
|
153
|
-
|
|
154
132
|
export const extractNornaBlockLinks = ({ source, blocks, lineOffset = 0 }) => {
|
|
155
133
|
const lineOffsets = getLineOffsets(source);
|
|
156
134
|
const links = [];
|
|
@@ -161,8 +139,8 @@ export const extractNornaBlockLinks = ({ source, blocks, lineOffset = 0 }) => {
|
|
|
161
139
|
if (!card.link || !card.linkLine) continue;
|
|
162
140
|
const localLine = card.linkLine - lineOffset;
|
|
163
141
|
const lineStart = lineOffsets[localLine - 1];
|
|
164
|
-
const targetRange = Number.isInteger(
|
|
165
|
-
?
|
|
142
|
+
const targetRange = card.linkRange && Number.isInteger(block.sourceStartOffset)
|
|
143
|
+
? { start: block.sourceStartOffset + card.linkRange.start, end: block.sourceStartOffset + card.linkRange.end }
|
|
166
144
|
: null;
|
|
167
145
|
links.push({
|
|
168
146
|
kind: 'card-link',
|
|
@@ -173,7 +151,8 @@ export const extractNornaBlockLinks = ({ source, blocks, lineOffset = 0 }) => {
|
|
|
173
151
|
range: targetRange,
|
|
174
152
|
target: card.link,
|
|
175
153
|
targetRange,
|
|
176
|
-
targetSource:
|
|
154
|
+
targetSource: card.link,
|
|
155
|
+
yamlScalar: true,
|
|
177
156
|
});
|
|
178
157
|
}
|
|
179
158
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { defineMdastPlugin } from 'satteri';
|
|
2
|
+
import { extractInlineNoteDiagnostics, noteTargetKey } from './markdown-notes.mjs';
|
|
3
|
+
import projectConfig from './project-config.mjs';
|
|
4
|
+
|
|
5
|
+
const stateKey = 'nornaMarkdownNotes';
|
|
6
|
+
const stateFor = (context) => {
|
|
7
|
+
if (!context.data[stateKey]) {
|
|
8
|
+
const model = extractInlineNoteDiagnostics(context.source, { label: context.fileURL?.pathname ?? 'Markdown' });
|
|
9
|
+
if (model.errors.length) throw new Error(model.errors[0].message);
|
|
10
|
+
for (const warning of model.warnings) context.report({ message: warning.message, severity: 'warning' });
|
|
11
|
+
context.data[stateKey] = {
|
|
12
|
+
notes: new Map(model.notes.map((note) => [note.identifier, note])),
|
|
13
|
+
definitions: new Map(model.definitions.map((node) => [node.identifier, node])),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
return context.data[stateKey];
|
|
17
|
+
};
|
|
18
|
+
const element = (tag, properties, children) => ({
|
|
19
|
+
type: 'blockquote', data: { hName: tag, hProperties: properties }, children,
|
|
20
|
+
});
|
|
21
|
+
const backLabel = (marker) => projectConfig.locale.labels.footnoteBackReference.replace('{reference}', marker);
|
|
22
|
+
const text = (value) => ({ type: 'text', value });
|
|
23
|
+
|
|
24
|
+
export const marginNoteLayoutDeclarations = [
|
|
25
|
+
'grid-template-columns: minmax(0, 1fr) var(--layout-note-width);',
|
|
26
|
+
'width: calc(100% + var(--layout-note-width) + var(--layout-note-gap));',
|
|
27
|
+
].join('\n');
|
|
28
|
+
|
|
29
|
+
// Register before the region/block renderer: note bodies and definitions must
|
|
30
|
+
// be resolved before heading replacement and before Satteri numbers footnotes.
|
|
31
|
+
export const nornaNotesRenderPlugin = defineMdastPlugin({
|
|
32
|
+
name: 'norna-markdown-notes',
|
|
33
|
+
paragraph(node, context) {
|
|
34
|
+
if (context.parent(node)?.type !== 'root') return;
|
|
35
|
+
const state = stateFor(context);
|
|
36
|
+
const notes = [];
|
|
37
|
+
const visit = (child) => {
|
|
38
|
+
if (child.type === 'footnoteReference' && state.notes.has(child.identifier)) notes.push(state.notes.get(child.identifier));
|
|
39
|
+
for (const nested of child.children ?? []) visit(nested);
|
|
40
|
+
};
|
|
41
|
+
visit(node);
|
|
42
|
+
if (!notes.length) return;
|
|
43
|
+
const bodies = notes.map((note) => element('aside', {
|
|
44
|
+
className: ['section-note', 'section-note-margin'], id: note.id, role: 'note',
|
|
45
|
+
'aria-label': `${projectConfig.locale.labels.note} ${note.marker}`,
|
|
46
|
+
}, [{
|
|
47
|
+
type: 'paragraph', data: { hName: 'span', hProperties: { className: ['section-note-number'] } },
|
|
48
|
+
children: [{ type: 'link', url: `#${note.referenceId}`, data: { hProperties: { id: `${note.id}:label`, 'aria-label': backLabel(note.marker) } }, children: [text(note.marker)] }],
|
|
49
|
+
}, {
|
|
50
|
+
...state.definitions.get(note.identifier).children[0],
|
|
51
|
+
data: { hName: 'span', hProperties: { className: ['section-note-content'] } },
|
|
52
|
+
}]));
|
|
53
|
+
context.wrapNode(node, element('div', { className: ['section-note-paragraph'] }, [
|
|
54
|
+
element('div', { className: ['section-note-stack'] }, bodies),
|
|
55
|
+
]));
|
|
56
|
+
},
|
|
57
|
+
footnoteReference(node, context) {
|
|
58
|
+
const note = stateFor(context).notes.get(node.identifier);
|
|
59
|
+
if (!note) {
|
|
60
|
+
context.setProperty(node, 'identifier', `norna:${noteTargetKey(node.identifier)}`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
context.replaceNode(node, {
|
|
64
|
+
type: 'emphasis', data: { hName: 'sup', hProperties: { className: ['section-note-ref'] } },
|
|
65
|
+
children: [{ type: 'link', url: `#${note.id}`, data: { hProperties: {
|
|
66
|
+
id: note.referenceId, 'aria-describedby': note.id,
|
|
67
|
+
} }, children: [text(note.marker)] }],
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
footnoteDefinition(node, context) {
|
|
71
|
+
stateFor(context);
|
|
72
|
+
if (node.identifier.startsWith('margin:')) context.removeNode(node);
|
|
73
|
+
else context.setProperty(node, 'identifier', `norna:${noteTargetKey(node.identifier)}`);
|
|
74
|
+
},
|
|
75
|
+
});
|