scb-wc 0.1.13 → 0.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.
- package/README.md +22 -32
- package/index.js +91 -88
- package/mvc/components/scb-scrollspy/scb-scrollspy.js +5 -5
- package/package.json +2 -6
- package/scb-chevron/scb-chevron.js +1 -0
- package/scb-datepicker/scb-datepicker.js +1 -0
- package/scb-scrollspy/scb-scrollspy.js +3 -3
- package/scb-vignette/scb-vignette.js +1 -0
- package/scb-wc.bundle.js +216 -216
- package/scb-wc.d.ts +180 -174
- package/scb-wc-public-entry/index.d.ts +0 -87
package/README.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
# Om SCB Web Components
|
|
1
|
+
# Om SCB Web Components Preview
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> ⚠️ **Previewkanal**
|
|
4
|
+
> Installera `scb-wc` via `@next` för komponenter under utveckling. API, utseende och beteende kan ändras eller tas bort mellan versioner.
|
|
5
|
+
|
|
6
|
+
SCB Web Components(test) finns för att underlätta skapandet av enhetliga, tillgängliga och användbara webbapplikationer.
|
|
4
7
|
|
|
5
8
|
Komponenterna bygger på:
|
|
6
9
|
- [Lit](https://lit.dev/)
|
|
@@ -8,45 +11,32 @@ Komponenterna bygger på:
|
|
|
8
11
|
|
|
9
12
|
## Storybook och dokumentation (internt)
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
Previewkomponenterna dokumenteras och demonstreras i Storybook på SCB:s interna testadress:
|
|
12
15
|
|
|
13
|
-
-
|
|
16
|
+
- Test: <https://webcomponentstest.scb.intra>
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
Den publika/stabila Storybooken finns på:
|
|
16
19
|
|
|
17
|
-
-
|
|
20
|
+
- Prod: <https://webcomponents.scb.intra>
|
|
18
21
|
|
|
19
22
|
---
|
|
20
23
|
|
|
21
24
|
## Kom igång
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
```sh
|
|
26
|
-
npx scb-wc init html my-app
|
|
27
|
-
npx scb-wc init react my-react-app
|
|
28
|
-
npx scb-wc init blazor my-blazor-app
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Det skapar en liten starterapp med:
|
|
32
|
-
- `scb-header`
|
|
33
|
-
- `scb-footer`
|
|
34
|
-
- `scb-grid`
|
|
35
|
-
- några vanliga komponenter
|
|
36
|
-
|
|
37
|
-
Välj sedan den starter som ligger närmast din app och kör `npm install` i den nya mappen.
|
|
26
|
+
> **Obs:** Kör alla kommandon i mappen där din `package.json` ligger.
|
|
27
|
+
> Har du ingen? Kör `npm init -y` i projektroten (eller annan lämplig mapp).
|
|
38
28
|
|
|
39
|
-
|
|
29
|
+
Installera previewkanalen:
|
|
40
30
|
|
|
41
31
|
```sh
|
|
42
|
-
npm install scb-wc
|
|
32
|
+
npm install scb-wc@next
|
|
43
33
|
```
|
|
44
34
|
|
|
45
35
|
---
|
|
46
36
|
|
|
47
37
|
## Alternativ 1: Använd som ES‑moduler (t.ex. i React, Vue, SPA)
|
|
48
38
|
|
|
49
|
-
Importera CSS och de
|
|
39
|
+
Importera CSS och de testkomponenter du använder (bäst för tree‑shaking):
|
|
50
40
|
|
|
51
41
|
```js
|
|
52
42
|
// Global CSS + tokens (måste bara importeras en gång)
|
|
@@ -82,7 +72,7 @@ Då används paketets egna fontfiler under `node_modules/scb-wc/fonts/`.
|
|
|
82
72
|
|
|
83
73
|
## Alternativ 2: Använd i MVC/MPA via `<script type="module">`
|
|
84
74
|
|
|
85
|
-
Det här läget använder den färdig‑
|
|
75
|
+
Det här läget använder den färdig‑splittade **MVC‑ESM**‑builden som följer med paketet under:
|
|
86
76
|
|
|
87
77
|
```text
|
|
88
78
|
node_modules/scb-wc/mvc/
|
|
@@ -95,7 +85,7 @@ Lägg till i din apps `package.json`:
|
|
|
95
85
|
```jsonc
|
|
96
86
|
{
|
|
97
87
|
"scripts": {
|
|
98
|
-
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc?');process.exit(1);}const start=process.env.INIT_CWD||process.cwd();const ov=process.env.npm_config_ui_wwwroot;function findBase(){if(ov){return p.isAbsolute(ov)?ov:p.resolve(start,ov);}let d=start;while(true){const cand=p.join(d,'wwwroot');if(fs.existsSync(cand)) return cand;const up=p.dirname(d);if(up===d) return p.resolve(start,'wwwroot');d=up;}}const base=findBase();const dst=p.resolve(base,'ui');fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(base,{recursive:true});fs.cpSync(src,dst,{recursive:true});console.log('Kopierade '+src+' → '+dst);\""
|
|
88
|
+
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc@next?');process.exit(1);}const start=process.env.INIT_CWD||process.cwd();const ov=process.env.npm_config_ui_wwwroot;function findBase(){if(ov){return p.isAbsolute(ov)?ov:p.resolve(start,ov);}let d=start;while(true){const cand=p.join(d,'wwwroot');if(fs.existsSync(cand)) return cand;const up=p.dirname(d);if(up===d) return p.resolve(start,'wwwroot');d=up;}}const base=findBase();const dst=p.resolve(base,'ui');fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(base,{recursive:true});fs.cpSync(src,dst,{recursive:true});console.log('Kopierade '+src+' → '+dst);\""
|
|
99
89
|
}
|
|
100
90
|
}
|
|
101
91
|
```
|
|
@@ -142,7 +132,7 @@ Behöver du en annan webbrotsökväg (t.ex. om din `wwwroot` ligger någon annan
|
|
|
142
132
|
|
|
143
133
|
## Alternativ 3: Bundlad version (IIFE) för äldre miljöer
|
|
144
134
|
|
|
145
|
-
Om ESM inte stöds kan du använda den bundlade varianten från paketroten.
|
|
135
|
+
Om ESM inte stöds kan du använda den bundlade test‑varianten från paketroten.
|
|
146
136
|
Flytta följande två filer från `node_modules/scb-wc` och använd dem i applikationen:
|
|
147
137
|
|
|
148
138
|
```text
|
|
@@ -164,7 +154,7 @@ node_modules/scb-wc/scb-wc.css
|
|
|
164
154
|
|
|
165
155
|
SCB Web Components fungerar även i Blazor‑appar när du vill använda samma komponenter i både MVC/MPA och Blazor.
|
|
166
156
|
|
|
167
|
-
Grundprincipen är
|
|
157
|
+
Grundprincipen är samma som för `scb-wc`:
|
|
168
158
|
|
|
169
159
|
1. Använd MVC‑ESM‑builden (`node_modules/scb-wc/mvc`) och kopiera den till `wwwroot/ui` med `ui:install`.
|
|
170
160
|
2. Ladda `scb-blazor-bridge.js` från `wwwroot/ui` i din Blazor‑layout.
|
|
@@ -177,8 +167,8 @@ Lägg till ett script som kopierar interop-filen från `node_modules` till ditt
|
|
|
177
167
|
```jsonc
|
|
178
168
|
{
|
|
179
169
|
"scripts": {
|
|
180
|
-
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc?');process.exit(1);}const start=process.env.INIT_CWD||process.cwd();const ov=process.env.npm_config_ui_wwwroot;function findBase(){if(ov){return p.isAbsolute(ov)?ov:p.resolve(start,ov);}let d=start;while(true){const cand=p.join(d,'wwwroot');if(fs.existsSync(cand)) return cand;const up=p.dirname(d);if(up===d) return p.resolve(start,'wwwroot');d=up;}}const base=findBase();const dst=p.resolve(base,'ui');fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(base,{recursive:true});fs.cpSync(src,dst,{recursive:true});console.log('Kopierade '+src+' → '+dst);\"",
|
|
181
|
-
"ui:blazor:interop": "node -e \"const fs=require('fs'),p=require('path');const start=process.env.INIT_CWD||process.cwd();const src=p.resolve('node_modules/scb-wc/blazor/ScbBlazorInteropBase.cs');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc?');process.exit(1);}const dst=p.resolve(start,'ScbBlazor/ScbBlazorInteropBase.cs');fs.mkdirSync(p.dirname(dst),{recursive:true});fs.copyFileSync(src,dst);console.log('Kopierade '+src+' → '+dst);\""
|
|
170
|
+
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc@next?');process.exit(1);}const start=process.env.INIT_CWD||process.cwd();const ov=process.env.npm_config_ui_wwwroot;function findBase(){if(ov){return p.isAbsolute(ov)?ov:p.resolve(start,ov);}let d=start;while(true){const cand=p.join(d,'wwwroot');if(fs.existsSync(cand)) return cand;const up=p.dirname(d);if(up===d) return p.resolve(start,'wwwroot');d=up;}}const base=findBase();const dst=p.resolve(base,'ui');fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(base,{recursive:true});fs.cpSync(src,dst,{recursive:true});console.log('Kopierade '+src+' → '+dst);\"",
|
|
171
|
+
"ui:blazor:interop": "node -e \"const fs=require('fs'),p=require('path');const start=process.env.INIT_CWD||process.cwd();const src=p.resolve('node_modules/scb-wc/blazor/ScbBlazorInteropBase.cs');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc@next?');process.exit(1);}const dst=p.resolve(start,'ScbBlazor/ScbBlazorInteropBase.cs');fs.mkdirSync(p.dirname(dst),{recursive:true});fs.copyFileSync(src,dst);console.log('Kopierade '+src+' → '+dst);\""
|
|
182
172
|
}
|
|
183
173
|
}
|
|
184
174
|
```
|
|
@@ -192,13 +182,13 @@ Exempel på layout:
|
|
|
192
182
|
<script type="module" src="~/ui/scb-blazor-bridge.js"></script>
|
|
193
183
|
```
|
|
194
184
|
|
|
195
|
-
`ScbBlazorInteropBase` kan
|
|
185
|
+
`ScbBlazorInteropBase` är samma bas‑klass i preview- och public-kanalen. Du kan därför dela samma C#‑fil mellan projekt som använder `scb-wc@next` och `scb-wc@latest`.
|
|
196
186
|
|
|
197
187
|
---
|
|
198
188
|
|
|
199
189
|
## Viktigt
|
|
200
190
|
|
|
201
|
-
- `scb-wc@
|
|
191
|
+
- `scb-wc@next` är **previewkanalen**. Komponenter kan ändras eller tas bort mellan versioner. Använd `scb-wc@latest` i externa produktionsmiljöer.
|
|
202
192
|
- **Kör kommandon i mappen med din `package.json`.** Placeringen av `package.json` styr standardmål för `ui:install` (rot → `wwwroot/ui`, `ClientApp/` → använd `--ui_wwwroot=../wwwroot`).
|
|
203
193
|
- **Blanda inte MVC‑ESM och IIFE på samma sida.** Välj en distributionsform per sida/app.
|
|
204
194
|
- **Blazor:** Se till att `scb-blazor-bridge.js` laddas efter att komponent‑JS:et finns på sidan, och att `ScbBlazorInteropBase` inte dupliceras i flera namespaces i samma lösning.
|
package/index.js
CHANGED
|
@@ -1,88 +1,91 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
66
|
-
import {
|
|
67
|
-
import {
|
|
68
|
-
import {
|
|
69
|
-
import {
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
import {
|
|
78
|
-
import {
|
|
79
|
-
import {
|
|
80
|
-
import {
|
|
81
|
-
import {
|
|
82
|
-
import {
|
|
83
|
-
import {
|
|
84
|
-
import {
|
|
85
|
-
import {
|
|
86
|
-
import {
|
|
87
|
-
import {
|
|
88
|
-
|
|
1
|
+
import { ScbChevron as e } from "./scb-chevron/scb-chevron.js";
|
|
2
|
+
import { ScbAccordionItem as t } from "./scb-accordion/scb-accordion-item.js";
|
|
3
|
+
import { ScbButton as n } from "./scb-button/scb-button.js";
|
|
4
|
+
import { ScbAccordion as r } from "./scb-accordion/scb-accordion.js";
|
|
5
|
+
import { ScbIconButton as i } from "./scb-icon-button/scb-icon-button.js";
|
|
6
|
+
import { ScbListItem as a } from "./scb-list/scb-list-item.js";
|
|
7
|
+
import { ScbList as o } from "./scb-list/scb-list.js";
|
|
8
|
+
import { ScbSearch as s } from "./scb-search/scb-search.js";
|
|
9
|
+
import { ScbAvatar as c } from "./scb-avatar/scb-avatar.js";
|
|
10
|
+
import { ScbAppBar as l } from "./scb-app-bar/scb-app-bar.js";
|
|
11
|
+
import { ScbBadge as u } from "./scb-badge/scb-badge.js";
|
|
12
|
+
import { ScbLink as d } from "./scb-link/scb-link.js";
|
|
13
|
+
import { SCBBreadcrumbItem as f } from "./scb-breadcrumb/scb-breadcrumb-item.js";
|
|
14
|
+
import { SCBBreadcrumb as p } from "./scb-breadcrumb/scb-breadcrumb.js";
|
|
15
|
+
import { ScbCalendarEvent as m } from "./scb-calendar/scb-calendar-event.js";
|
|
16
|
+
import { ScbDivider as h } from "./scb-divider/scb-divider.js";
|
|
17
|
+
import { ScbDatepicker as g } from "./scb-datepicker/scb-datepicker.js";
|
|
18
|
+
import { ScbTextField as _ } from "./scb-textfield/scb-textfield.js";
|
|
19
|
+
import { ScbCheckboxGroup as v } from "./scb-checkbox/scb-checkbox-group.js";
|
|
20
|
+
import { ScbCheckbox as y } from "./scb-checkbox/scb-checkbox.js";
|
|
21
|
+
import { ScbRadioGroup as b } from "./scb-radio-button/scb-radio-group.js";
|
|
22
|
+
import { ScbRadioButton as x } from "./scb-radio-button/scb-radio-button.js";
|
|
23
|
+
import { ScbSwitch as S } from "./scb-switch/scb-switch.js";
|
|
24
|
+
import { ScbChip as C } from "./scb-chip/scb-chip.js";
|
|
25
|
+
import { ScbDialog as w } from "./scb-dialog/scb-dialog.js";
|
|
26
|
+
import { ScbCalendar as T } from "./scb-calendar/scb-calendar.js";
|
|
27
|
+
import { ScbCalendarCard as E } from "./scb-calendar-card/scb-calendar-card.js";
|
|
28
|
+
import { ScbTooltip as D } from "./scb-tooltip/scb-tooltip.js";
|
|
29
|
+
import { ScbVignette as O } from "./scb-vignette/scb-vignette.js";
|
|
30
|
+
import { ScbCard as k } from "./scb-card/scb-card.js";
|
|
31
|
+
import { ScbCollapse as A } from "./scb-collapse/scb-collapse.js";
|
|
32
|
+
import { ScbCookiesConsent as j } from "./scb-cookies-consent/scb-cookies-consent.js";
|
|
33
|
+
import { ScbDrawer as M } from "./scb-drawer/scb-drawer.js";
|
|
34
|
+
import { ScbDropZone as N } from "./scb-drop-zone/scb-drop-zone.js";
|
|
35
|
+
import { ScbOptionsMenuItem as P } from "./scb-options-menu/scb-options-menu-item.js";
|
|
36
|
+
import { ScbOptionsSubMenu as F } from "./scb-options-menu/scb-options-sub-menu.js";
|
|
37
|
+
import { ScbOptionsMenu as I } from "./scb-options-menu/scb-options-menu.js";
|
|
38
|
+
import { ScbDropdown as L } from "./scb-dropdown/scb-dropdown.js";
|
|
39
|
+
import { ScbFab as R } from "./scb-fab/scb-fab.js";
|
|
40
|
+
import { ScbFactCardContent as z } from "./scb-fact-card/scb-fact-card-content.js";
|
|
41
|
+
import { ScbFactCard as B } from "./scb-fact-card/scb-fact-card.js";
|
|
42
|
+
import { ScbFooterSection as V } from "./scb-footer/scb-footer-section.js";
|
|
43
|
+
import { ScbGridItem as H } from "./scb-grid/scb-grid-item.js";
|
|
44
|
+
import { ScbStack as U } from "./scb-grid/scb-stack.js";
|
|
45
|
+
import { ScbGrid as W } from "./scb-grid/scb-grid.js";
|
|
46
|
+
import { ScbFooter as G } from "./scb-footer/scb-footer.js";
|
|
47
|
+
import { ScbHorizontalScroller as K } from "./scb-horizontal-scroller/scb-horizontal-scroller.js";
|
|
48
|
+
import { ScbOverlay as q } from "./scb-overlay/scb-overlay.js";
|
|
49
|
+
import { ScbGalleryGrid as J } from "./scb-gallery-grid/scb-gallery-grid.js";
|
|
50
|
+
import { ScbHeaderMenuGroup as Y } from "./scb-header/scb-header-menu-group.js";
|
|
51
|
+
import { ScbHeaderMenuItem as X } from "./scb-header/scb-header-menu-item.js";
|
|
52
|
+
import { ScbHeaderTab as Z } from "./scb-header/scb-header-tab.js";
|
|
53
|
+
import { ScbHeaderUtility as Q } from "./scb-header/scb-header-utility.js";
|
|
54
|
+
import { ScbMenuItem as $ } from "./scb-menu/scb-menu-item.js";
|
|
55
|
+
import { ScbmenuSection as ee } from "./scb-menu/scb-menu-section.js";
|
|
56
|
+
import { ScbSubmenu as te } from "./scb-menu/scb-sub-menu.js";
|
|
57
|
+
import { ScbMenu as ne } from "./scb-menu/scb-menu.js";
|
|
58
|
+
import { ScbSkeleton as re } from "./scb-skeleton/scb-skeleton.js";
|
|
59
|
+
import { ScbHeader as ie } from "./scb-header/scb-header.js";
|
|
60
|
+
import { ScbKeyFigureCard as ae } from "./scb-keyfigure-card/scb-keyfigure-card.js";
|
|
61
|
+
import { ScbNavItem as oe } from "./scb-nav/scb-nav-item.js";
|
|
62
|
+
import { ScbNav as se } from "./scb-nav/scb-nav.js";
|
|
63
|
+
import { ScbNotificationCard as ce } from "./scb-notification-card/scb-notification-card.js";
|
|
64
|
+
import { ScbPagination as le } from "./scb-pagination/scb-pagination.js";
|
|
65
|
+
import { ScbProgressIndicator as ue } from "./scb-progress-indicator/scb-progress-indicator.js";
|
|
66
|
+
import { ScbProgressStep as de } from "./scb-progress-stepper/scb-progress-step.js";
|
|
67
|
+
import { ScbProgressStepper as fe } from "./scb-progress-stepper/scb-progress-stepper.js";
|
|
68
|
+
import { ScbScrollspy as pe } from "./scb-scrollspy/scb-scrollspy.js";
|
|
69
|
+
import { ScbSegmentedItem as me } from "./scb-segmented-button/scb-segmented-item.js";
|
|
70
|
+
import { ScbSegmentedButton as he } from "./scb-segmented-button/scb-segmented-button.js";
|
|
71
|
+
import { ScbSelectOption as ge } from "./scb-select/scb-select-option.js";
|
|
72
|
+
import { ScbSelect as _e } from "./scb-select/scb-select.js";
|
|
73
|
+
import { ScbSlider as ve } from "./scb-slider/scb-slider.js";
|
|
74
|
+
import { ScbSnackbar as ye } from "./scb-snackbar/scb-snackbar.js";
|
|
75
|
+
import { ScbStatusPill as be } from "./scb-status-pill/scb-status-pill.js";
|
|
76
|
+
import { ScbStep as xe } from "./scb-stepper/scb-step.js";
|
|
77
|
+
import { ScbStepper as Se } from "./scb-stepper/scb-stepper.js";
|
|
78
|
+
import { ScbTable as Ce } from "./scb-table/scb-table.js";
|
|
79
|
+
import { ScbTableAdvanced as we } from "./scb-table-advanced/scb-table-advanced.js";
|
|
80
|
+
import { ScbPrimaryTab as Te } from "./scb-tabs/scb-primary-tab.js";
|
|
81
|
+
import { ScbSecondaryTab as Ee } from "./scb-tabs/scb-secondary-tab.js";
|
|
82
|
+
import { ScbTabs as De } from "./scb-tabs/scb-tabs.js";
|
|
83
|
+
import { ScbTocItem as Oe } from "./scb-toc/scb-toc-item.js";
|
|
84
|
+
import { ScbToc as ke } from "./scb-toc/scb-toc.js";
|
|
85
|
+
import { buildScbVizExportFileName as Ae, createScbVizCsvBlob as je, createScbVizRasterBlobFromElement as Me, createScbVizRasterDataUrlFromElement as Ne, downloadScbVizBlob as Pe, getScbVizCurrentFullscreenElement as Fe, getScbVizExportBaseFileName as Ie, getScbVizFullscreenDocument as Le, isScbVizFullscreenSupported as Re, openScbVizPrintFrame as ze, runWithScbVizForcedPrintLightMode as Be, toggleScbVizFullscreen as Ve } from "./scb-viz/scb-viz-actions-runtime.js";
|
|
86
|
+
import { buildScbVizPrintDocumentHtml as He, buildScbVizPrintableFooterHtml as Ue, buildScbVizPrintableTableHtml as We } from "./scb-viz/scb-viz-print-runtime.js";
|
|
87
|
+
import { appendScbVizSeriesDifferentiationPatternMarks as Ge, getScbVizSeriesDifferentiationPatternDefinition as Ke, getScbVizSeriesDifferentiationPatternKinds as qe, getScbVizSeriesDifferentiationRegistry as Je, getScbVizSeriesDifferentiationVariant as Ye, scbVizSeriesDifferentiationRegistry as Xe } from "./scb-viz/scb-viz-series-differentiation-registry.js";
|
|
88
|
+
import { clearScbVizSeriesDifferentiationColorClass as Ze, clearScbVizSeriesDifferentiationMetadata as Qe, ensureScbVizGroupedSeriesDifferentiationStore as $e, ensureScbVizStyledModeSeriesPattern as et, getScbVizGroupedSeriesDifferentiationKey as tt, getScbVizGroupedSeriesDifferentiationVariant as nt, getScbVizGroupedSeriesDifferentiationVariantIndex as rt, getScbVizHighchartsColorClassName as it, getScbVizHighchartsSvgElement as at, getScbVizHighchartsSvgRoot as ot, getScbVizLegendSeriesDifferentiationTargets as st, getScbVizSeriesDifferentiationColorIndex as ct, getScbVizSeriesDifferentiationVariantByIndex as lt, isScbVizGroupedSeriesDifferentiationChart as ut, isScbVizHighchartsStyledMode as dt, setScbVizSeriesDifferentiationColorClass as ft, setScbVizSeriesDifferentiationMetadata as pt, shouldShowScbVizSeriesDifferentiationAction as mt, usesScbVizGroupedPointDifferentiation as ht } from "./scb-viz/scb-viz-series-differentiation-runtime.js";
|
|
89
|
+
import { buildScbVizResolvedTableView as gt, createScbVizCsvRows as _t, inferScbVizTableAlignments as vt, normalizeScbVizRenderableCell as yt, readScbVizTableDataFromSlot as bt } from "./scb-viz/scb-viz-table-runtime.js";
|
|
90
|
+
import { ScbViz as xt } from "./scb-viz/scb-viz.js";
|
|
91
|
+
export { p as SCBBreadcrumb, f as SCBBreadcrumbItem, r as ScbAccordion, t as ScbAccordionItem, l as ScbAppBar, c as ScbAvatar, u as ScbBadge, n as ScbButton, T as ScbCalendar, E as ScbCalendarCard, m as ScbCalendarEvent, k as ScbCard, y as ScbCheckbox, v as ScbCheckboxGroup, e as ScbChevron, C as ScbChip, A as ScbCollapse, j as ScbCookiesConsent, g as ScbDatepicker, w as ScbDialog, h as ScbDivider, M as ScbDrawer, N as ScbDropZone, L as ScbDropdown, R as ScbFab, B as ScbFactCard, z as ScbFactCardContent, G as ScbFooter, V as ScbFooterSection, J as ScbGalleryGrid, W as ScbGrid, H as ScbGridItem, ie as ScbHeader, Y as ScbHeaderMenuGroup, X as ScbHeaderMenuItem, Z as ScbHeaderTab, Q as ScbHeaderUtility, K as ScbHorizontalScroller, i as ScbIconButton, ae as ScbKeyFigureCard, d as ScbLink, o as ScbList, a as ScbListItem, ne as ScbMenu, $ as ScbMenuItem, se as ScbNav, oe as ScbNavItem, ce as ScbNotificationCard, I as ScbOptionsMenu, P as ScbOptionsMenuItem, F as ScbOptionsSubMenu, q as ScbOverlay, le as ScbPagination, Te as ScbPrimaryTab, ue as ScbProgressIndicator, de as ScbProgressStep, fe as ScbProgressStepper, x as ScbRadioButton, b as ScbRadioGroup, pe as ScbScrollspy, s as ScbSearch, Ee as ScbSecondaryTab, he as ScbSegmentedButton, me as ScbSegmentedItem, _e as ScbSelect, ge as ScbSelectOption, re as ScbSkeleton, ve as ScbSlider, ye as ScbSnackbar, U as ScbStack, be as ScbStatusPill, xe as ScbStep, Se as ScbStepper, te as ScbSubmenu, S as ScbSwitch, Ce as ScbTable, we as ScbTableAdvanced, De as ScbTabs, _ as ScbTextField, ke as ScbToc, Oe as ScbTocItem, D as ScbTooltip, O as ScbVignette, xt as ScbViz, ee as ScbmenuSection, Ge as appendScbVizSeriesDifferentiationPatternMarks, Ae as buildScbVizExportFileName, He as buildScbVizPrintDocumentHtml, Ue as buildScbVizPrintableFooterHtml, We as buildScbVizPrintableTableHtml, gt as buildScbVizResolvedTableView, Ze as clearScbVizSeriesDifferentiationColorClass, Qe as clearScbVizSeriesDifferentiationMetadata, je as createScbVizCsvBlob, _t as createScbVizCsvRows, Me as createScbVizRasterBlobFromElement, Ne as createScbVizRasterDataUrlFromElement, Pe as downloadScbVizBlob, $e as ensureScbVizGroupedSeriesDifferentiationStore, et as ensureScbVizStyledModeSeriesPattern, Fe as getScbVizCurrentFullscreenElement, Ie as getScbVizExportBaseFileName, Le as getScbVizFullscreenDocument, tt as getScbVizGroupedSeriesDifferentiationKey, nt as getScbVizGroupedSeriesDifferentiationVariant, rt as getScbVizGroupedSeriesDifferentiationVariantIndex, it as getScbVizHighchartsColorClassName, at as getScbVizHighchartsSvgElement, ot as getScbVizHighchartsSvgRoot, st as getScbVizLegendSeriesDifferentiationTargets, ct as getScbVizSeriesDifferentiationColorIndex, Ke as getScbVizSeriesDifferentiationPatternDefinition, qe as getScbVizSeriesDifferentiationPatternKinds, Je as getScbVizSeriesDifferentiationRegistry, Ye as getScbVizSeriesDifferentiationVariant, lt as getScbVizSeriesDifferentiationVariantByIndex, vt as inferScbVizTableAlignments, Re as isScbVizFullscreenSupported, ut as isScbVizGroupedSeriesDifferentiationChart, dt as isScbVizHighchartsStyledMode, yt as normalizeScbVizRenderableCell, ze as openScbVizPrintFrame, bt as readScbVizTableDataFromSlot, Be as runWithScbVizForcedPrintLightMode, Xe as scbVizSeriesDifferentiationRegistry, ft as setScbVizSeriesDifferentiationColorClass, pt as setScbVizSeriesDifferentiationMetadata, mt as shouldShowScbVizSeriesDifferentiationAction, Ve as toggleScbVizFullscreen, ht as usesScbVizGroupedPointDifferentiation };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as w,b as R,g as M,y as g}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as O}from"../../vendor/decorate.js";(function(){try{var h=typeof globalThis<"u"?globalThis:window;if(!h.__scb_ce_guard_installed__){h.__scb_ce_guard_installed__=!0;var t=customElements.define.bind(customElements);customElements.define=function(e,s,i){try{customElements.get(e)||t(e,s,i)}catch(o){var n=String(o||"");if(n.indexOf("already been used")===-1&&n.indexOf("NotSupportedError")===-1)throw o}}}}catch{}})();var m,E=(m=class extends w{constructor(...t){super(...t),this.navSelector="",this.offsetTop=0,this.offsetBottom=0,this.updateHash=!0,this.activeId="",this.layout="",this.sidebarNavWidth="320px",this.sidebarHeight="560px",this.stackHeight="",this.sidebarNavTop="0px",this.contentPadding="0px",this.spacing=void 0,this.spacingTop=void 0,this.spacingBottom=void 0,this.spacingLeft=void 0,this.spacingRight=void 0,this.__navEl=null,this.__contentEl=null,this.__contentShellEl=null,this.__links=[],this.__observer=null,this.__fallbackScrollRoot=null,this.__entries=new Map,this.__rafId=null,this.__scrollRafId=null,this.__hashAllowUpdates=!1,this.__hashBaselineReady=!1,this.__hashBaselinePos=0,this.__hashBaselineRafId=null,this.__hashScrollRoot=null,this.__hashSuspend=!1,this.__hashInitialApplied=!1,this.__onHashScrollBound=()=>this.__onHashScroll(),this.__scrollAnimSeq=0,this.__syncingActiveId=!1,this.__slotsResolvedOnce=!1,this.__motionMeasureEl=null,this.__focusableRafId=null,this.__autoOffsetTop=0,this.__autoOffsetRafId=null,this.__navResizeObserver=null,this.__onNavClickBound=e=>this.__onNavClick(e),this.__onScrollFallbackBound=()=>this.__updateActiveFromRects(),this.__onResizeBound=()=>{this.__requestActiveRecalc(),this.__requestAutoOffsetMeasure()},this.__onSlotChange=()=>{const e=this.__navEl;this.__teardown(),this.__resolveSlots(),this.__requestEnsureContentFocusable(),this.__navEl&&this.__navEl.addEventListener("click",this.__onNavClickBound,!0),(e!==this.__navEl||!this.__links.length)&&this.__collectLinks(),this.__requestAutoOffsetMeasure(),this.__rebuildObserver(),this.__attachHashScrollRoot(),this.__applyInitialHashIfAny(),!this.__hashInitialApplied&&this.activeId&&this.__applyActiveId(this.activeId,{updateHash:!1,scrollToTarget:!1}),this.__slotsResolvedOnce=!0}}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.__onResizeBound,{passive:!0})}firstUpdated(){this.__ensureMotionMeasureEl(),this.__resolveInternals(),this.__requestEnsureContentFocusable(),this.__requestAutoOffsetMeasure(),this.__applySpacing()}disconnectedCallback(){window.removeEventListener("resize",this.__onResizeBound),this.__teardown(),super.disconnectedCallback()}updated(t){if((t.has("spacing")||t.has("spacingTop")||t.has("spacingBottom")||t.has("spacingLeft")||t.has("spacingRight"))&&this.__applySpacing(),t.has("navSelector")){this.__onSlotChange();return}if(t.has("layout")){this.__onSlotChange();return}(t.has("offsetTop")||t.has("offsetBottom"))&&(this.__rebuildObserver(),this.__attachHashScrollRoot()),(t.has("sidebarNavWidth")||t.has("sidebarHeight")||t.has("stackHeight")||t.has("sidebarNavTop")||t.has("contentPadding"))&&(this.__resolveInternals(),this.__requestEnsureContentFocusable(),this.__rebuildObserver()),t.has("activeId")&&(this.__syncingActiveId?this.__syncingActiveId=!1:this.__applyExternalActiveId())}__mapSpacingToken(t){if(!t)return;const e=String(t).trim();if(e)return/^\d+$/.test(e)?`var(--spacing-${Math.max(0,Math.min(14,parseInt(e,10)))})`:e}__applySpacing(){const t=this.__mapSpacingToken(this.spacing),e=this.__mapSpacingToken(this.spacingTop)??t,s=this.__mapSpacingToken(this.spacingBottom)??t,i=this.__mapSpacingToken(this.spacingLeft),n=this.__mapSpacingToken(this.spacingRight);e?this.style.setProperty("--scb-scrollspy-spacing-block-start",e):this.style.removeProperty("--scb-scrollspy-spacing-block-start"),s?this.style.setProperty("--scb-scrollspy-spacing-block-end",s):this.style.removeProperty("--scb-scrollspy-spacing-block-end"),i?this.style.setProperty("--scb-scrollspy-spacing-inline-start",i):this.style.removeProperty("--scb-scrollspy-spacing-inline-start"),n?this.style.setProperty("--scb-scrollspy-spacing-inline-end",n):this.style.removeProperty("--scb-scrollspy-spacing-inline-end")}__teardown(){this.__cancelScrollAnimation(),this.__cancelEnsureContentFocusable(),this.__cancelAutoOffsetMeasure(),this.__disconnectAutoOffsetObserver(),this.__disconnectObserver(),this.__navEl&&this.__navEl.removeEventListener("click",this.__onNavClickBound,!0),this.__fallbackScrollRoot&&this.__fallbackScrollRoot.removeEventListener?.("scroll",this.__onScrollFallbackBound),this.__fallbackScrollRoot=null,this.__entries.clear(),this.__links=[],this.__detachHashScrollRoot(),this.__cancelHashBaseline()}__cancelScrollAnimation(){this.__scrollAnimSeq++,this.__scrollRafId!==null&&(window.cancelAnimationFrame(this.__scrollRafId),this.__scrollRafId=null)}__cancelEnsureContentFocusable(){this.__focusableRafId!==null&&(window.cancelAnimationFrame(this.__focusableRafId),this.__focusableRafId=null)}__requestEnsureContentFocusable(){typeof window>"u"||(this.__cancelEnsureContentFocusable(),this.__focusableRafId=window.requestAnimationFrame(()=>{this.__focusableRafId=null,this.__ensureScrollableContentFocusable()}))}__ensureScrollableContentFocusable(){const t=this.__getScrollContainerEl();t instanceof HTMLElement&&(t.hasAttribute("tabindex")||(t.scrollHeight>t.clientHeight+1||t.scrollWidth>t.clientWidth+1)&&(t.querySelector('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"]), [contenteditable=""], [contenteditable="true"]')||t.setAttribute("tabindex","0")))}__ensureMotionMeasureEl(){if(this.__motionMeasureEl)return;const t=document.createElement("span");t.setAttribute("aria-hidden","true"),t.style.position="fixed",t.style.width="0",t.style.height="0",t.style.overflow="hidden",t.style.pointerEvents="none",t.style.visibility="hidden",this.__motionMeasureEl=t,this.renderRoot.appendChild(t)}__disconnectObserver(){this.__observer&&(this.__observer.disconnect(),this.__observer=null)}__resolveInternals(){this.__contentShellEl=this.layout==="sidebar"?this.renderRoot.querySelector(".sidebar-content"):this.layout==="stack"?this.renderRoot.querySelector(".stack-shell"):null}__resolveSlots(){const t=this.renderRoot.querySelector('slot[name="nav"]'),e=this.renderRoot.querySelector('slot[name="content"]'),s=t?.assignedElements({flatten:!0})??[],i=e?.assignedElements({flatten:!0})??[],n=(this.navSelector||"").trim(),o=n?this.__queryExternalNav(n):s[0],r=i[0];this.__navEl=o instanceof HTMLElement?o:null,this.__contentEl=r instanceof HTMLElement?r:null,this.__resolveInternals()}__queryExternalNav(t){try{return this.getRootNode?.()?.querySelector?.(t)??document.querySelector(t)}catch{return null}}__getScrollContainerEl(){return this.layout==="sidebar"||this.layout==="stack"?this.__contentShellEl:this.__contentEl}__isOffsetTopExplicit(){return this.hasAttribute("offset-top")}__getEffectiveOffsetTop(){const t=this.__isOffsetTopExplicit()?this.offsetTop:this.__autoOffsetTop;return Math.max(0,t)}__cancelAutoOffsetMeasure(){this.__autoOffsetRafId!==null&&(window.cancelAnimationFrame(this.__autoOffsetRafId),this.__autoOffsetRafId=null)}__disconnectAutoOffsetObserver(){this.__navResizeObserver&&(this.__navResizeObserver.disconnect(),this.__navResizeObserver=null)}__requestAutoOffsetMeasure(){if(!(typeof window>"u")){if(this.__isOffsetTopExplicit()){this.__setAutoOffsetTop(0),this.__disconnectAutoOffsetObserver();return}this.__autoOffsetRafId===null&&(this.__autoOffsetRafId=window.requestAnimationFrame(()=>{this.__autoOffsetRafId=null,this.__measureAutoOffset()}))}}__measureAutoOffset(){const t=this.__navEl;if(this.__isOffsetTopExplicit()){this.__setAutoOffsetTop(0),this.__disconnectAutoOffsetObserver();return}if(!(t?.tagName==="SCB-NAV"&&(t.hasAttribute("sticky")||t.sticky===!0))){this.__setAutoOffsetTop(0),this.__disconnectAutoOffsetObserver();return}const e=Math.max(0,Math.round(t.getBoundingClientRect().height));this.__setAutoOffsetTop(e),!this.__navResizeObserver&&"ResizeObserver"in window&&(this.__navResizeObserver=new ResizeObserver(()=>{this.__requestAutoOffsetMeasure()}),this.__navResizeObserver.observe(t))}__setAutoOffsetTop(t){const e=Math.max(0,t);Math.abs(e-this.__autoOffsetTop)<1||(this.__autoOffsetTop=e,this.__rebuildObserver(),this.__requestActiveRecalc())}__rebuildObserver(){this.__disconnectObserver(),this.__entries.clear();const t=this.__getObserverRoot(),e=`-${Math.max(0,this.__getEffectiveOffsetTop())}px 0px -${Math.max(0,this.offsetBottom)}px 0px`;if(!(typeof window>"u")){if("IntersectionObserver"in window){this.__observer=new IntersectionObserver(s=>this.__onIntersect(s),{root:t,rootMargin:e,threshold:[0,.1,.25,.5,.75,1]});for(const s of this.__links)this.__observer.observe(s.targetEl);this.__requestActiveRecalc();return}this.__enableFallbackScrollSpy()}}__enableFallbackScrollSpy(){const t=this.__getObserverRoot()??window;this.__fallbackScrollRoot=t,t.addEventListener?.("scroll",this.__onScrollFallbackBound,{passive:!0}),this.__requestActiveRecalc()}__getObserverRoot(){const t=this.__getScrollContainerEl();return t instanceof HTMLElement&&(t.scrollHeight>t.clientHeight+1||t.scrollWidth>t.clientWidth+1)?t:null}__collectLinks(){const t=this.__navEl,e=this.__contentEl;if(!t||!e){this.__links=[];return}const s=Array.from(t.querySelectorAll('scb-menu-item[item-href^="#"], scb-nav-item[href^="#"], scb-nav-item[data-href^="#"], a[href^="#"], button[data-href^="#"]')),i=[];for(const n of s){const o=this.__getHref(n);if(!o||!o.startsWith("#"))continue;const r=o.slice(1);if(!r)continue;const a=e.querySelector(`#${CSS.escape(r)}`);a&&i.push({id:r,navEl:n,targetEl:a})}this.__links=i}__getHref(t){return t.tagName==="A"?t.getAttribute("href")??"":t.tagName==="SCB-MENU-ITEM"?t.itemHref??t.getAttribute("item-href")??"":t.tagName==="BUTTON"?t.getAttribute("data-href")??"":t.tagName==="SCB-NAV-ITEM"?t.href||t.dataHref||t.getAttribute("href")||t.getAttribute("data-href")||"":t.getAttribute("href")??""}__onIntersect(t){for(const e of t){const s=e.target.id;s&&this.__entries.set(s,{id:s,isIntersecting:e.isIntersecting,top:e.boundingClientRect.top,ratio:e.intersectionRatio})}this.__requestActiveRecalc()}__requestActiveRecalc(){this.__rafId===null&&(this.__rafId=window.requestAnimationFrame(()=>{this.__rafId=null,this.__updateActiveFromEntries()}))}__updateActiveFromEntries(){if(this.__entries.size===0){this.__updateActiveFromRects();return}const t=Array.from(this.__entries.values()).filter(n=>n.isIntersecting);if(t.length===0)return;const e=this.__getObserverRoot(),s=((e?e.getBoundingClientRect():null)?.top??0)+Math.max(0,this.__getEffectiveOffsetTop()),i=t.filter(n=>n.top>=s).sort((n,o)=>n.top-o.top)[0]??t.sort((n,o)=>o.top-n.top)[0];i?.id&&this.__setActiveId(i.id,{updateHash:this.updateHash})}__updateActiveFromRects(){if(!this.__contentEl)return;const t=this.__getObserverRoot(),e=((t?t.getBoundingClientRect():null)?.top??0)+Math.max(0,this.__getEffectiveOffsetTop()),s=this.__links.map(n=>{const o=n.targetEl.getBoundingClientRect();return{id:n.id,top:o.top-e}}).filter(n=>Number.isFinite(n.top));if(s.length===0)return;const i=s.filter(n=>n.top>=0).sort((n,o)=>n.top-o.top)[0]??s.sort((n,o)=>o.top-n.top)[0];i?.id&&this.__setActiveId(i.id,{updateHash:this.updateHash})}__applyActiveId(t,e){const s=this.__links.find(i=>i.id===t);if(this.__navEl?.tagName==="SCB-NAV"?this.__navEl.activeHref=`#${t}`:s&&(this.__applyActiveToNav(s.navEl),this.__expandAncestors(s.navEl)),e.scrollToTarget){let i=s?.targetEl??null;if(!i){const n=this.__contentEl??this;try{i=n.querySelector(`#${CSS.escape(t)}`)}catch{i=n.querySelector(`[id="${t}"]`)}!i&&typeof document<"u"&&(i=document.getElementById(t))}i&&this.__scrollToTarget(i)}if(e.updateHash&&this.__hashAllowUpdates&&typeof history<"u")try{history.replaceState(null,"",`#${encodeURIComponent(t)}`)}catch{}this.dispatchEvent(new CustomEvent("scb-scrollspy-active-changed",{bubbles:!0,composed:!0,detail:{id:t}})),this.dispatchEvent(new CustomEvent("scbscrollspyactivechanged",{bubbles:!0,composed:!0,detail:{id:t}}))}__applyExternalActiveId(){const t=(this.activeId||"").trim();t&&(this.__links.length||this.__collectLinks(),this.__applyActiveId(t,{updateHash:this.updateHash,scrollToTarget:this.__slotsResolvedOnce}))}__setActiveId(t,e){!t||t===this.activeId||(this.__syncingActiveId=!0,this.activeId=t,this.__applyActiveId(t,{updateHash:e.updateHash,scrollToTarget:!1}))}__applyActiveToNav(t){const e=this.__navEl;if(!e)return;const s=Array.from(e.querySelectorAll('scb-menu-item[item-href^="#"], scb-nav-item[href^="#"], scb-nav-item[data-href^="#"], a[href^="#"], button[data-href^="#"]'));for(const i of s){const n=i===t;if(i.tagName==="SCB-MENU-ITEM"){const o=i;typeof o.selected=="boolean"&&(o.selected=n),n&&i.dispatchEvent(new CustomEvent("scb-menu-select",{bubbles:!0,composed:!0,detail:{item:i}}))}else i.tagName==="A"||i.tagName==="BUTTON"?n?i.setAttribute("aria-current","location"):i.removeAttribute("aria-current"):i.tagName==="SCB-NAV-ITEM"&&(n?(i.setAttribute("aria-current","location"),i.setAttribute("data-active","true")):(i.removeAttribute("aria-current"),i.removeAttribute("data-active")))}}__expandAncestors(t){let e=t;for(;e;){if(e.tagName==="SCB-MENU-ITEM"){const s=e;typeof s.expanded=="boolean"&&(s.expanded=!0)}e=e.parentElement}}__scrollToTarget(t){const e=typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches,s=this.__getScrollContainerEl();if(s instanceof HTMLElement&&s.scrollHeight>s.clientHeight+1){const l=this.__getScrollTopInContainer(t,s)-this.__getEffectiveOffsetTop(),d=Math.max(0,s.scrollHeight-s.clientHeight),u=Math.min(d,Math.max(0,l));if(e){s.scrollTop=u;return}this.__animateScroll({get:()=>s.scrollTop,set:f=>{s.scrollTop=f},max:d,to:u});return}if(!(t instanceof HTMLElement))return;const i=t.getBoundingClientRect(),n=(window.scrollY||window.pageYOffset||0)+i.top-this.__getEffectiveOffsetTop(),o=document.documentElement,r=Math.max(0,o.scrollHeight-window.innerHeight),a=Math.min(r,Math.max(0,n));if(e){window.scrollTo(0,a);return}this.__animateScroll({get:()=>window.scrollY||window.pageYOffset||0,set:l=>window.scrollTo(0,l),max:r,to:a})}__getScrollTopInContainer(t,e){const s=e.getBoundingClientRect(),i=t.getBoundingClientRect();return e.scrollTop+(i.top-s.top)}__animateScroll(t){const e=t.get(),s=Math.min(t.max,Math.max(0,t.to));if(!Number.isFinite(e)||!Number.isFinite(s))return;if(Math.abs(s-e)<1){t.set(s);return}this.__cancelScrollAnimation(),this.__ensureMotionMeasureEl();const i=++this.__scrollAnimSeq,n=Math.abs(s-e),o=this.__getScrollDurationMs(n),r=this.__getScrollEasingFn(),a=performance.now(),l=d=>{if(i!==this.__scrollAnimSeq)return;const u=o<=0?1:Math.min(1,(d-a)/o),f=r(u);t.set(e+(s-e)*f),u<1?this.__scrollRafId=window.requestAnimationFrame(l):this.__scrollRafId=null};this.__scrollRafId=window.requestAnimationFrame(l)}__getScrollDurationMs(t){const e=this.__resolveTimeMs("var(--motion-duration-medium, 300ms)")??300,s=this.__resolveTimeMs("var(--motion-duration-long, 500ms)")??500,i=this.__resolveTimeMs("var(--motion-duration-extra-long, 700ms)")??700,n=Math.min(1,Math.max(0,t/1800)),o=e+(s-e)*n;return Math.min(i,Math.max(e,o))}__getScrollEasingFn(){const t=this.__resolveTimingFunction("var(--motion-easing-emphasized-decelerate, var(--motion-easing-emphasized, cubic-bezier(.69,.16,.2,.98)))")??"cubic-bezier(0.05, 0.7, 0.1, 1)";return this.__parseEasingFunction(t)??(e=>e)}__resolveTimeMs(t){const e=this.__motionMeasureEl;if(!e)return null;e.style.transitionDuration=t;const s=getComputedStyle(e).transitionDuration.split(",")[0]?.trim()??"";return this.__parseTimeToMs(s)}__resolveTimingFunction(t){const e=this.__motionMeasureEl;return e?(e.style.transitionTimingFunction=t,getComputedStyle(e).transitionTimingFunction.split(",")[0]?.trim()??null):null}__parseTimeToMs(t){const e=t.trim();if(!e)return null;const s=parseFloat(e);return Number.isFinite(s)?e.endsWith("ms")?s:e.endsWith("s")?s*1e3:null:null}__parseEasingFunction(t){const e=t.trim();if(!e)return null;if(e==="linear")return l=>l;const s=e.match(/cubic-bezier\(([^)]+)\)/i);if(!s)return null;const i=s[1].split(",").map(l=>parseFloat(l.trim())).filter(l=>Number.isFinite(l));if(i.length!==4)return null;const[n,o,r,a]=i;return this.__cubicBezier(n,o,r,a)}__cubicBezier(t,e,s,i){const n=3*t,o=3*(s-t)-n,r=1-n-o,a=3*e,l=3*(i-e)-a,d=1-a-l,u=c=>((r*c+o)*c+n)*c,f=c=>((d*c+l)*c+a)*c,A=c=>(3*r*c+2*o)*c+n,T=c=>{let _=c;for(let p=0;p<8;p++){const y=u(_)-c;if(Math.abs(y)<1e-6)return _;const S=A(_);if(Math.abs(S)<1e-6)break;_=_-y/S}let b=0,v=1;for(_=c;b<v;){const p=u(_)-c;if(Math.abs(p)<1e-6)return _;p>0?v=_:b=_,_=(v+b)/2}return _};return c=>f(T(Math.min(1,Math.max(0,c))))}__detachHashScrollRoot(){if(!this.__hashScrollRoot)return;const t=this.__hashScrollRoot;try{t instanceof Window?t.removeEventListener("scroll",this.__onHashScrollBound):t.removeEventListener("scroll",this.__onHashScrollBound)}catch{}this.__hashScrollRoot=null}__cancelHashBaseline(){this.__hashBaselineRafId!==null&&(window.cancelAnimationFrame(this.__hashBaselineRafId),this.__hashBaselineRafId=null),this.__hashBaselineReady=!1}__attachHashScrollRoot(){this.__detachHashScrollRoot();const t=this.__getObserverRoot()??window;this.__hashScrollRoot=t;try{t.addEventListener("scroll",this.__onHashScrollBound,{passive:!0})}catch{}this.__hashAllowUpdates=!1,this.__scheduleHashBaseline()}__scheduleHashBaseline(){this.__cancelHashBaseline();const t=()=>{this.__hashBaselinePos=this.__getHashScrollPos(),this.__hashBaselineReady=!0,this.__hashBaselineRafId=null};this.__hashBaselineRafId=window.requestAnimationFrame(()=>{this.__hashBaselineRafId=window.requestAnimationFrame(t)})}__getHashScrollPos(){const t=this.__hashScrollRoot;if(t instanceof Window)return t.scrollY||t.pageYOffset||0;if(t&&"scrollTop"in t){const e=t;return typeof e.scrollTop=="number"?e.scrollTop:0}return 0}__onHashScroll(){if(!this.updateHash||this.__hashSuspend||this.__hashAllowUpdates||!this.__hashBaselineReady)return;const t=this.__getHashScrollPos();Math.abs(t-this.__hashBaselinePos)>2&&(this.__hashAllowUpdates=!0)}__jumpToTarget(t){const e=this.__getScrollContainerEl();if(e instanceof HTMLElement&&e.scrollHeight>e.clientHeight+1){const a=this.__getScrollTopInContainer(t,e)-this.__getEffectiveOffsetTop(),l=Math.max(0,e.scrollHeight-e.clientHeight);e.scrollTop=Math.min(l,Math.max(0,a));return}if(!(t instanceof HTMLElement))return;const s=t.getBoundingClientRect(),i=(window.scrollY||window.pageYOffset||0)+s.top-this.__getEffectiveOffsetTop(),n=document.documentElement,o=Math.max(0,n.scrollHeight-window.innerHeight),r=Math.min(o,Math.max(0,i));window.scrollTo(0,r)}__applyInitialHashIfAny(){if(this.__hashInitialApplied)return;const t=typeof window<"u"?window.location.hash:"";if(!t||t.length<2)return;let e="";try{e=decodeURIComponent(t.slice(1))}catch{e=t.slice(1)}if(!e)return;const s=this.__links.find(i=>i.id===e);if(s?.targetEl){this.__hashInitialApplied=!0,this.__hashSuspend=!0;try{this.__jumpToTarget(s.targetEl),this.__setActiveId(e,{updateHash:!1})}finally{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{this.__hashSuspend=!1})})}}}__onNavClick(t){const e=this.__navEl,s=this.__contentEl;if(!e||!s)return;const i=t.composedPath().find(a=>a instanceof Element&&(a.tagName==="SCB-MENU-ITEM"||a.tagName==="SCB-NAV-ITEM"||a.tagName==="A"||a.tagName==="BUTTON"));if(!i)return;const n=this.__getHref(i);if(!n||!n.startsWith("#"))return;const o=n.slice(1);if(!o)return;const r=s.querySelector(`#${CSS.escape(o)}`);r&&(t.preventDefault(),this.__hashAllowUpdates=!0,this.__scrollToTarget(r),this.__setActiveId(o,{updateHash:this.updateHash}))}render(){if(this.layout==="sidebar")return g`
|
|
1
|
+
import{_ as w,b as R,g as M,y as g}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as O}from"../../vendor/decorate.js";(function(){try{var h=typeof globalThis<"u"?globalThis:window;if(!h.__scb_ce_guard_installed__){h.__scb_ce_guard_installed__=!0;var t=customElements.define.bind(customElements);customElements.define=function(e,s,i){try{customElements.get(e)||t(e,s,i)}catch(o){var n=String(o||"");if(n.indexOf("already been used")===-1&&n.indexOf("NotSupportedError")===-1)throw o}}}}catch{}})();var b,E=(b=class extends w{constructor(...t){super(...t),this.navSelector="",this.offsetTop=0,this.offsetBottom=0,this.updateHash=!0,this.activeId="",this.layout="",this.sidebarNavWidth="320px",this.sidebarHeight="560px",this.stackHeight="",this.sidebarNavTop="0px",this.contentPadding="0px",this.spacing=void 0,this.spacingTop=void 0,this.spacingBottom=void 0,this.spacingLeft=void 0,this.spacingRight=void 0,this.__navEl=null,this.__contentEl=null,this.__contentShellEl=null,this.__links=[],this.__observer=null,this.__fallbackScrollRoot=null,this.__entries=new Map,this.__rafId=null,this.__scrollRafId=null,this.__hashAllowUpdates=!1,this.__hashBaselineReady=!1,this.__hashBaselinePos=0,this.__hashBaselineRafId=null,this.__hashScrollRoot=null,this.__hashSuspend=!1,this.__hashInitialApplied=!1,this.__onHashScrollBound=()=>this.__onHashScroll(),this.__scrollAnimSeq=0,this.__syncingActiveId=!1,this.__slotsResolvedOnce=!1,this.__motionMeasureEl=null,this.__focusableRafId=null,this.__autoOffsetTop=0,this.__autoOffsetRafId=null,this.__navResizeObserver=null,this.__onNavClickBound=e=>this.__onNavClick(e),this.__onScrollFallbackBound=()=>this.__updateActiveFromRects(),this.__onResizeBound=()=>{this.__requestActiveRecalc(),this.__requestAutoOffsetMeasure()},this.__onSlotChange=()=>{const e=this.__navEl;this.__teardown(),this.__resolveSlots(),this.__requestEnsureContentFocusable(),this.__navEl&&this.__navEl.addEventListener("click",this.__onNavClickBound,!0),(e!==this.__navEl||!this.__links.length)&&this.__collectLinks(),this.__requestAutoOffsetMeasure(),this.__rebuildObserver(),this.__attachHashScrollRoot(),this.__applyInitialHashIfAny(),!this.__hashInitialApplied&&this.activeId&&this.__applyActiveId(this.activeId,{updateHash:!1,scrollToTarget:!1}),this.__slotsResolvedOnce=!0}}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.__onResizeBound,{passive:!0})}firstUpdated(){this.__ensureMotionMeasureEl(),this.__resolveInternals(),this.__requestEnsureContentFocusable(),this.__requestAutoOffsetMeasure(),this.__applySpacing()}disconnectedCallback(){window.removeEventListener("resize",this.__onResizeBound),this.__teardown(),super.disconnectedCallback()}updated(t){if((t.has("spacing")||t.has("spacingTop")||t.has("spacingBottom")||t.has("spacingLeft")||t.has("spacingRight"))&&this.__applySpacing(),t.has("navSelector")){this.__onSlotChange();return}if(t.has("layout")){this.__onSlotChange();return}(t.has("offsetTop")||t.has("offsetBottom"))&&(this.__rebuildObserver(),this.__attachHashScrollRoot()),(t.has("sidebarNavWidth")||t.has("sidebarHeight")||t.has("stackHeight")||t.has("sidebarNavTop")||t.has("contentPadding"))&&(this.__resolveInternals(),this.__requestEnsureContentFocusable(),this.__rebuildObserver()),t.has("activeId")&&(this.__syncingActiveId?this.__syncingActiveId=!1:this.__applyExternalActiveId())}__mapSpacingToken(t){if(!t)return;const e=String(t).trim();if(e)return/^\d+$/.test(e)?`var(--spacing-${Math.max(0,Math.min(14,parseInt(e,10)))})`:e}__applySpacing(){const t=this.__mapSpacingToken(this.spacing),e=this.__mapSpacingToken(this.spacingTop)??t,s=this.__mapSpacingToken(this.spacingBottom)??t,i=this.__mapSpacingToken(this.spacingLeft),n=this.__mapSpacingToken(this.spacingRight);e?this.style.setProperty("--scb-scrollspy-spacing-block-start",e):this.style.removeProperty("--scb-scrollspy-spacing-block-start"),s?this.style.setProperty("--scb-scrollspy-spacing-block-end",s):this.style.removeProperty("--scb-scrollspy-spacing-block-end"),i?this.style.setProperty("--scb-scrollspy-spacing-inline-start",i):this.style.removeProperty("--scb-scrollspy-spacing-inline-start"),n?this.style.setProperty("--scb-scrollspy-spacing-inline-end",n):this.style.removeProperty("--scb-scrollspy-spacing-inline-end")}__teardown(){this.__cancelScrollAnimation(),this.__cancelEnsureContentFocusable(),this.__cancelAutoOffsetMeasure(),this.__disconnectAutoOffsetObserver(),this.__disconnectObserver(),this.__navEl&&this.__navEl.removeEventListener("click",this.__onNavClickBound,!0),this.__fallbackScrollRoot&&this.__fallbackScrollRoot.removeEventListener?.("scroll",this.__onScrollFallbackBound),this.__fallbackScrollRoot=null,this.__entries.clear(),this.__links=[],this.__detachHashScrollRoot(),this.__cancelHashBaseline()}__cancelScrollAnimation(){this.__scrollAnimSeq++,this.__scrollRafId!==null&&(window.cancelAnimationFrame(this.__scrollRafId),this.__scrollRafId=null)}__cancelEnsureContentFocusable(){this.__focusableRafId!==null&&(window.cancelAnimationFrame(this.__focusableRafId),this.__focusableRafId=null)}__requestEnsureContentFocusable(){typeof window>"u"||(this.__cancelEnsureContentFocusable(),this.__focusableRafId=window.requestAnimationFrame(()=>{this.__focusableRafId=null,this.__ensureScrollableContentFocusable()}))}__ensureScrollableContentFocusable(){const t=this.__getScrollContainerEl();t instanceof HTMLElement&&(t.hasAttribute("tabindex")||(t.scrollHeight>t.clientHeight+1||t.scrollWidth>t.clientWidth+1)&&(t.querySelector('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"]), [contenteditable=""], [contenteditable="true"]')||t.setAttribute("tabindex","0")))}__ensureMotionMeasureEl(){if(this.__motionMeasureEl)return;const t=document.createElement("span");t.setAttribute("aria-hidden","true"),t.style.position="fixed",t.style.width="0",t.style.height="0",t.style.overflow="hidden",t.style.pointerEvents="none",t.style.visibility="hidden",this.__motionMeasureEl=t,this.renderRoot.appendChild(t)}__disconnectObserver(){this.__observer&&(this.__observer.disconnect(),this.__observer=null)}__resolveInternals(){this.__contentShellEl=this.layout==="sidebar"?this.renderRoot.querySelector(".sidebar-content"):this.layout==="stack"?this.renderRoot.querySelector(".stack-shell"):null}__resolveSlots(){const t=this.renderRoot.querySelector('slot[name="nav"]'),e=this.renderRoot.querySelector('slot[name="content"]'),s=t?.assignedElements({flatten:!0})??[],i=e?.assignedElements({flatten:!0})??[],n=(this.navSelector||"").trim(),o=n?this.__queryExternalNav(n):s[0],r=i[0];this.__navEl=o instanceof HTMLElement?o:null,this.__contentEl=r instanceof HTMLElement?r:null,this.__resolveInternals()}__queryExternalNav(t){try{return this.getRootNode?.()?.querySelector?.(t)??document.querySelector(t)}catch{return null}}__getScrollContainerEl(){return this.layout==="sidebar"||this.layout==="stack"?this.__contentShellEl:this.__contentEl}__isOffsetTopExplicit(){return this.hasAttribute("offset-top")}__getEffectiveOffsetTop(){const t=this.__isOffsetTopExplicit()?this.offsetTop:this.__autoOffsetTop;return Math.max(0,t)}__cancelAutoOffsetMeasure(){this.__autoOffsetRafId!==null&&(window.cancelAnimationFrame(this.__autoOffsetRafId),this.__autoOffsetRafId=null)}__disconnectAutoOffsetObserver(){this.__navResizeObserver&&(this.__navResizeObserver.disconnect(),this.__navResizeObserver=null)}__requestAutoOffsetMeasure(){if(!(typeof window>"u")){if(this.__isOffsetTopExplicit()){this.__setAutoOffsetTop(0),this.__disconnectAutoOffsetObserver();return}this.__autoOffsetRafId===null&&(this.__autoOffsetRafId=window.requestAnimationFrame(()=>{this.__autoOffsetRafId=null,this.__measureAutoOffset()}))}}__measureAutoOffset(){const t=this.__navEl;if(this.__isOffsetTopExplicit()){this.__setAutoOffsetTop(0),this.__disconnectAutoOffsetObserver();return}if(!(t?.tagName==="SCB-NAV"&&(t.hasAttribute("sticky")||t.sticky===!0))){this.__setAutoOffsetTop(0),this.__disconnectAutoOffsetObserver();return}const e=Math.max(0,Math.round(t.getBoundingClientRect().height));this.__setAutoOffsetTop(e),!this.__navResizeObserver&&"ResizeObserver"in window&&(this.__navResizeObserver=new ResizeObserver(()=>{this.__requestAutoOffsetMeasure()}),this.__navResizeObserver.observe(t))}__setAutoOffsetTop(t){const e=Math.max(0,t);Math.abs(e-this.__autoOffsetTop)<1||(this.__autoOffsetTop=e,this.__rebuildObserver(),this.__requestActiveRecalc())}__rebuildObserver(){this.__disconnectObserver(),this.__entries.clear();const t=this.__getObserverRoot(),e=`-${Math.max(0,this.__getEffectiveOffsetTop())}px 0px -${Math.max(0,this.offsetBottom)}px 0px`;if(!(typeof window>"u")){if("IntersectionObserver"in window){this.__observer=new IntersectionObserver(s=>this.__onIntersect(s),{root:t,rootMargin:e,threshold:[0,.1,.25,.5,.75,1]});for(const s of this.__links)this.__observer.observe(s.targetEl);this.__requestActiveRecalc();return}this.__enableFallbackScrollSpy()}}__enableFallbackScrollSpy(){const t=this.__getObserverRoot()??window;this.__fallbackScrollRoot=t,t.addEventListener?.("scroll",this.__onScrollFallbackBound,{passive:!0}),this.__requestActiveRecalc()}__getObserverRoot(){const t=this.__getScrollContainerEl();return t instanceof HTMLElement&&(t.scrollHeight>t.clientHeight+1||t.scrollWidth>t.clientWidth+1)?t:null}__collectLinks(){const t=this.__navEl,e=this.__contentEl;if(!t||!e){this.__links=[];return}const s=Array.from(t.querySelectorAll('scb-menu-item[item-href^="#"], scb-nav-item[href^="#"], scb-nav-item[data-href^="#"], a[href^="#"], button[data-href^="#"]')),i=[];for(const n of s){const o=this.__getHref(n);if(!o||!o.startsWith("#"))continue;const r=o.slice(1);if(!r)continue;const a=e.querySelector(`#${CSS.escape(r)}`);a&&i.push({id:r,navEl:n,targetEl:a})}this.__links=i}__getHref(t){return t.tagName==="A"?t.getAttribute("href")??"":t.tagName==="SCB-MENU-ITEM"?t.itemHref??t.getAttribute("item-href")??"":t.tagName==="BUTTON"?t.getAttribute("data-href")??"":t.tagName==="SCB-NAV-ITEM"?t.href||t.dataHref||t.getAttribute("href")||t.getAttribute("data-href")||"":t.getAttribute("href")??""}__onIntersect(t){for(const e of t){const s=e.target.id;s&&this.__entries.set(s,{id:s,isIntersecting:e.isIntersecting,top:e.boundingClientRect.top,ratio:e.intersectionRatio})}this.__requestActiveRecalc()}__requestActiveRecalc(){this.__rafId===null&&(this.__rafId=window.requestAnimationFrame(()=>{this.__rafId=null,this.__updateActiveFromEntries()}))}__updateActiveFromEntries(){if(this.__entries.size===0){this.__updateActiveFromRects();return}const t=Array.from(this.__entries.values()).filter(n=>n.isIntersecting);if(t.length===0)return;const e=this.__getObserverRoot(),s=((e?e.getBoundingClientRect():null)?.top??0)+Math.max(0,this.__getEffectiveOffsetTop()),i=t.filter(n=>n.top>=s).sort((n,o)=>n.top-o.top)[0]??t.sort((n,o)=>o.top-n.top)[0];i?.id&&this.__setActiveId(i.id,{updateHash:this.updateHash})}__updateActiveFromRects(){if(!this.__contentEl)return;const t=this.__getObserverRoot(),e=((t?t.getBoundingClientRect():null)?.top??0)+Math.max(0,this.__getEffectiveOffsetTop()),s=this.__links.map(n=>{const o=n.targetEl.getBoundingClientRect();return{id:n.id,top:o.top-e}}).filter(n=>Number.isFinite(n.top));if(s.length===0)return;const i=s.filter(n=>n.top>=0).sort((n,o)=>n.top-o.top)[0]??s.sort((n,o)=>o.top-n.top)[0];i?.id&&this.__setActiveId(i.id,{updateHash:this.updateHash})}__applyActiveId(t,e){const s=this.__links.find(i=>i.id===t);if(this.__navEl?.tagName==="SCB-NAV"?this.__navEl.activeHref=`#${t}`:s&&(this.__applyActiveToNav(s.navEl),this.__expandAncestors(s.navEl)),e.scrollToTarget){let i=s?.targetEl??null;if(!i){const n=this.__contentEl??this;try{i=n.querySelector(`#${CSS.escape(t)}`)}catch{i=n.querySelector(`[id="${t}"]`)}!i&&typeof document<"u"&&(i=document.getElementById(t))}i&&this.__scrollToTarget(i)}if(e.updateHash&&this.__hashAllowUpdates&&typeof history<"u")try{history.replaceState(null,"",`#${encodeURIComponent(t)}`)}catch{}this.dispatchEvent(new CustomEvent("scb-scrollspy-active-changed",{bubbles:!0,composed:!0,detail:{id:t}})),this.dispatchEvent(new CustomEvent("scbscrollspyactivechanged",{bubbles:!0,composed:!0,detail:{id:t}}))}__applyExternalActiveId(){const t=(this.activeId||"").trim();t&&(this.__links.length||this.__collectLinks(),this.__applyActiveId(t,{updateHash:this.updateHash,scrollToTarget:this.__slotsResolvedOnce}))}__setActiveId(t,e){!t||t===this.activeId||(this.__syncingActiveId=!0,this.activeId=t,this.__applyActiveId(t,{updateHash:e.updateHash,scrollToTarget:!1}))}__applyActiveToNav(t){const e=this.__navEl;if(!e)return;const s=Array.from(e.querySelectorAll('scb-menu-item[item-href^="#"], scb-nav-item[href^="#"], scb-nav-item[data-href^="#"], a[href^="#"], button[data-href^="#"]'));for(const i of s){const n=i===t;if(i.tagName==="SCB-MENU-ITEM"){const o=i;typeof o.selected=="boolean"&&(o.selected=n),n&&i.dispatchEvent(new CustomEvent("scb-menu-select",{bubbles:!0,composed:!0,detail:{item:i}}))}else i.tagName==="A"||i.tagName==="BUTTON"?n?i.setAttribute("aria-current","location"):i.removeAttribute("aria-current"):i.tagName==="SCB-NAV-ITEM"&&(n?(i.setAttribute("aria-current","location"),i.setAttribute("data-active","true")):(i.removeAttribute("aria-current"),i.removeAttribute("data-active")))}}__expandAncestors(t){let e=t;for(;e;){if(e.tagName==="SCB-MENU-ITEM"){const s=e;typeof s.expanded=="boolean"&&(s.expanded=!0)}e=e.parentElement}}__scrollToTarget(t){const e=typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches,s=this.__getScrollContainerEl();if(s instanceof HTMLElement&&s.scrollHeight>s.clientHeight+1){const l=this.__getScrollTopInContainer(t,s)-this.__getEffectiveOffsetTop(),d=Math.max(0,s.scrollHeight-s.clientHeight),u=Math.min(d,Math.max(0,l));if(e){s.scrollTop=u;return}this.__animateScroll({get:()=>s.scrollTop,set:f=>{s.scrollTop=f},max:d,to:u});return}if(!(t instanceof HTMLElement))return;const i=t.getBoundingClientRect(),n=(window.scrollY||window.pageYOffset||0)+i.top-this.__getEffectiveOffsetTop(),o=document.documentElement,r=Math.max(0,o.scrollHeight-window.innerHeight),a=Math.min(r,Math.max(0,n));if(e){window.scrollTo(0,a);return}this.__animateScroll({get:()=>window.scrollY||window.pageYOffset||0,set:l=>window.scrollTo(0,l),max:r,to:a})}__getScrollTopInContainer(t,e){const s=e.getBoundingClientRect(),i=t.getBoundingClientRect();return e.scrollTop+(i.top-s.top)}__animateScroll(t){const e=t.get(),s=Math.min(t.max,Math.max(0,t.to));if(!Number.isFinite(e)||!Number.isFinite(s))return;if(Math.abs(s-e)<1){t.set(s);return}this.__cancelScrollAnimation(),this.__ensureMotionMeasureEl();const i=++this.__scrollAnimSeq,n=Math.abs(s-e),o=this.__getScrollDurationMs(n),r=this.__getScrollEasingFn(),a=performance.now(),l=d=>{if(i!==this.__scrollAnimSeq)return;const u=o<=0?1:Math.min(1,(d-a)/o),f=r(u);t.set(e+(s-e)*f),u<1?this.__scrollRafId=window.requestAnimationFrame(l):this.__scrollRafId=null};this.__scrollRafId=window.requestAnimationFrame(l)}__getScrollDurationMs(t){const e=this.__resolveTimeMs("var(--motion-duration-medium, 300ms)")??300,s=this.__resolveTimeMs("var(--motion-duration-long, 500ms)")??500,i=this.__resolveTimeMs("var(--motion-duration-extra-long, 700ms)")??700,n=Math.min(1,Math.max(0,t/1800)),o=e+(s-e)*n;return Math.min(i,Math.max(e,o))}__getScrollEasingFn(){const t=this.__resolveTimingFunction("var(--motion-easing-emphasized-decelerate, var(--motion-easing-emphasized, cubic-bezier(.69,.16,.2,.98)))")??"cubic-bezier(0.05, 0.7, 0.1, 1)";return this.__parseEasingFunction(t)??(e=>e)}__resolveTimeMs(t){const e=this.__motionMeasureEl;if(!e)return null;e.style.transitionDuration=t;const s=getComputedStyle(e).transitionDuration.split(",")[0]?.trim()??"";return this.__parseTimeToMs(s)}__resolveTimingFunction(t){const e=this.__motionMeasureEl;return e?(e.style.transitionTimingFunction=t,getComputedStyle(e).transitionTimingFunction.split(",")[0]?.trim()??null):null}__parseTimeToMs(t){const e=t.trim();if(!e)return null;const s=parseFloat(e);return Number.isFinite(s)?e.endsWith("ms")?s:e.endsWith("s")?s*1e3:null:null}__parseEasingFunction(t){const e=t.trim();if(!e)return null;if(e==="linear")return l=>l;const s=e.match(/cubic-bezier\(([^)]+)\)/i);if(!s)return null;const i=s[1].split(",").map(l=>parseFloat(l.trim())).filter(l=>Number.isFinite(l));if(i.length!==4)return null;const[n,o,r,a]=i;return this.__cubicBezier(n,o,r,a)}__cubicBezier(t,e,s,i){const n=3*t,o=3*(s-t)-n,r=1-n-o,a=3*e,l=3*(i-e)-a,d=1-a-l,u=c=>((r*c+o)*c+n)*c,f=c=>((d*c+l)*c+a)*c,A=c=>(3*r*c+2*o)*c+n,T=c=>{let _=c;for(let p=0;p<8;p++){const y=u(_)-c;if(Math.abs(y)<1e-6)return _;const S=A(_);if(Math.abs(S)<1e-6)break;_=_-y/S}let m=0,v=1;for(_=c;m<v;){const p=u(_)-c;if(Math.abs(p)<1e-6)return _;p>0?v=_:m=_,_=(v+m)/2}return _};return c=>f(T(Math.min(1,Math.max(0,c))))}__detachHashScrollRoot(){if(!this.__hashScrollRoot)return;const t=this.__hashScrollRoot;try{t instanceof Window?t.removeEventListener("scroll",this.__onHashScrollBound):t.removeEventListener("scroll",this.__onHashScrollBound)}catch{}this.__hashScrollRoot=null}__cancelHashBaseline(){this.__hashBaselineRafId!==null&&(window.cancelAnimationFrame(this.__hashBaselineRafId),this.__hashBaselineRafId=null),this.__hashBaselineReady=!1}__attachHashScrollRoot(){this.__detachHashScrollRoot();const t=this.__getObserverRoot()??window;this.__hashScrollRoot=t;try{t.addEventListener("scroll",this.__onHashScrollBound,{passive:!0})}catch{}this.__hashAllowUpdates=!1,this.__scheduleHashBaseline()}__scheduleHashBaseline(){this.__cancelHashBaseline();const t=()=>{this.__hashBaselinePos=this.__getHashScrollPos(),this.__hashBaselineReady=!0,this.__hashBaselineRafId=null};this.__hashBaselineRafId=window.requestAnimationFrame(()=>{this.__hashBaselineRafId=window.requestAnimationFrame(t)})}__getHashScrollPos(){const t=this.__hashScrollRoot;if(t instanceof Window)return t.scrollY||t.pageYOffset||0;if(t&&"scrollTop"in t){const e=t;return typeof e.scrollTop=="number"?e.scrollTop:0}return 0}__onHashScroll(){if(!this.updateHash||this.__hashSuspend||this.__hashAllowUpdates||!this.__hashBaselineReady)return;const t=this.__getHashScrollPos();Math.abs(t-this.__hashBaselinePos)>2&&(this.__hashAllowUpdates=!0)}__jumpToTarget(t){const e=this.__getScrollContainerEl();if(e instanceof HTMLElement&&e.scrollHeight>e.clientHeight+1){const a=this.__getScrollTopInContainer(t,e)-this.__getEffectiveOffsetTop(),l=Math.max(0,e.scrollHeight-e.clientHeight);e.scrollTop=Math.min(l,Math.max(0,a));return}if(!(t instanceof HTMLElement))return;const s=t.getBoundingClientRect(),i=(window.scrollY||window.pageYOffset||0)+s.top-this.__getEffectiveOffsetTop(),n=document.documentElement,o=Math.max(0,n.scrollHeight-window.innerHeight),r=Math.min(o,Math.max(0,i));window.scrollTo(0,r)}__applyInitialHashIfAny(){if(this.__hashInitialApplied)return;const t=typeof window<"u"?window.location.hash:"";if(!t||t.length<2)return;let e="";try{e=decodeURIComponent(t.slice(1))}catch{e=t.slice(1)}if(!e)return;const s=this.__links.find(i=>i.id===e);if(s?.targetEl){this.__hashInitialApplied=!0,this.__hashSuspend=!0;try{this.__jumpToTarget(s.targetEl),this.__setActiveId(e,{updateHash:!1})}finally{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{this.__hashSuspend=!1})})}}}__onNavClick(t){const e=this.__navEl,s=this.__contentEl;if(!e||!s)return;const i=t.composedPath().find(a=>a instanceof Element&&(a.tagName==="SCB-MENU-ITEM"||a.tagName==="SCB-NAV-ITEM"||a.tagName==="A"||a.tagName==="BUTTON"));if(!i)return;const n=this.__getHref(i);if(!n||!n.startsWith("#"))return;const o=n.slice(1);if(!o)return;const r=s.querySelector(`#${CSS.escape(o)}`);r&&(t.preventDefault(),this.__hashAllowUpdates=!0,this.__scrollToTarget(r),this.__setActiveId(o,{updateHash:this.updateHash}))}render(){if(this.layout==="sidebar")return g`
|
|
2
2
|
<div class="sidebar-layout" style=${[`--_scb-scrollspy-sidebar-nav-width: ${this.sidebarNavWidth}`,`--_scb-scrollspy-sidebar-height: ${this.sidebarHeight}`,`--_scb-scrollspy-sidebar-nav-top: ${this.sidebarNavTop}`,`--_scb-scrollspy-content-padding: ${this.contentPadding}`].join("; ")}>
|
|
3
3
|
<div class="sidebar-nav">
|
|
4
4
|
<slot name="nav" @slotchange=${this.__onSlotChange}></slot>
|
|
@@ -7,7 +7,7 @@ import{_ as w,b as R,g as M,y as g}from"../../vendor/vendor.js";import"../../ven
|
|
|
7
7
|
<slot name="content" @slotchange=${this.__onSlotChange}></slot>
|
|
8
8
|
</div>
|
|
9
9
|
</div>
|
|
10
|
-
`;if(this.layout==="stack"){const t=[`--_scb-scrollspy-content-padding: ${this.contentPadding}
|
|
10
|
+
`;if(this.layout==="stack"){const t=[`--_scb-scrollspy-content-padding: ${this.contentPadding}`,"--_scb-scrollspy-stack-overflow: visible"],e=(this.stackHeight||"").trim();return e&&(t.unshift(`--_scb-scrollspy-stack-height: ${e}`),t.push("--_scb-scrollspy-stack-overflow: auto")),g`
|
|
11
11
|
<div class="stack-shell" style=${t.join("; ")}>
|
|
12
12
|
<slot name="nav" @slotchange=${this.__onSlotChange}></slot>
|
|
13
13
|
<div class="stack-content">
|
|
@@ -17,7 +17,7 @@ import{_ as w,b as R,g as M,y as g}from"../../vendor/vendor.js";import"../../ven
|
|
|
17
17
|
`}return g`
|
|
18
18
|
<slot name="nav" @slotchange=${this.__onSlotChange}></slot>
|
|
19
19
|
<slot name="content" @slotchange=${this.__onSlotChange}></slot>
|
|
20
|
-
`}},
|
|
20
|
+
`}},b.properties={navSelector:{type:String,attribute:"nav-selector"},offsetTop:{type:Number,attribute:"offset-top"},offsetBottom:{type:Number,attribute:"offset-bottom"},updateHash:{type:Boolean,attribute:"update-hash",converter:{fromAttribute:h=>{if(h===null)return!0;const t=h.trim().toLowerCase();return!(t==="false"||t==="0"||t==="no")},toAttribute:h=>h?"":null}},activeId:{type:String,attribute:"active-id",reflect:!0},layout:{type:String,reflect:!0},sidebarNavWidth:{type:String,attribute:"sidebar-nav-width"},sidebarHeight:{type:String,attribute:"sidebar-height"},stackHeight:{type:String,attribute:"stack-height"},sidebarNavTop:{type:String,attribute:"sidebar-nav-top"},contentPadding:{type:String,attribute:"content-padding"},spacing:{type:String,reflect:!0},spacingTop:{type:String,attribute:"spacing-top",reflect:!0},spacingBottom:{type:String,attribute:"spacing-bottom",reflect:!0},spacingLeft:{type:String,attribute:"spacing-left",reflect:!0},spacingRight:{type:String,attribute:"spacing-right",reflect:!0}},b.styles=R`
|
|
21
21
|
:host {
|
|
22
22
|
display: contents;
|
|
23
23
|
}
|
|
@@ -40,7 +40,7 @@ import{_ as w,b as R,g as M,y as g}from"../../vendor/vendor.js";import"../../ven
|
|
|
40
40
|
|
|
41
41
|
.stack-shell {
|
|
42
42
|
max-height: var(--_scb-scrollspy-stack-height, none);
|
|
43
|
-
overflow:
|
|
43
|
+
overflow: var(--_scb-scrollspy-stack-overflow, visible);
|
|
44
44
|
border-radius: 16px;
|
|
45
45
|
font-family: var(--brand-font);
|
|
46
46
|
box-sizing: border-box;
|
|
@@ -76,4 +76,4 @@ import{_ as w,b as R,g as M,y as g}from"../../vendor/vendor.js";import"../../ven
|
|
|
76
76
|
:host([layout='sidebar']) ::slotted(scb-menu) {
|
|
77
77
|
border-radius: var(--scb-menu-surface-radius, 16px);
|
|
78
78
|
}
|
|
79
|
-
`,
|
|
79
|
+
`,b);E=O([M("scb-scrollspy")],E);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scb-wc",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.js",
|
|
@@ -444,10 +444,6 @@
|
|
|
444
444
|
"import": "./scb-viz/scb-viz-table-runtime.js",
|
|
445
445
|
"require": "./scb-viz/scb-viz-table-runtime.js"
|
|
446
446
|
},
|
|
447
|
-
"./scb-wc-public-entry": {
|
|
448
|
-
"import": "./scb-wc-public-entry/scb-wc-public-entry.js",
|
|
449
|
-
"require": "./scb-wc-public-entry/scb-wc-public-entry.js"
|
|
450
|
-
},
|
|
451
447
|
"./starters": {
|
|
452
448
|
"import": "./starters/starters.js",
|
|
453
449
|
"require": "./starters/starters.js"
|
|
@@ -458,5 +454,5 @@
|
|
|
458
454
|
},
|
|
459
455
|
"./mvc/*": "./mvc/*"
|
|
460
456
|
},
|
|
461
|
-
"buildHash": "
|
|
457
|
+
"buildHash": "9C01B4D53B6C9B9F05D7F385B879A72F97BF5F261D000D6AFFFF8E5F0FC93C01"
|
|
462
458
|
}
|
|
@@ -467,3 +467,4 @@ var s = class extends t {
|
|
|
467
467
|
};
|
|
468
468
|
e([o()], s.prototype, "_currentDate", void 0), e([o()], s.prototype, "_selectedDate", void 0), e([o()], s.prototype, "_showMonthDropdown", void 0), e([o()], s.prototype, "_showYearDropdown", void 0), e([a({ type: String })], s.prototype, "variant", void 0), e([a({ type: String })], s.prototype, "lang", void 0), e([a({ type: String })], s.prototype, "selectedValue", void 0), e([a({ type: Boolean })], s.prototype, "open", void 0), e([o()], s.prototype, "_selectedHour", void 0), e([o()], s.prototype, "_selectedMinute", void 0), s = e([i("scb-datepicker")], s);
|
|
469
469
|
//#endregion
|
|
470
|
+
export { s as ScbDatepicker };
|
|
@@ -119,7 +119,7 @@ var a = class extends t {
|
|
|
119
119
|
|
|
120
120
|
.stack-shell {
|
|
121
121
|
max-height: var(--_scb-scrollspy-stack-height, none);
|
|
122
|
-
overflow:
|
|
122
|
+
overflow: var(--_scb-scrollspy-stack-overflow, visible);
|
|
123
123
|
border-radius: 16px;
|
|
124
124
|
font-family: var(--brand-font);
|
|
125
125
|
box-sizing: border-box;
|
|
@@ -649,8 +649,8 @@ var a = class extends t {
|
|
|
649
649
|
</div>
|
|
650
650
|
`;
|
|
651
651
|
if (this.layout === "stack") {
|
|
652
|
-
let e = [`--_scb-scrollspy-content-padding: ${this.contentPadding}
|
|
653
|
-
return t && e.unshift(`--_scb-scrollspy-stack-height: ${t}`), r`
|
|
652
|
+
let e = [`--_scb-scrollspy-content-padding: ${this.contentPadding}`, "--_scb-scrollspy-stack-overflow: visible"], t = (this.stackHeight || "").trim();
|
|
653
|
+
return t && (e.unshift(`--_scb-scrollspy-stack-height: ${t}`), e.push("--_scb-scrollspy-stack-overflow: auto")), r`
|
|
654
654
|
<div class="stack-shell" style=${e.join("; ")}>
|
|
655
655
|
<slot name="nav" @slotchange=${this.__onSlotChange}></slot>
|
|
656
656
|
<div class="stack-content">
|