@nanoporetech-digital/components 8.4.3 → 8.5.1

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 (54) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/{local-logged-in-CLtc2TZa.js → local-logged-in-AF3ywQXV.js} +1 -1
  3. package/dist/cjs/{local-logged-out-Ao69_vQl.js → local-logged-out-DYEfc64n.js} +1 -1
  4. package/dist/cjs/nano-components.cjs.js +1 -1
  5. package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
  6. package/dist/cjs/nano-in-page-nav.cjs.entry.js +92 -13
  7. package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
  8. package/dist/collection/components/global-nav/assets/local-logged-in.json +2 -2
  9. package/dist/collection/components/global-nav/assets/local-logged-out.json +2 -2
  10. package/dist/collection/components/in-page-nav/in-page-nav.css +12 -0
  11. package/dist/collection/components/in-page-nav/in-page-nav.js +125 -18
  12. package/dist/components/local-logged-in.js +1 -1
  13. package/dist/components/local-logged-out.js +1 -1
  14. package/dist/components/nano-in-page-nav.js +100 -15
  15. package/dist/esm/loader.js +1 -1
  16. package/dist/esm/{local-logged-in-Bh5fOkeO.js → local-logged-in-B3A7tw10.js} +1 -1
  17. package/dist/esm/{local-logged-out-BQyUtSml.js → local-logged-out-BuucpKxf.js} +1 -1
  18. package/dist/esm/nano-components.js +1 -1
  19. package/dist/esm/nano-global-nav.entry.js +2 -2
  20. package/dist/esm/nano-in-page-nav.entry.js +92 -13
  21. package/dist/nano-assets/hash.txt +1 -1
  22. package/dist/nano-assets/local-logged-in.json +2 -2
  23. package/dist/nano-assets/local-logged-out.json +2 -2
  24. package/dist/nano-components/assets/local-logged-in.json +2 -2
  25. package/dist/nano-components/assets/local-logged-out.json +2 -2
  26. package/dist/nano-components/{local-logged-in-Bh5fOkeO.js → local-logged-in-B3A7tw10.js} +1 -1
  27. package/dist/nano-components/{local-logged-out-BQyUtSml.js → local-logged-out-BuucpKxf.js} +1 -1
  28. package/dist/nano-components/nano-components.css +11 -0
  29. package/dist/nano-components/nano-components.esm.js +1 -1
  30. package/dist/nano-components/nano-global-nav.entry.js +1 -1
  31. package/dist/nano-components/nano-in-page-nav.entry.js +1 -1
  32. package/dist/style/components.css +1 -1
  33. package/dist/style/components.css.map +1 -1
  34. package/dist/style/core.css +1 -1
  35. package/dist/style/core.css.map +1 -1
  36. package/dist/style/nano.css +1 -1
  37. package/dist/style/nano.css.map +1 -1
  38. package/dist/types/components/in-page-nav/in-page-nav.d.ts +13 -5
  39. package/dist/types/components.d.ts +14 -4
  40. package/docs-json.json +38 -13
  41. package/docs-vscode.json +11 -2
  42. package/hydrate/index.js +94 -17
  43. package/hydrate/index.mjs +94 -17
  44. package/package.json +2 -2
  45. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/generate-vue-component.d.ts +0 -0
  46. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/index.d.ts +0 -0
  47. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/output-vue.d.ts +0 -0
  48. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/plugin.d.ts +0 -0
  49. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/types.d.ts +0 -0
  50. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/utils.d.ts +0 -0
  51. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
  52. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
  53. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
  54. /package/dist/types/builds/{sN_eAsgS → RXAuYz49}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -6,24 +6,32 @@ import { ComponentInterface } from '../../stencil-public-runtime';
6
6
  * @version 8.0.0
7
7
  *
8
8
  * @slot default - The default slot.
9
- * @slot mobile - An escape hatch to add a custom mobile nav to override the provided one.
10
9
  * @slot back - For a link to navigate back to the previous section.
11
10
  * @slot accessory - To add nav accessories, such as a text input.
12
11
  *
13
12
  * @part root - The root element of the navigation.
14
13
  */
15
14
  export declare class NanoInPageNav implements ComponentInterface {
16
- /** Whether the headers should be sticky (small screen only). Defaults to true */
17
- stickyHeaders?: boolean;
18
- el: HTMLElement;
15
+ private scrollElement;
16
+ host: HTMLElement;
17
+ autoExternalLinks: boolean;
18
+ private io;
19
19
  private mobileNavWrapper;
20
20
  private slotCtrl;
21
- componentDidLoad(): void;
21
+ /** Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true */
22
+ autoActive?: boolean;
23
+ /** Menus that contain links to external pages should have different styling from in-page anchors */
24
+ externalLinks?: true | false | 'auto';
22
25
  private createMobileMenu;
23
26
  /**
24
27
  * Creates a nano-details element with the given label and submenu.
25
28
  * @returns a nano-details element
26
29
  */
27
30
  private createDetails;
31
+ private assessLinks;
32
+ private handleSlotChange;
33
+ componentDidLoad(): void;
34
+ connectedCallback(): void;
35
+ disconnectedCallback(): void;
28
36
  render(): any;
29
37
  }
@@ -1909,10 +1909,15 @@ export namespace Components {
1909
1909
  */
1910
1910
  interface NanoInPageNav {
1911
1911
  /**
1912
- * Whether the headers should be sticky (small screen only). Defaults to true
1912
+ * Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true
1913
1913
  * @default true
1914
1914
  */
1915
- "stickyHeaders"?: boolean;
1915
+ "autoActive"?: boolean;
1916
+ /**
1917
+ * Menus that contain links to external pages should have different styling from in-page anchors
1918
+ * @default 'auto'
1919
+ */
1920
+ "externalLinks"?: true | false | 'auto';
1916
1921
  }
1917
1922
  /**
1918
1923
  * Increments and decrements a value using an [input](/components/input).
@@ -6944,10 +6949,15 @@ declare namespace LocalJSX {
6944
6949
  */
6945
6950
  interface NanoInPageNav {
6946
6951
  /**
6947
- * Whether the headers should be sticky (small screen only). Defaults to true
6952
+ * Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true
6948
6953
  * @default true
6949
6954
  */
6950
- "stickyHeaders"?: boolean;
6955
+ "autoActive"?: boolean;
6956
+ /**
6957
+ * Menus that contain links to external pages should have different styling from in-page anchors
6958
+ * @default 'auto'
6959
+ */
6960
+ "externalLinks"?: true | false | 'auto';
6951
6961
  }
6952
6962
  /**
6953
6963
  * Increments and decrements a value using an [input](/components/input).
package/docs-json.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-08-27T15:31:33",
2
+ "timestamp": "2025-09-03T09:56:02",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.36.1",
@@ -3358,7 +3358,7 @@
3358
3358
  "references": {
3359
3359
  "Breadcrumb": {
3360
3360
  "location": "local",
3361
- "path": "/builds/sN_eAsgS/0/Digital/nano-components/packages/components/src/components/breadcrumb/breadcrumb.tsx",
3361
+ "path": "/builds/RXAuYz49/0/Digital/nano-components/packages/components/src/components/breadcrumb/breadcrumb.tsx",
3362
3362
  "id": "src/components/breadcrumb/breadcrumb.tsx::Breadcrumb"
3363
3363
  }
3364
3364
  }
@@ -15713,10 +15713,6 @@
15713
15713
  "name": "slot",
15714
15714
  "text": "default - The default slot."
15715
15715
  },
15716
- {
15717
- "name": "slot",
15718
- "text": "mobile - An escape hatch to add a custom mobile nav to override the provided one."
15719
- },
15720
15716
  {
15721
15717
  "name": "slot",
15722
15718
  "text": "back - For a link to navigate back to the previous section."
@@ -15733,7 +15729,7 @@
15733
15729
  "usage": {},
15734
15730
  "props": [
15735
15731
  {
15736
- "name": "stickyHeaders",
15732
+ "name": "autoActive",
15737
15733
  "type": "boolean",
15738
15734
  "complexType": {
15739
15735
  "original": "boolean",
@@ -15741,9 +15737,9 @@
15741
15737
  "references": {}
15742
15738
  },
15743
15739
  "mutable": false,
15744
- "attr": "sticky-headers",
15740
+ "attr": "auto-active",
15745
15741
  "reflectToAttr": false,
15746
- "docs": "Whether the headers should be sticky (small screen only). Defaults to true",
15742
+ "docs": "Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true",
15747
15743
  "docsTags": [
15748
15744
  {
15749
15745
  "name": "default",
@@ -15760,6 +15756,39 @@
15760
15756
  "required": false,
15761
15757
  "getter": false,
15762
15758
  "setter": false
15759
+ },
15760
+ {
15761
+ "name": "externalLinks",
15762
+ "type": "\"auto\" | boolean",
15763
+ "complexType": {
15764
+ "original": "true | false | 'auto'",
15765
+ "resolved": "\"auto\" | boolean",
15766
+ "references": {}
15767
+ },
15768
+ "mutable": false,
15769
+ "attr": "external-links",
15770
+ "reflectToAttr": false,
15771
+ "docs": "Menus that contain links to external pages should have different styling from in-page anchors",
15772
+ "docsTags": [
15773
+ {
15774
+ "name": "default",
15775
+ "text": "'auto'"
15776
+ }
15777
+ ],
15778
+ "default": "'auto'",
15779
+ "values": [
15780
+ {
15781
+ "value": "auto",
15782
+ "type": "string"
15783
+ },
15784
+ {
15785
+ "type": "boolean"
15786
+ }
15787
+ ],
15788
+ "optional": true,
15789
+ "required": false,
15790
+ "getter": false,
15791
+ "setter": false
15763
15792
  }
15764
15793
  ],
15765
15794
  "methods": [],
@@ -15834,10 +15863,6 @@
15834
15863
  {
15835
15864
  "name": "default",
15836
15865
  "docs": "The default slot."
15837
- },
15838
- {
15839
- "name": "mobile",
15840
- "docs": "An escape hatch to add a custom mobile nav to override the provided one."
15841
15866
  }
15842
15867
  ],
15843
15868
  "parts": [
package/docs-vscode.json CHANGED
@@ -2401,8 +2401,17 @@
2401
2401
  },
2402
2402
  "attributes": [
2403
2403
  {
2404
- "name": "sticky-headers",
2405
- "description": "Whether the headers should be sticky (small screen only). Defaults to true"
2404
+ "name": "auto-active",
2405
+ "description": "Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true"
2406
+ },
2407
+ {
2408
+ "name": "external-links",
2409
+ "description": "Menus that contain links to external pages should have different styling from in-page anchors",
2410
+ "values": [
2411
+ {
2412
+ "name": "auto"
2413
+ }
2414
+ ]
2406
2415
  }
2407
2416
  ]
2408
2417
  },
package/hydrate/index.js CHANGED
@@ -22623,7 +22623,7 @@ class NanoIconItem {
22623
22623
  }; }
22624
22624
  }
22625
22625
 
22626
- const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{display:block}.desktop-nav{display:block}@media (width <= 767px){.desktop-nav{display:none}}.mobile-nav{display:none}@media (width <= 767px){.mobile-nav{display:block}}nav{background-color:var(--color-bg);padding:0}nav:has(.details-wrapper[open]){box-shadow:var(--nano-shadow-l1)}.header{padding:var(--spacing-l2) var(--spacing-l2) 0;display:flex;flex-direction:column;gap:var(--spacing-l2);font-size:var(--font-size)}.header ::slotted(a[slot=back]),.header::slotted(a[slot=back]){display:flex !important;align-items:center !important;padding:0 !important;margin:0;gap:var(--spacing-l3) !important;cursor:pointer}.header ::slotted(a[slot=back])::before,.header::slotted(a[slot=back])::before{content:\"\";display:inline-block;background-size:cover;inline-size:1rem;block-size:1rem;background-color:var(--color-primary);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;rotate:calc(180deg * var(--flip-icon-ltr))}.details-wrapper{--padding:0;--btn-bg-color:transparent;--btn-bg-color--hover:transparent;--btn-text-color:var(--color-text);border:none}.details-wrapper::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing);padding:var(--spacing-l2)}.details-wrapper[open]::part(header){background-color:var(--nano-color-primary-75)}.details-wrapper::part(content){padding:0}.details-wrapper::part(body){padding:0}.details-wrapper.sticky.stuck[open]::part(header){z-index:var(--nano-z-index-menubar);inset-block-start:0;position:sticky;box-shadow:var(--nano-shadow-l1);padding:var(--spacing-l2)}.details-wrapper a,.details-wrapper ul,.details-wrapper li{all:unset}.details-wrapper ul{display:flex;flex-direction:column;list-style:none}.details-wrapper ul:not(ul ul){padding:0 var(--spacing-l2) 0 var(--spacing-l2)}.details-wrapper a{cursor:pointer}.details-wrapper a:hover{text-decoration:underline}.details-wrapper a:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.details-wrapper ul>li:not(ul>li li){margin:0;padding:var(--spacing-l2) 0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;inline-size:100%}.details-wrapper ul>li:not(ul>li li):not(:last-of-type){border-block-end:1px solid var(--color-bottom-border)}.details-wrapper ul>li:not(ul>li li) a{color:var(--color-text)}.details-wrapper ul>li:not(ul>li li) a.is-active{border-inline-start:var(--border-active);padding-inline-start:1rem}.details-wrapper ul>li:not(ul>li li) a:hover{color:var(--color-text-hover)}.details-wrapper ul>li>ul,.details-wrapper ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--spacing-l2);gap:var(--list-gap)}.details-wrapper ul>li>ul a,.details-wrapper ul>li>.nano-details>ul a{color:var(--color-primary) !important}.details-wrapper ul>li>ul>li>.nano-details>ul,.details-wrapper ul>li>.nano-details>ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--nano-spacing-xl)}.details-wrapper .nano-details .nano-details:not(.nano-details .nano-details .nano-details){color:var(--color-text)}.details-wrapper .nano-details{--padding:0;--btn-bg-color:transparent;--btn-bg-color--open:var(--nano-color-primary-75);--btn-bg-color--hover:transparent;border:none;color:var(--color-primary)}.details-wrapper .nano-details .is-active::part(header){border-inline-start:var(--border-active);padding-inline-start:1rem !important;color:var(--color-primary)}.details-wrapper .nano-details[open]>[slot=icon-start]{rotate:90deg}.details-wrapper .nano-details::part(icon--start){margin-inline-end:var(--spacing-l3)}.details-wrapper .nano-details::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing)}.details-wrapper .nano-details::part(header):hover{text-decoration:underline}.details-wrapper .nano-details:not(.nav-details){color:var(--color-primary)}";
22626
+ const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{display:block}:host(.external-links){--color-bg:var(--nano-color-base-0) !important}.desktop-nav{display:block}@media (width <= 767px){.desktop-nav{display:none}}.mobile-nav{display:none}@media (width <= 767px){.mobile-nav{display:block}}nav{background-color:var(--color-bg);padding:0}nav:has(.details-wrapper[open]){box-shadow:var(--nano-shadow-l1)}.header{padding:var(--spacing-l2) var(--spacing-l2) 0;display:flex;flex-direction:column;gap:var(--spacing-l2);font-size:var(--font-size)}.header ::slotted(a[slot=back]),.header::slotted(a[slot=back]){display:flex !important;align-items:center !important;padding:0 !important;margin:0;gap:var(--spacing-l3) !important;cursor:pointer}.header ::slotted(a[slot=back])::before,.header::slotted(a[slot=back])::before{content:\"\";display:inline-block;background-size:cover;inline-size:1rem;block-size:1rem;background-color:var(--color-primary);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;rotate:calc(180deg * var(--flip-icon-ltr))}.details-wrapper{--padding:0;--btn-bg-color:transparent;--btn-bg-color--hover:transparent;--btn-text-color:var(--color-text);border:none}.details-wrapper::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing);padding:var(--spacing-l2)}.details-wrapper[open]::part(header){background-color:var(--nano-color-primary-75)}.details-wrapper::part(content){padding:0}.details-wrapper::part(body){padding:0}.details-wrapper.sticky.stuck[open]::part(header){z-index:var(--nano-z-index-menubar);inset-block-start:0;position:sticky;box-shadow:var(--nano-shadow-l1);padding:var(--spacing-l2)}.details-wrapper :host(.external-links),.details-wrapper .external-links{--color-bg:var(--nano-color-base-0) !important}.details-wrapper :host(.external-links) ul ul,.details-wrapper .external-links ul ul{--color-border-active:var(--nano-color-neutral-1200) !important}.details-wrapper a,.details-wrapper ul,.details-wrapper li{all:unset}.details-wrapper ul{display:flex;flex-direction:column;list-style:none}.details-wrapper ul:not(ul ul){padding:0 var(--spacing-l2) 0 var(--spacing-l2)}.details-wrapper a{cursor:pointer}.details-wrapper a:hover{text-decoration:underline}.details-wrapper a:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.details-wrapper ul>li:not(ul>li li){margin:0;padding:var(--spacing-l2) 0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;inline-size:100%}.details-wrapper ul>li:not(ul>li li):not(:last-of-type){border-block-end:1px solid var(--color-bottom-border)}.details-wrapper ul>li:not(ul>li li) a{color:var(--color-text)}.details-wrapper ul>li:not(ul>li li) a.is-active{border-inline-start:var(--border-active);padding-inline-start:1rem}.details-wrapper ul>li:not(ul>li li) a:hover{color:var(--color-text-hover)}.details-wrapper ul>li>ul,.details-wrapper ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--spacing-l2);gap:var(--list-gap)}.details-wrapper ul>li>ul a,.details-wrapper ul>li>.nano-details>ul a{color:var(--color-primary) !important}.details-wrapper ul>li>ul>li>.nano-details>ul,.details-wrapper ul>li>.nano-details>ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--nano-spacing-xl)}.details-wrapper .nano-details .nano-details:not(.nano-details .nano-details .nano-details){color:var(--color-text)}.details-wrapper .nano-details{--padding:0;--btn-bg-color:transparent;--btn-bg-color--open:var(--nano-color-primary-75);--btn-bg-color--hover:transparent;border:none;color:var(--color-primary)}.details-wrapper .nano-details .is-active::part(header){border-inline-start:var(--border-active);padding-inline-start:1rem !important;color:var(--color-primary)}.details-wrapper .nano-details[open]>[slot=icon-start]{rotate:90deg}.details-wrapper .nano-details::part(icon--start){margin-inline-end:var(--spacing-l3)}.details-wrapper .nano-details::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing)}.details-wrapper .nano-details::part(header):hover{text-decoration:underline}.details-wrapper .nano-details:not(.nav-details){color:var(--color-primary)}";
22627
22627
 
22628
22628
  /**
22629
22629
  * In-page navigation allows users to quickly find different sections on a page.
@@ -22632,7 +22632,6 @@ const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{
22632
22632
  * @version 8.0.0
22633
22633
  *
22634
22634
  * @slot default - The default slot.
22635
- * @slot mobile - An escape hatch to add a custom mobile nav to override the provided one.
22636
22635
  * @slot back - For a link to navigate back to the previous section.
22637
22636
  * @slot accessory - To add nav accessories, such as a text input.
22638
22637
  *
@@ -22642,19 +22641,18 @@ class NanoInPageNav {
22642
22641
  constructor(hostRef) {
22643
22642
  registerInstance(this, hostRef);
22644
22643
  }
22645
- /** Whether the headers should be sticky (small screen only). Defaults to true */
22646
- stickyHeaders = true;
22647
- get el() { return getElement(this); }
22648
- // private stickyClass = 'sticky';
22649
- // private stuckClass: string = 'stuck';
22650
- // private stickyObserver!: IntersectionObserver;
22644
+ scrollElement;
22645
+ get host() { return getElement(this); }
22646
+ autoExternalLinks = false;
22647
+ io;
22651
22648
  mobileNavWrapper;
22652
- slotCtrl = new HasSlotController(this, '[default]', 'mobile', 'back', 'accessory');
22653
- componentDidLoad() {
22654
- this.createMobileMenu();
22655
- }
22649
+ slotCtrl = new HasSlotController(this, '[default]', 'back', 'accessory');
22650
+ /** Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true */
22651
+ autoActive = true;
22652
+ /** Menus that contain links to external pages should have different styling from in-page anchors */
22653
+ externalLinks = 'auto';
22656
22654
  createMobileMenu() {
22657
- const ul = getDirectChildren(this.el, 'ul')[0];
22655
+ const ul = getDirectChildren(this.host, 'ul')[0];
22658
22656
  if (!ul)
22659
22657
  return;
22660
22658
  const cloned = ul.cloneNode(true);
@@ -22680,15 +22678,94 @@ class NanoInPageNav {
22680
22678
  node.appendChild(submenu);
22681
22679
  return node;
22682
22680
  }
22681
+ assessLinks() {
22682
+ const anchors = this.host.querySelectorAll('a[href^="#"]');
22683
+ if (this.externalLinks === 'auto') {
22684
+ const allLinks = this.host.querySelectorAll('a[href]');
22685
+ if (anchors.length > allLinks.length / 2) {
22686
+ this.autoExternalLinks = false;
22687
+ }
22688
+ else {
22689
+ this.autoExternalLinks = true;
22690
+ }
22691
+ }
22692
+ if (!this.autoActive)
22693
+ return;
22694
+ const sections = [];
22695
+ anchors.forEach((link) => {
22696
+ const id = link.getAttribute('href')?.substring(1);
22697
+ if (!id)
22698
+ return;
22699
+ const section = document.getElementById(id);
22700
+ if (section)
22701
+ sections.push(section);
22702
+ });
22703
+ if (this.io)
22704
+ this.io.disconnect();
22705
+ this.io = new IntersectionObserver((entries) => {
22706
+ entries.forEach((entry) => {
22707
+ const id = entry.target.getAttribute('id');
22708
+ if (!id)
22709
+ return;
22710
+ const link = this.host.querySelector(`a[href="#${id}"]`);
22711
+ if (!link)
22712
+ return;
22713
+ if (entry.isIntersecting) {
22714
+ entry.target.classList.add('in-view');
22715
+ }
22716
+ else {
22717
+ entry.target.classList.remove('in-view');
22718
+ }
22719
+ });
22720
+ // pick the section nearest to the top
22721
+ const visible = sections.filter((s) => s.classList.contains('in-view'));
22722
+ if (visible.length) {
22723
+ // sort by boundingClientRect.top
22724
+ visible.sort((a, b) => b.getBoundingClientRect().top - a.getBoundingClientRect().top);
22725
+ anchors.forEach((l) => l.classList.remove('is-active'));
22726
+ const topId = visible[0].getAttribute('id');
22727
+ const activeLink = this.host.querySelector(`a[href="#${topId}"]`);
22728
+ activeLink?.classList.add('is-active');
22729
+ }
22730
+ }, {
22731
+ root: this.scrollElement === document.documentElement
22732
+ ? null
22733
+ : this.scrollElement,
22734
+ rootMargin: '0px 0px -60% 0px',
22735
+ threshold: 0,
22736
+ });
22737
+ sections.forEach((section) => this.io.observe(section));
22738
+ }
22739
+ handleSlotChange = () => {
22740
+ return;
22741
+ };
22742
+ componentDidLoad() {
22743
+ this.createMobileMenu();
22744
+ }
22745
+ connectedCallback() {
22746
+ return;
22747
+ }
22748
+ disconnectedCallback() {
22749
+ if (this.io) {
22750
+ this.io.disconnect();
22751
+ this.io = null;
22752
+ }
22753
+ }
22683
22754
  render() {
22684
- return (h(Host, { key: '8b88cd04f960c4c8ea7ae2dd79a6ec82694570e6', class: "nano-in-page-nav" }, h("nav", { key: '4df4a5ef8aecad356c6ad1acd9a6a886edce8139', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (h("div", { key: 'ed1315ac689d77ffd4005df5a6eeb01f3fc9f599', class: "header" }, h("slot", { key: '0db0fb3919268a14fb924b292302c563181e87c0', name: "back" }), h("slot", { key: '95a5fafda43239ef7cc9208efc254fb335bc9f66', name: "accessory" }))), h("div", { key: '5a273c033b193efe7d4c72c3ccfdbf30b4442eae', class: "desktop-nav" }, h("slot", { key: '7d0cff62b54d21daa5b8e7d9551a9d0ed08cfe6f' })), h("nano-details", { key: 'c337ce8ac65560e5914f8566304f9382540316f2', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
22755
+ return (h(Host, { key: 'ea33348437e8e117df2e7ffff285ca60d8caf98b', class: {
22756
+ 'nano-in-page-nav': true,
22757
+ 'external-links': this.externalLinks === true ||
22758
+ (this.externalLinks === 'auto' && this.autoExternalLinks),
22759
+ } }, h("nav", { key: '4d4647bafee9aff8902dd988eb941bb89e02b0ed', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (h("div", { key: '26c306537b6188b822b714c0df1d49b8ba060cf3', class: "header" }, h("slot", { key: 'f9319b724393e10d0cd789ddf58a0e006f829afd', name: "back" }), h("slot", { key: '2c6bf0022d52af8710d6086beb558b9069557eb2', name: "accessory" }))), h("div", { key: '6c82ddaf8d25319ed7a0a46637047e4e750c5834', class: "desktop-nav" }, h("slot", { key: '4f01aa6544750860aae61cdb9309c62b37f45ef6', onSlotchange: () => this.handleSlotChange })), h("nano-details", { key: 'ff9b16866753cb24279c5bfc83ca637803333101', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
22685
22760
  }
22686
22761
  static get style() { return inPageNavCss; }
22687
22762
  static get cmpMeta() { return {
22688
22763
  "$flags$": 265,
22689
22764
  "$tagName$": "nano-in-page-nav",
22690
22765
  "$members$": {
22691
- "stickyHeaders": [4, "sticky-headers"]
22766
+ "autoActive": [4, "auto-active"],
22767
+ "externalLinks": [8, "external-links"],
22768
+ "autoExternalLinks": [32]
22692
22769
  },
22693
22770
  "$listeners$": undefined,
22694
22771
  "$lazyBundleId$": "-",
@@ -31499,7 +31576,7 @@ const urls$1 = {
31499
31576
  };
31500
31577
  const search$1 = {
31501
31578
  app_id: "N8NZI5A47F",
31502
- api_key: "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
31579
+ api_key: "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
31503
31580
  indeces: [
31504
31581
  {
31505
31582
  index: "ont_prod_en_v3",
@@ -31717,7 +31794,7 @@ const urls = {
31717
31794
  };
31718
31795
  const search = {
31719
31796
  app_id: "N8NZI5A47F",
31720
- api_key: "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
31797
+ api_key: "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
31721
31798
  indeces: [
31722
31799
  {
31723
31800
  index: "ont_prod_en_v3",
package/hydrate/index.mjs CHANGED
@@ -22621,7 +22621,7 @@ class NanoIconItem {
22621
22621
  }; }
22622
22622
  }
22623
22623
 
22624
- const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{display:block}.desktop-nav{display:block}@media (width <= 767px){.desktop-nav{display:none}}.mobile-nav{display:none}@media (width <= 767px){.mobile-nav{display:block}}nav{background-color:var(--color-bg);padding:0}nav:has(.details-wrapper[open]){box-shadow:var(--nano-shadow-l1)}.header{padding:var(--spacing-l2) var(--spacing-l2) 0;display:flex;flex-direction:column;gap:var(--spacing-l2);font-size:var(--font-size)}.header ::slotted(a[slot=back]),.header::slotted(a[slot=back]){display:flex !important;align-items:center !important;padding:0 !important;margin:0;gap:var(--spacing-l3) !important;cursor:pointer}.header ::slotted(a[slot=back])::before,.header::slotted(a[slot=back])::before{content:\"\";display:inline-block;background-size:cover;inline-size:1rem;block-size:1rem;background-color:var(--color-primary);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;rotate:calc(180deg * var(--flip-icon-ltr))}.details-wrapper{--padding:0;--btn-bg-color:transparent;--btn-bg-color--hover:transparent;--btn-text-color:var(--color-text);border:none}.details-wrapper::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing);padding:var(--spacing-l2)}.details-wrapper[open]::part(header){background-color:var(--nano-color-primary-75)}.details-wrapper::part(content){padding:0}.details-wrapper::part(body){padding:0}.details-wrapper.sticky.stuck[open]::part(header){z-index:var(--nano-z-index-menubar);inset-block-start:0;position:sticky;box-shadow:var(--nano-shadow-l1);padding:var(--spacing-l2)}.details-wrapper a,.details-wrapper ul,.details-wrapper li{all:unset}.details-wrapper ul{display:flex;flex-direction:column;list-style:none}.details-wrapper ul:not(ul ul){padding:0 var(--spacing-l2) 0 var(--spacing-l2)}.details-wrapper a{cursor:pointer}.details-wrapper a:hover{text-decoration:underline}.details-wrapper a:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.details-wrapper ul>li:not(ul>li li){margin:0;padding:var(--spacing-l2) 0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;inline-size:100%}.details-wrapper ul>li:not(ul>li li):not(:last-of-type){border-block-end:1px solid var(--color-bottom-border)}.details-wrapper ul>li:not(ul>li li) a{color:var(--color-text)}.details-wrapper ul>li:not(ul>li li) a.is-active{border-inline-start:var(--border-active);padding-inline-start:1rem}.details-wrapper ul>li:not(ul>li li) a:hover{color:var(--color-text-hover)}.details-wrapper ul>li>ul,.details-wrapper ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--spacing-l2);gap:var(--list-gap)}.details-wrapper ul>li>ul a,.details-wrapper ul>li>.nano-details>ul a{color:var(--color-primary) !important}.details-wrapper ul>li>ul>li>.nano-details>ul,.details-wrapper ul>li>.nano-details>ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--nano-spacing-xl)}.details-wrapper .nano-details .nano-details:not(.nano-details .nano-details .nano-details){color:var(--color-text)}.details-wrapper .nano-details{--padding:0;--btn-bg-color:transparent;--btn-bg-color--open:var(--nano-color-primary-75);--btn-bg-color--hover:transparent;border:none;color:var(--color-primary)}.details-wrapper .nano-details .is-active::part(header){border-inline-start:var(--border-active);padding-inline-start:1rem !important;color:var(--color-primary)}.details-wrapper .nano-details[open]>[slot=icon-start]{rotate:90deg}.details-wrapper .nano-details::part(icon--start){margin-inline-end:var(--spacing-l3)}.details-wrapper .nano-details::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing)}.details-wrapper .nano-details::part(header):hover{text-decoration:underline}.details-wrapper .nano-details:not(.nav-details){color:var(--color-primary)}";
22624
+ const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{display:block}:host(.external-links){--color-bg:var(--nano-color-base-0) !important}.desktop-nav{display:block}@media (width <= 767px){.desktop-nav{display:none}}.mobile-nav{display:none}@media (width <= 767px){.mobile-nav{display:block}}nav{background-color:var(--color-bg);padding:0}nav:has(.details-wrapper[open]){box-shadow:var(--nano-shadow-l1)}.header{padding:var(--spacing-l2) var(--spacing-l2) 0;display:flex;flex-direction:column;gap:var(--spacing-l2);font-size:var(--font-size)}.header ::slotted(a[slot=back]),.header::slotted(a[slot=back]){display:flex !important;align-items:center !important;padding:0 !important;margin:0;gap:var(--spacing-l3) !important;cursor:pointer}.header ::slotted(a[slot=back])::before,.header::slotted(a[slot=back])::before{content:\"\";display:inline-block;background-size:cover;inline-size:1rem;block-size:1rem;background-color:var(--color-primary);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;rotate:calc(180deg * var(--flip-icon-ltr))}.details-wrapper{--padding:0;--btn-bg-color:transparent;--btn-bg-color--hover:transparent;--btn-text-color:var(--color-text);border:none}.details-wrapper::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing);padding:var(--spacing-l2)}.details-wrapper[open]::part(header){background-color:var(--nano-color-primary-75)}.details-wrapper::part(content){padding:0}.details-wrapper::part(body){padding:0}.details-wrapper.sticky.stuck[open]::part(header){z-index:var(--nano-z-index-menubar);inset-block-start:0;position:sticky;box-shadow:var(--nano-shadow-l1);padding:var(--spacing-l2)}.details-wrapper :host(.external-links),.details-wrapper .external-links{--color-bg:var(--nano-color-base-0) !important}.details-wrapper :host(.external-links) ul ul,.details-wrapper .external-links ul ul{--color-border-active:var(--nano-color-neutral-1200) !important}.details-wrapper a,.details-wrapper ul,.details-wrapper li{all:unset}.details-wrapper ul{display:flex;flex-direction:column;list-style:none}.details-wrapper ul:not(ul ul){padding:0 var(--spacing-l2) 0 var(--spacing-l2)}.details-wrapper a{cursor:pointer}.details-wrapper a:hover{text-decoration:underline}.details-wrapper a:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.details-wrapper ul>li:not(ul>li li){margin:0;padding:var(--spacing-l2) 0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;inline-size:100%}.details-wrapper ul>li:not(ul>li li):not(:last-of-type){border-block-end:1px solid var(--color-bottom-border)}.details-wrapper ul>li:not(ul>li li) a{color:var(--color-text)}.details-wrapper ul>li:not(ul>li li) a.is-active{border-inline-start:var(--border-active);padding-inline-start:1rem}.details-wrapper ul>li:not(ul>li li) a:hover{color:var(--color-text-hover)}.details-wrapper ul>li>ul,.details-wrapper ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--spacing-l2);gap:var(--list-gap)}.details-wrapper ul>li>ul a,.details-wrapper ul>li>.nano-details>ul a{color:var(--color-primary) !important}.details-wrapper ul>li>ul>li>.nano-details>ul,.details-wrapper ul>li>.nano-details>ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--nano-spacing-xl)}.details-wrapper .nano-details .nano-details:not(.nano-details .nano-details .nano-details){color:var(--color-text)}.details-wrapper .nano-details{--padding:0;--btn-bg-color:transparent;--btn-bg-color--open:var(--nano-color-primary-75);--btn-bg-color--hover:transparent;border:none;color:var(--color-primary)}.details-wrapper .nano-details .is-active::part(header){border-inline-start:var(--border-active);padding-inline-start:1rem !important;color:var(--color-primary)}.details-wrapper .nano-details[open]>[slot=icon-start]{rotate:90deg}.details-wrapper .nano-details::part(icon--start){margin-inline-end:var(--spacing-l3)}.details-wrapper .nano-details::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing)}.details-wrapper .nano-details::part(header):hover{text-decoration:underline}.details-wrapper .nano-details:not(.nav-details){color:var(--color-primary)}";
22625
22625
 
22626
22626
  /**
22627
22627
  * In-page navigation allows users to quickly find different sections on a page.
@@ -22630,7 +22630,6 @@ const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{
22630
22630
  * @version 8.0.0
22631
22631
  *
22632
22632
  * @slot default - The default slot.
22633
- * @slot mobile - An escape hatch to add a custom mobile nav to override the provided one.
22634
22633
  * @slot back - For a link to navigate back to the previous section.
22635
22634
  * @slot accessory - To add nav accessories, such as a text input.
22636
22635
  *
@@ -22640,19 +22639,18 @@ class NanoInPageNav {
22640
22639
  constructor(hostRef) {
22641
22640
  registerInstance(this, hostRef);
22642
22641
  }
22643
- /** Whether the headers should be sticky (small screen only). Defaults to true */
22644
- stickyHeaders = true;
22645
- get el() { return getElement(this); }
22646
- // private stickyClass = 'sticky';
22647
- // private stuckClass: string = 'stuck';
22648
- // private stickyObserver!: IntersectionObserver;
22642
+ scrollElement;
22643
+ get host() { return getElement(this); }
22644
+ autoExternalLinks = false;
22645
+ io;
22649
22646
  mobileNavWrapper;
22650
- slotCtrl = new HasSlotController(this, '[default]', 'mobile', 'back', 'accessory');
22651
- componentDidLoad() {
22652
- this.createMobileMenu();
22653
- }
22647
+ slotCtrl = new HasSlotController(this, '[default]', 'back', 'accessory');
22648
+ /** Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true */
22649
+ autoActive = true;
22650
+ /** Menus that contain links to external pages should have different styling from in-page anchors */
22651
+ externalLinks = 'auto';
22654
22652
  createMobileMenu() {
22655
- const ul = getDirectChildren(this.el, 'ul')[0];
22653
+ const ul = getDirectChildren(this.host, 'ul')[0];
22656
22654
  if (!ul)
22657
22655
  return;
22658
22656
  const cloned = ul.cloneNode(true);
@@ -22678,15 +22676,94 @@ class NanoInPageNav {
22678
22676
  node.appendChild(submenu);
22679
22677
  return node;
22680
22678
  }
22679
+ assessLinks() {
22680
+ const anchors = this.host.querySelectorAll('a[href^="#"]');
22681
+ if (this.externalLinks === 'auto') {
22682
+ const allLinks = this.host.querySelectorAll('a[href]');
22683
+ if (anchors.length > allLinks.length / 2) {
22684
+ this.autoExternalLinks = false;
22685
+ }
22686
+ else {
22687
+ this.autoExternalLinks = true;
22688
+ }
22689
+ }
22690
+ if (!this.autoActive)
22691
+ return;
22692
+ const sections = [];
22693
+ anchors.forEach((link) => {
22694
+ const id = link.getAttribute('href')?.substring(1);
22695
+ if (!id)
22696
+ return;
22697
+ const section = document.getElementById(id);
22698
+ if (section)
22699
+ sections.push(section);
22700
+ });
22701
+ if (this.io)
22702
+ this.io.disconnect();
22703
+ this.io = new IntersectionObserver((entries) => {
22704
+ entries.forEach((entry) => {
22705
+ const id = entry.target.getAttribute('id');
22706
+ if (!id)
22707
+ return;
22708
+ const link = this.host.querySelector(`a[href="#${id}"]`);
22709
+ if (!link)
22710
+ return;
22711
+ if (entry.isIntersecting) {
22712
+ entry.target.classList.add('in-view');
22713
+ }
22714
+ else {
22715
+ entry.target.classList.remove('in-view');
22716
+ }
22717
+ });
22718
+ // pick the section nearest to the top
22719
+ const visible = sections.filter((s) => s.classList.contains('in-view'));
22720
+ if (visible.length) {
22721
+ // sort by boundingClientRect.top
22722
+ visible.sort((a, b) => b.getBoundingClientRect().top - a.getBoundingClientRect().top);
22723
+ anchors.forEach((l) => l.classList.remove('is-active'));
22724
+ const topId = visible[0].getAttribute('id');
22725
+ const activeLink = this.host.querySelector(`a[href="#${topId}"]`);
22726
+ activeLink?.classList.add('is-active');
22727
+ }
22728
+ }, {
22729
+ root: this.scrollElement === document.documentElement
22730
+ ? null
22731
+ : this.scrollElement,
22732
+ rootMargin: '0px 0px -60% 0px',
22733
+ threshold: 0,
22734
+ });
22735
+ sections.forEach((section) => this.io.observe(section));
22736
+ }
22737
+ handleSlotChange = () => {
22738
+ return;
22739
+ };
22740
+ componentDidLoad() {
22741
+ this.createMobileMenu();
22742
+ }
22743
+ connectedCallback() {
22744
+ return;
22745
+ }
22746
+ disconnectedCallback() {
22747
+ if (this.io) {
22748
+ this.io.disconnect();
22749
+ this.io = null;
22750
+ }
22751
+ }
22681
22752
  render() {
22682
- return (h(Host, { key: '8b88cd04f960c4c8ea7ae2dd79a6ec82694570e6', class: "nano-in-page-nav" }, h("nav", { key: '4df4a5ef8aecad356c6ad1acd9a6a886edce8139', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (h("div", { key: 'ed1315ac689d77ffd4005df5a6eeb01f3fc9f599', class: "header" }, h("slot", { key: '0db0fb3919268a14fb924b292302c563181e87c0', name: "back" }), h("slot", { key: '95a5fafda43239ef7cc9208efc254fb335bc9f66', name: "accessory" }))), h("div", { key: '5a273c033b193efe7d4c72c3ccfdbf30b4442eae', class: "desktop-nav" }, h("slot", { key: '7d0cff62b54d21daa5b8e7d9551a9d0ed08cfe6f' })), h("nano-details", { key: 'c337ce8ac65560e5914f8566304f9382540316f2', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
22753
+ return (h(Host, { key: 'ea33348437e8e117df2e7ffff285ca60d8caf98b', class: {
22754
+ 'nano-in-page-nav': true,
22755
+ 'external-links': this.externalLinks === true ||
22756
+ (this.externalLinks === 'auto' && this.autoExternalLinks),
22757
+ } }, h("nav", { key: '4d4647bafee9aff8902dd988eb941bb89e02b0ed', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (h("div", { key: '26c306537b6188b822b714c0df1d49b8ba060cf3', class: "header" }, h("slot", { key: 'f9319b724393e10d0cd789ddf58a0e006f829afd', name: "back" }), h("slot", { key: '2c6bf0022d52af8710d6086beb558b9069557eb2', name: "accessory" }))), h("div", { key: '6c82ddaf8d25319ed7a0a46637047e4e750c5834', class: "desktop-nav" }, h("slot", { key: '4f01aa6544750860aae61cdb9309c62b37f45ef6', onSlotchange: () => this.handleSlotChange })), h("nano-details", { key: 'ff9b16866753cb24279c5bfc83ca637803333101', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
22683
22758
  }
22684
22759
  static get style() { return inPageNavCss; }
22685
22760
  static get cmpMeta() { return {
22686
22761
  "$flags$": 265,
22687
22762
  "$tagName$": "nano-in-page-nav",
22688
22763
  "$members$": {
22689
- "stickyHeaders": [4, "sticky-headers"]
22764
+ "autoActive": [4, "auto-active"],
22765
+ "externalLinks": [8, "external-links"],
22766
+ "autoExternalLinks": [32]
22690
22767
  },
22691
22768
  "$listeners$": undefined,
22692
22769
  "$lazyBundleId$": "-",
@@ -31497,7 +31574,7 @@ const urls$1 = {
31497
31574
  };
31498
31575
  const search$1 = {
31499
31576
  app_id: "N8NZI5A47F",
31500
- api_key: "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
31577
+ api_key: "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
31501
31578
  indeces: [
31502
31579
  {
31503
31580
  index: "ont_prod_en_v3",
@@ -31715,7 +31792,7 @@ const urls = {
31715
31792
  };
31716
31793
  const search = {
31717
31794
  app_id: "N8NZI5A47F",
31718
- api_key: "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
31795
+ api_key: "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
31719
31796
  indeces: [
31720
31797
  {
31721
31798
  index: "ont_prod_en_v3",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanoporetech-digital/components",
3
- "version": "8.4.3",
3
+ "version": "8.5.1",
4
4
  "sideEffects": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -60,7 +60,7 @@
60
60
  "smart-array-filter": "^4.0.2",
61
61
  "stencil-wormhole": "3.2.1",
62
62
  "tyqs": "^0.1.3",
63
- "@nanoporetech-digital/style": "8.4.3"
63
+ "@nanoporetech-digital/style": "8.5.1"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@algolia/client-search": "^4.22.1",