@ds-mo/ui 6.0.1 → 8.0.0

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 (195) hide show
  1. package/README.md +3 -3
  2. package/dist/.build-stamp +1 -1
  3. package/dist/agent.json +978 -147
  4. package/dist/angular/ds-button-filled.d.ts +1 -1
  5. package/dist/angular/ds-button-filled.js +3 -3
  6. package/dist/angular/ds-button-unfilled.d.ts +1 -1
  7. package/dist/angular/ds-button-unfilled.js +3 -3
  8. package/dist/angular/ds-chip.d.ts +1 -1
  9. package/dist/angular/ds-chip.js +3 -3
  10. package/dist/angular/ds-divider.d.ts +1 -1
  11. package/dist/angular/ds-divider.js +3 -3
  12. package/dist/angular/ds-icon.d.ts +1 -1
  13. package/dist/angular/ds-icon.js +3 -3
  14. package/dist/angular/ds-panel-sub-nav.d.ts +15 -0
  15. package/dist/angular/{ds-tab-group-nav.js → ds-panel-sub-nav.js} +13 -17
  16. package/dist/angular/ds-skeleton.d.ts +1 -1
  17. package/dist/angular/ds-skeleton.js +3 -3
  18. package/dist/angular/ds-tab-group.d.ts +1 -1
  19. package/dist/angular/ds-tab-group.js +3 -3
  20. package/dist/angular/ds-tag.d.ts +8 -2
  21. package/dist/angular/ds-tag.js +9 -5
  22. package/dist/angular/index.d.ts +1 -1
  23. package/dist/angular/index.js +1 -1
  24. package/dist/angular/proxies.d.ts +1 -1
  25. package/dist/angular/proxies.js +1 -1
  26. package/dist/components/ds-app-shell.js +1 -1
  27. package/dist/components/ds-app-shell.js.map +1 -1
  28. package/dist/components/ds-badge.js +1 -1
  29. package/dist/components/ds-banner.js +1 -1
  30. package/dist/components/ds-bar-nav.js +1 -1
  31. package/dist/components/ds-bar-nav.js.map +1 -1
  32. package/dist/components/ds-button-filled.js +1 -1
  33. package/dist/components/ds-button-unfilled.js +1 -1
  34. package/dist/components/ds-card-data-viz-donut.js +1 -1
  35. package/dist/components/ds-card-data-viz-donut.js.map +1 -1
  36. package/dist/components/ds-card-setting.js +1 -1
  37. package/dist/components/ds-card-setting.js.map +1 -1
  38. package/dist/components/ds-card.js +1 -1
  39. package/dist/components/ds-chart-bar.js +1 -1
  40. package/dist/components/ds-chart-donut.js +1 -1
  41. package/dist/components/ds-chart-legend.js +1 -1
  42. package/dist/components/ds-chart-legend.js.map +1 -1
  43. package/dist/components/ds-chart-line.js +1 -1
  44. package/dist/components/ds-checkbox.js +1 -1
  45. package/dist/components/ds-chip.js +1 -1
  46. package/dist/components/ds-chip.js.map +1 -1
  47. package/dist/components/ds-divider.js +1 -1
  48. package/dist/components/ds-divider.js.map +1 -1
  49. package/dist/components/ds-empty-state.js +1 -1
  50. package/dist/components/ds-field.js +1 -1
  51. package/dist/components/ds-icon.js +1 -1
  52. package/dist/components/ds-input.js +1 -1
  53. package/dist/components/ds-loader.js +1 -1
  54. package/dist/components/ds-loader.js.map +1 -1
  55. package/dist/components/ds-menu.js +1 -1
  56. package/dist/components/ds-modal.js +1 -1
  57. package/dist/components/ds-pagination.js +1 -1
  58. package/dist/components/ds-panel-nav.js +1 -1
  59. package/dist/components/ds-panel-nav.js.map +1 -1
  60. package/dist/components/{ds-tab-group-nav.d.ts → ds-panel-sub-nav.d.ts} +4 -4
  61. package/dist/components/ds-panel-sub-nav.js +2 -0
  62. package/dist/components/ds-panel-sub-nav.js.map +1 -0
  63. package/dist/components/ds-panel-tools.js +1 -1
  64. package/dist/components/ds-panel-tools.js.map +1 -1
  65. package/dist/components/ds-radio-group.js +1 -1
  66. package/dist/components/ds-select.js +1 -1
  67. package/dist/components/ds-select.js.map +1 -1
  68. package/dist/components/ds-shell-gradient-picker.js +1 -1
  69. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  70. package/dist/components/ds-skeleton.js +1 -1
  71. package/dist/components/ds-slider.js +1 -1
  72. package/dist/components/ds-switch.js +1 -1
  73. package/dist/components/ds-tab-group.js +1 -1
  74. package/dist/components/ds-tab-group.js.map +1 -1
  75. package/dist/components/ds-table.js +1 -1
  76. package/dist/components/ds-tag.js +1 -1
  77. package/dist/components/ds-tag.js.map +1 -1
  78. package/dist/components/ds-text.js +1 -1
  79. package/dist/components/ds-tooltip-data-viz.js +1 -1
  80. package/dist/components/ds-tooltip.js +1 -1
  81. package/dist/components/{p-BmiNX9Mc.js → p-3bRWSqaN.js} +2 -2
  82. package/dist/components/p-B8ERbwc9.js +2 -0
  83. package/dist/components/{p-DhgDNluD.js.map → p-B8ERbwc9.js.map} +1 -1
  84. package/dist/components/p-BKhG2xrW.js.map +1 -1
  85. package/dist/components/p-BQq26pt9.js.map +1 -1
  86. package/dist/components/{p-bl7d1jB2.js → p-CPD_mML6.js} +2 -2
  87. package/dist/components/p-Ca1H1HPf.js +2 -0
  88. package/dist/components/p-Ca1H1HPf.js.map +1 -0
  89. package/dist/components/p-CpX87AQy.js +2 -0
  90. package/dist/components/p-CpX87AQy.js.map +1 -0
  91. package/dist/components/p-CyMmsNCF.js +2 -0
  92. package/dist/components/p-CyMmsNCF.js.map +1 -0
  93. package/dist/components/p-D0B9uDTP.js.map +1 -1
  94. package/dist/components/{p-DHwtgzjP.js → p-DavEAOUa.js} +2 -2
  95. package/dist/components/{p-DHwtgzjP.js.map → p-DavEAOUa.js.map} +1 -1
  96. package/dist/components/{p-9Qu1ls2y.js → p-DoZU8RH0.js} +2 -2
  97. package/dist/components/p-DoZU8RH0.js.map +1 -0
  98. package/dist/components/p-DsiueSMI.js +2 -0
  99. package/dist/components/p-DsiueSMI.js.map +1 -0
  100. package/dist/components/{p-CWd8L7Fk.js → p-Dt0XnMxc.js} +2 -2
  101. package/dist/components/p-Dt0XnMxc.js.map +1 -0
  102. package/dist/components/p-Mx6VFEQc.js +2 -0
  103. package/dist/components/p-Mx6VFEQc.js.map +1 -0
  104. package/dist/components/{p-RBe9XqjU.js → p-clDpFcdU.js} +2 -2
  105. package/dist/components/p-drBA73M_.js.map +1 -1
  106. package/dist/components/p-wxw8arTd.js +2 -0
  107. package/dist/components/p-wxw8arTd.js.map +1 -0
  108. package/dist/docs/components.json +878 -941
  109. package/dist/lib/components/Icon/icon-cache.d.ts +2 -2
  110. package/dist/lib/components/Text/text-types.d.ts +1 -1
  111. package/dist/lib/{nav → shell}/index.js +7 -7
  112. package/dist/lib/{nav → shell}/index.js.map +2 -2
  113. package/dist/lib/utils/index.js +1 -1
  114. package/dist/lib/utils/index.js.map +2 -2
  115. package/dist/react/components.d.ts +1 -1
  116. package/dist/react/components.js +1 -1
  117. package/dist/react/ds-panel-sub-nav.d.ts +12 -0
  118. package/dist/react/ds-panel-sub-nav.js +12 -0
  119. package/dist/react/ds-tag.d.ts +5 -2
  120. package/dist/react/ds-tag.js +1 -1
  121. package/dist/types/components/AppShell/AppShell.d.ts +2 -2
  122. package/dist/types/components/Badge/Badge.d.ts +4 -4
  123. package/dist/types/components/BarNav/BarNav.d.ts +11 -5
  124. package/dist/types/components/BarNav/index.d.ts +1 -1
  125. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +3 -0
  126. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +5 -9
  127. package/dist/types/components/ButtonUnfilled/index.d.ts +1 -1
  128. package/dist/types/components/Chip/Chip.d.ts +0 -5
  129. package/dist/types/components/Chip/index.d.ts +1 -1
  130. package/dist/types/components/Divider/Divider.d.ts +3 -3
  131. package/dist/types/components/Divider/index.d.ts +1 -1
  132. package/dist/types/components/Icon/Icon.d.ts +2 -4
  133. package/dist/types/components/Icon/icon-cache.d.ts +2 -2
  134. package/dist/types/components/Loader/Loader.d.ts +1 -1
  135. package/dist/types/components/Menu/Menu.d.ts +1 -1
  136. package/dist/types/components/Menu/menu-types.d.ts +1 -1
  137. package/dist/types/components/PanelNav/PanelNav.d.ts +2 -2
  138. package/dist/types/components/PanelNav/index.d.ts +1 -1
  139. package/dist/types/components/PanelNav/panel-nav-types.d.ts +1 -2
  140. package/dist/types/components/PanelNav/panel-nav-utils.d.ts +2 -2
  141. package/dist/types/components/PanelSubNav/PanelSubNav.d.ts +27 -0
  142. package/dist/types/components/PanelSubNav/panel-sub-nav-types.d.ts +10 -0
  143. package/dist/types/components/PanelTools/PanelTools.d.ts +1 -1
  144. package/dist/types/components/ShellGradientSwatch/shell-gradient-swatch-types.d.ts +2 -2
  145. package/dist/types/components/Skeleton/Skeleton.d.ts +3 -3
  146. package/dist/types/components/Skeleton/index.d.ts +1 -1
  147. package/dist/types/components/TabGroup/TabGroup.d.ts +3 -4
  148. package/dist/types/components/TabGroup/tab-item-utils.d.ts +14 -0
  149. package/dist/types/components/Tag/Tag.d.ts +14 -0
  150. package/dist/types/components/Text/Text.d.ts +1 -1
  151. package/dist/types/components/Text/text-types.d.ts +1 -1
  152. package/dist/types/components.d.ts +242 -214
  153. package/package.json +7 -7
  154. package/dist/angular/ds-tab-group-nav.d.ts +0 -20
  155. package/dist/components/ds-tab-group-nav.js +0 -2
  156. package/dist/components/ds-tab-group-nav.js.map +0 -1
  157. package/dist/components/p-9Qu1ls2y.js.map +0 -1
  158. package/dist/components/p-B5kfuVQz.js +0 -2
  159. package/dist/components/p-B5kfuVQz.js.map +0 -1
  160. package/dist/components/p-BeIuJQO9.js +0 -2
  161. package/dist/components/p-BeIuJQO9.js.map +0 -1
  162. package/dist/components/p-CWd8L7Fk.js.map +0 -1
  163. package/dist/components/p-CxOQaZ4f.js +0 -2
  164. package/dist/components/p-CxOQaZ4f.js.map +0 -1
  165. package/dist/components/p-D5wc8lKR.js +0 -2
  166. package/dist/components/p-D5wc8lKR.js.map +0 -1
  167. package/dist/components/p-DPxfMUfH.js +0 -2
  168. package/dist/components/p-DPxfMUfH.js.map +0 -1
  169. package/dist/components/p-DhgDNluD.js +0 -2
  170. package/dist/components/p-cgo-rgl4.js +0 -2
  171. package/dist/components/p-cgo-rgl4.js.map +0 -1
  172. package/dist/react/ds-tab-group-nav.d.ts +0 -13
  173. package/dist/react/ds-tab-group-nav.js +0 -15
  174. package/dist/types/components/BarNav/bar-nav-dom-utils.d.ts +0 -11
  175. package/dist/types/components/TabGroupNav/TabGroupNav.d.ts +0 -46
  176. /package/dist/components/{p-BmiNX9Mc.js.map → p-3bRWSqaN.js.map} +0 -0
  177. /package/dist/components/{p-bl7d1jB2.js.map → p-CPD_mML6.js.map} +0 -0
  178. /package/dist/components/{p-RBe9XqjU.js.map → p-clDpFcdU.js.map} +0 -0
  179. /package/dist/lib/{nav → shell}/badge-gradient-ring.d.ts +0 -0
  180. /package/dist/lib/{nav → shell}/chrome-transition.d.ts +0 -0
  181. /package/dist/lib/{nav → shell}/index.d.ts +0 -0
  182. /package/dist/lib/{nav → shell}/nav-chrome.d.ts +0 -0
  183. /package/dist/lib/{nav → shell}/shell-chrome-metrics.d.ts +0 -0
  184. /package/dist/lib/{nav → shell}/shell-gradient-presets.d.ts +0 -0
  185. /package/dist/lib/{nav → shell}/shell-gradient.d.ts +0 -0
  186. /package/dist/lib/{nav → shell}/shell-view-transition.d.ts +0 -0
  187. /package/dist/types/{nav → shell}/badge-gradient-ring.d.ts +0 -0
  188. /package/dist/types/{nav → shell}/chrome-transition.d.ts +0 -0
  189. /package/dist/types/{nav → shell}/index.d.ts +0 -0
  190. /package/dist/types/{nav → shell}/nav-chrome.d.ts +0 -0
  191. /package/dist/types/{nav → shell}/shell-chrome-metrics.d.ts +0 -0
  192. /package/dist/types/{nav → shell}/shell-gradient-presets.d.ts +0 -0
  193. /package/dist/types/{nav → shell}/shell-gradient.d.ts +0 -0
  194. /package/dist/types/{nav → shell}/shell-shortcuts.d.ts +0 -0
  195. /package/dist/types/{nav → shell}/shell-view-transition.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "6.0.1",
3
+ "version": "8.0.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",
@@ -49,9 +49,9 @@
49
49
  "types": "./dist/types/components.d.ts",
50
50
  "import": "./dist/components/index.js"
51
51
  },
52
- "./nav": {
53
- "types": "./dist/lib/nav/index.d.ts",
54
- "import": "./dist/lib/nav/index.js"
52
+ "./shell": {
53
+ "types": "./dist/lib/shell/index.d.ts",
54
+ "import": "./dist/lib/shell/index.js"
55
55
  },
56
56
  "./utils": {
57
57
  "types": "./dist/lib/utils/index.d.ts",
@@ -70,7 +70,7 @@
70
70
  "pretest": "node scripts/generate-icon-catalog.mjs",
71
71
  "build": "stencil build && node scripts/patch-index-types.mjs && node scripts/verify-icons-externalized.mjs && node scripts/write-build-stamp.mjs && node scripts/build-lib-exports.mjs && node scripts/build-framework-exports.mjs && node scripts/build-registry.mjs && node scripts/build-agent-manifest.mjs",
72
72
  "verify:pack": "node scripts/verify-npm-pack.mjs && node scripts/verify-package-imports.mjs",
73
- "test": "node --import tsx/esm --test tests/component-inventory.test.ts tests/agent-contract.test.ts tests/panel-nav-utils.test.ts tests/panel-tools.test.ts tests/text.test.ts tests/eslint-plugin-local.test.ts tests/stylelint-plugin-local.test.ts tests/shell-shortcuts.test.ts tests/shell-gradient-presets.test.ts tests/shell-view-transition.test.ts tests/shell-gradient.test.ts tests/shell-chrome-metrics.test.ts tests/shell-chrome-layer.test.ts tests/chrome-transition.test.ts tests/bar-nav-overflow-hysteresis.test.ts tests/badge-gradient-ring.test.ts tests/scroll-edge-fade.test.ts tests/resolve-css-length-px.test.ts tests/resolve-css-time-ms.test.ts tests/overlay-positioning.test.ts tests/menu-position.test.ts tests/tooltip-position.test.ts tests/menu-placement.test.ts tests/bar-nav-utils.test.ts tests/bar-nav-tabs-menu-utils.test.ts tests/bar-nav-dom-utils.test.ts tests/icon-catalog.test.ts tests/icon-cache.test.ts tests/icon-svg.test.ts",
73
+ "test": "node --import tsx/esm --test tests/component-inventory.test.ts tests/agent-contract.test.ts tests/panel-nav-utils.test.ts tests/panel-tools.test.ts tests/text.test.ts tests/eslint-plugin-local.test.ts tests/stylelint-plugin-local.test.ts tests/shell-shortcuts.test.ts tests/shell-gradient-presets.test.ts tests/shell-view-transition.test.ts tests/shell-gradient.test.ts tests/shell-chrome-metrics.test.ts tests/shell-chrome-layer.test.ts tests/chrome-transition.test.ts tests/bar-nav-overflow-hysteresis.test.ts tests/badge-gradient-ring.test.ts tests/scroll-edge-fade.test.ts tests/resolve-css-length-px.test.ts tests/resolve-css-time-ms.test.ts tests/overlay-positioning.test.ts tests/menu-position.test.ts tests/tooltip-position.test.ts tests/menu-placement.test.ts tests/bar-nav-utils.test.ts tests/bar-nav-tabs-menu-utils.test.ts tests/icon-catalog.test.ts tests/icon-cache.test.ts tests/icon-svg.test.ts",
74
74
  "test:e2e": "npm run build && playwright test",
75
75
  "test:e2e:install": "playwright install chromium firefox webkit",
76
76
  "build:docs": "stencil build --docs",
@@ -97,7 +97,7 @@
97
97
  "@angular/core": ">=19 <23",
98
98
  "@angular/forms": ">=19 <23",
99
99
  "@ds-mo/icons": "^6.2.0",
100
- "@ds-mo/tokens": "^3.0.0",
100
+ "@ds-mo/tokens": "^3.1.0",
101
101
  "react": "^18 || ^19",
102
102
  "react-dom": "^18 || ^19"
103
103
  },
@@ -122,7 +122,7 @@
122
122
  "@angular/forms": "^22.0.4",
123
123
  "@axe-core/playwright": "^4.12.1",
124
124
  "@ds-mo/icons": "^6.2.0",
125
- "@ds-mo/tokens": "^3.0.0",
125
+ "@ds-mo/tokens": "^3.1.0",
126
126
  "@eslint/js": "^10.0.1",
127
127
  "@figma/code-connect": "^1.4.9",
128
128
  "@modelcontextprotocol/sdk": "^1.29.0",
@@ -1,20 +0,0 @@
1
- import { ChangeDetectorRef, ElementRef, NgZone, EventEmitter } from '@angular/core';
2
- import type { Components } from '@ds-mo/ui/components';
3
- import type { DsTabGroupNavCustomEvent } from '@ds-mo/ui/components';
4
- import * as i0 from "@angular/core";
5
- export declare class DsTabGroupNav {
6
- protected z: NgZone;
7
- protected el: HTMLDsTabGroupNavElement;
8
- dsChange: EventEmitter<DsTabGroupNavCustomEvent<string>>;
9
- dsRovingExit: EventEmitter<DsTabGroupNavCustomEvent<"start" | "end">>;
10
- constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
11
- static ɵfac: i0.ɵɵFactoryDeclaration<DsTabGroupNav, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<DsTabGroupNav, "ds-tab-group-nav", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "background": { "alias": "background"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "rovingEnabled": { "alias": "rovingEnabled"; "required": false; }; "selectionFollowsFocus": { "alias": "selectionFollowsFocus"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "dsChange": "dsChange"; "dsRovingExit": "dsRovingExit"; }, never, ["*"], true, never>;
13
- }
14
- export declare interface DsTabGroupNav extends Components.DsTabGroupNav {
15
- dsChange: EventEmitter<DsTabGroupNavCustomEvent<string>>;
16
- /**
17
- * Fired when arrow navigation reaches the first/last tab in manual selection mode.
18
- */
19
- dsRovingExit: EventEmitter<DsTabGroupNavCustomEvent<'start' | 'end'>>;
20
- }
@@ -1,2 +0,0 @@
1
- import{T as o,d as s}from"./p-CxOQaZ4f.js";const t=o;const a=s;export{t as DsTabGroupNav,a as defineCustomElement};
2
- //# sourceMappingURL=ds-tab-group-nav.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["CACHE_KEY","Symbol","for","iconCacheKey","name","flag","iconCache","g","globalThis","Map","flagIconLoaders","FlagAustria","import","then","m","FlagBelgium","FlagBulgaria","FlagCanada","FlagCroatia","FlagCyprus","FlagCzechRepublic","FlagDenmark","FlagEU","FlagEstonia","FlagFinland","FlagFrance","FlagGermany","FlagGreece","FlagHungary","FlagIreland","FlagItaly","FlagLatvia","FlagLithuania","FlagLuxembourg","FlagMalta","FlagMexico","FlagNetherlands","FlagPoland","FlagPortugal","FlagRomania","FlagSlovakia","FlagSlovenia","FlagSpain","FlagSweden","FlagUnitedKingdom","FlagUnitedStates","systemIconLoaders","AI","AIChip","AINew","AISparkle","AUX","AUXFilled","AndroidFilled","ArrowDown","ArrowLeft","ArrowPath","ArrowRight","ArrowUp","ArrowsDiagonal","ArrowsDiff","ArrowsDiffDisabled","ArrowsVertical","AtSign","Avatar","BackslashBrackets","BatteryCharging","BatteryEmpty","BatteryFull","BatteryHalf","BatteryLow","Beaker","Bell","BellCircle","BellExclamation","BellFilled","BellRinging","BellWifi","BlackWhite","BlankUI","Bluetooth","Bolt","BoltFilled","Bookmark","Box","Braces","Bug","BuildingFacility","BuildingHome","BuildingOffice","BuildingPublic","BuildingShop","Bulb","Calculator","Calendar","CalendarClock","CameraA","CameraB","Card","CardPerson","Cart","Chart","Check","CheckCircle","CheckCircleFilled","CheckDouble","ChevronDown","ChevronLeft","ChevronLeftDouble","ChevronRight","ChevronRightDouble","ChevronUp","ChevronUpDown","Circle","CircleArrow","CircleArrowsDiff","CircleArrowsDiffDisabled","CircleConcentricFilled","CircleConcentricThree","CircleConcentricTwo","CircleExclamation","CircleExclamationFilled","CircleFastForward","CircleFilled","CircleGrid","CirclePlay","CircleQuestion","CircleSlash","Clipboard","ClipboardCheck","Clock","ClockDefer","ClockFilled","ClockSixteenHour","Cloud","CloudEllipses","CloudLightning","CloudRain","CloudRainSun","CloudSun","CloudWind","Cluster","Coin","CoinStack","CoinStackGeneral","Compass","Copy","Crop","Cross","CrossCircle","CrossCircleFilled","Cube","Cup","CursorPointer","CursorPointerMinus","CursorPointerPlus","Dashboard","DeviceAIDashcamPlus","DeviceAssetTracker","DeviceDVR","DeviceDashcam","DeviceDashcamLiveStream","DeviceDoorSensor","DeviceMobile","DeviceMobileTwo","DeviceOmnicam","DeviceSensor","DeviceTablet","DeviceVehicleGateway","Devices","Document","DocumentArrow","DocumentChart","DocumentDollar","DocumentGear","DocumentInverted","DocumentPencil","DocumentPlus","DocumentQuestion","DocumentReceipt","DocumentStacked","Dot","DotFilled","DotPath","Download","Drag","Ellipses","Email","Engine","Enter","EntityAsset","EntityAssetFilled","EntityDriver","EntityDriverFilled","EntityTravelGroup","EntityTravelGroupFilled","EntityVehicle","EntityVehicleCharging","EntityVehicleChargingFilled","EntityVehicleFilled","EntityVehicleImmobilized","EntityVehicleImmobilizedFilled","ErrorTriangle","ErrorTriangleFilled","ErrorTriangleSimpleFilled","Export","ExternalLink","Eye","EyeDisabled","EyeLock","FastForward","FastForwardSkip","Filters","FitToScreen","Flag","FlagFilled","FloppyDisk","Folder","FolderFilled","FuelPump","FullScreen","FullScreenExit","Gauge","GaugeTemperature","Gear","GearCheck","Geofence","GeofenceCircle","GeofenceDiamond","GeofenceSquare","GlobeNetwork","GlobeWorldMap","Graph","GraphArrow","GraphBars","GraphDecreasing","GraphIncreasing","GroupBy","Hamburger","HandOpen","Headset","History","HourGlass","Image","Import","ImportClock","Inbox","IosFilled","Jerrycan","KeyA","KeyB","KeyCmd","KeyShift","LED","Layers","Leaf","LeftCollapse","LeftCollapseB","LeftExpand","LeftExpandB","LeftTurnSignal","LetterB","LetterC","LetterI","License","LicensePlate","Lifebuoy","Link","List","Loads","LocationPin","LocationPinArrows","LocationPinDisabled","LocationPinDollar","LockClosed","LockClosedFilled","LockOpen","Logout","Logs","LogsMagnifyingGlass","MagnifyingGlass","MagnifyingGlassGraph","MagnifyingGlassZoomIn","MagnifyingGlassZoomOut","MapNavigation","MapPage","MapPin","MarkRead","Match","MessageBubble","MessageBubbleStack","Messaging","Mic","MicMute","Minimize","Monitor","Notification","NumberTen","OctagonSubtract","Odometer","OverviewAI","PanelCollapse","PanelExpand","Paperclip","PaperplaneSend","Paragraph","ParagraphCheck","ParagraphPencil","Pause","PauseFilled","Pencil","PencilSquiggle","Person","PersonAt","PersonConnect","PersonFrame","PersonGear","PersonGroup","PersonGroupArrows","PersonManager","PersonShield","PersonStar","Phone","PhoneDisconnect","PicmanFilled","Pin","PipBottomLeft","PipBottomRight","PipTopLeft","PipTopRight","Play","PlayFilled","Plug","Plus","PlusCircle","Preferences","Printer","PunchCard","Puzzle","PuzzleJoined","Redo","Refresh","Restore","RewardRibbon","Rewind","RewindSkip","RewindSkipFilled","RightCollapse","RightCollapseB","RightExpand","RightExpandB","RightTurnSignal","Rotate","Satellite","Scan","Scissor","Scope","Seatbelt","SeatbeltBuckle","Shapes","ShareCircles","ShareCirclesFilled","SharePaperplane","Shield","ShieldCheck","ShieldCheckmarkFilled","ShieldCircle","ShieldCircleFilled","ShieldCross","ShieldCrossFilled","ShieldFilled","ShieldLock","ShieldLockFilled","ShoppingBag","Snowflake","SpeakerPhone","SpeedometerArrow","SpeedometerLeft","SpeedometerRight","SpikeCirclePercentage","SpikeCirclePercentageFilled","Square","SquareArrowTopRight","SquareCheck","SquareCheckFilled","SquareDollar","SquareDollarFilled","SquareDottedMinus","SquareFilled","SquareGrid","SquarePencil","SquarePlus","SquareSubtract","SquareSubtractFilled","Star","StarFilled","Stopwatch","Street","Subtract","SubtractCircle","SubtractCircleFilled","Table","Tag","Target","TargetDollar","Text","ThemeDark","ThemeLight","ThumbsDown","ThumbsDownFilled","ThumbsUp","ThumbsUpFilled","TirePressure","Toggle","TrafficLight","Trash","Trophy","TurnSignal","TurnSignalFilled","Undo","Upgrade","Upload","VehicleTrailer","VehicleTruck","VehicleTruckMagnifyingGlass","Video","ViewMenu","Volume","VolumeFilled","VolumeMute","VolumeMuteFilled","WandSparkle","Waveform","Webhooks","Whistle","WifiHorizontal","WifiTower","WifiVertical","WifiVerticalFilled","WifiVerticalFilledDisabled","WorkflowA","WorkflowB","Wrench","ZoomBackOut","FORBIDDEN_ELEMENTS","Set","isValidIconSvgElement","el","has","localName","toLowerCase","attr","getAttributeNames","lower","startsWith","value","getAttribute","i","children","length","isValidIconSvgRoot","root","parseIconSvg","svg","DOMParser","doc","parseFromString","querySelector","documentElement","iconCss","Icon","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","size","loadToken","renderedSvg","resolveSvg","key","token","cached","get","undefined","loaders","loader","Object","prototype","hasOwnProperty","call","set","catch","componentWillLoad","updateSvg","container","replaceChildren","removeAttribute","setAttribute","style","display","flexShrink","width","height","onIconChange","componentDidRender","render","isCustomColor","color","cls","icon","h","Host","alignItems","justifyContent","class","role","label"],"sources":["src/wc/components/Icon/icon-cache.ts","src/wc/components/Icon/flag-icon-catalog.ts","src/wc/components/Icon/system-icon-catalog.ts","src/wc/components/Icon/icon-svg.ts","src/wc/components/Icon/Icon.css?tag=ds-icon&encapsulation=scoped","src/wc/components/Icon/Icon.tsx"],"sourcesContent":["/**\n * Shared SVG glyph cache for ds-icon.\n *\n * Keyed on a global symbol so every module instance (the compiled Stencil chunk\n * inside dist/components and any direct source import, e.g. via `@ds-mo/ui/utils`)\n * reads and writes the same cache. Without this, `registerIcons` called from an\n * app would fill a different Map than the one ds-icon resolves from.\n */\nconst CACHE_KEY = Symbol.for('ds-mo.icon-svg-cache');\n\ntype IconCacheMap = Map<string, string>;\n\ntype GlobalWithIconCache = { [CACHE_KEY]?: IconCacheMap };\n\nexport function iconCacheKey(name: string, flag: boolean): string {\n return flag ? `flag:${name}` : `system:${name}`;\n}\n\nexport function iconCache(): IconCacheMap {\n const g = globalThis as GlobalWithIconCache;\n return (g[CACHE_KEY] ??= new Map());\n}\n\n/**\n * Pre-register glyphs so ds-icon renders them synchronously — no lazy-chunk\n * fetch, no first-paint pop-in. Import the SVG strings from `@ds-mo/icons`\n * in the app (statically, so they ship in the app's own bundle):\n *\n * ```ts\n * import { Bell } from '@ds-mo/icons/svg/Bell';\n * import { US } from '@ds-mo/icons/svg/flags/US';\n * import { registerIcons } from '@ds-mo/ui/utils';\n *\n * registerIcons({ Bell });\n * registerIcons({ US }, { flag: true });\n * ```\n *\n * Icons that are not registered still work — they lazy-load on first render\n * and stay cached afterwards.\n */\nexport function registerIcons(icons: Record<string, string>, options?: { flag?: boolean }): void {\n const cache = iconCache();\n const flag = options?.flag === true;\n for (const [name, svg] of Object.entries(icons)) {\n cache.set(iconCacheKey(name, flag), svg);\n }\n}\n","/** Auto-generated by scripts/generate-icon-catalog.mjs — do not edit. */\n\nexport const flagIconLoaders: Record<string, () => Promise<string>> = {\n FlagAustria: () => import('@ds-mo/icons/svg/flags/FlagAustria').then(m => m.FlagAustria),\n FlagBelgium: () => import('@ds-mo/icons/svg/flags/FlagBelgium').then(m => m.FlagBelgium),\n FlagBulgaria: () => import('@ds-mo/icons/svg/flags/FlagBulgaria').then(m => m.FlagBulgaria),\n FlagCanada: () => import('@ds-mo/icons/svg/flags/FlagCanada').then(m => m.FlagCanada),\n FlagCroatia: () => import('@ds-mo/icons/svg/flags/FlagCroatia').then(m => m.FlagCroatia),\n FlagCyprus: () => import('@ds-mo/icons/svg/flags/FlagCyprus').then(m => m.FlagCyprus),\n FlagCzechRepublic: () => import('@ds-mo/icons/svg/flags/FlagCzechRepublic').then(m => m.FlagCzechRepublic),\n FlagDenmark: () => import('@ds-mo/icons/svg/flags/FlagDenmark').then(m => m.FlagDenmark),\n FlagEU: () => import('@ds-mo/icons/svg/flags/FlagEU').then(m => m.FlagEU),\n FlagEstonia: () => import('@ds-mo/icons/svg/flags/FlagEstonia').then(m => m.FlagEstonia),\n FlagFinland: () => import('@ds-mo/icons/svg/flags/FlagFinland').then(m => m.FlagFinland),\n FlagFrance: () => import('@ds-mo/icons/svg/flags/FlagFrance').then(m => m.FlagFrance),\n FlagGermany: () => import('@ds-mo/icons/svg/flags/FlagGermany').then(m => m.FlagGermany),\n FlagGreece: () => import('@ds-mo/icons/svg/flags/FlagGreece').then(m => m.FlagGreece),\n FlagHungary: () => import('@ds-mo/icons/svg/flags/FlagHungary').then(m => m.FlagHungary),\n FlagIreland: () => import('@ds-mo/icons/svg/flags/FlagIreland').then(m => m.FlagIreland),\n FlagItaly: () => import('@ds-mo/icons/svg/flags/FlagItaly').then(m => m.FlagItaly),\n FlagLatvia: () => import('@ds-mo/icons/svg/flags/FlagLatvia').then(m => m.FlagLatvia),\n FlagLithuania: () => import('@ds-mo/icons/svg/flags/FlagLithuania').then(m => m.FlagLithuania),\n FlagLuxembourg: () => import('@ds-mo/icons/svg/flags/FlagLuxembourg').then(m => m.FlagLuxembourg),\n FlagMalta: () => import('@ds-mo/icons/svg/flags/FlagMalta').then(m => m.FlagMalta),\n FlagMexico: () => import('@ds-mo/icons/svg/flags/FlagMexico').then(m => m.FlagMexico),\n FlagNetherlands: () => import('@ds-mo/icons/svg/flags/FlagNetherlands').then(m => m.FlagNetherlands),\n FlagPoland: () => import('@ds-mo/icons/svg/flags/FlagPoland').then(m => m.FlagPoland),\n FlagPortugal: () => import('@ds-mo/icons/svg/flags/FlagPortugal').then(m => m.FlagPortugal),\n FlagRomania: () => import('@ds-mo/icons/svg/flags/FlagRomania').then(m => m.FlagRomania),\n FlagSlovakia: () => import('@ds-mo/icons/svg/flags/FlagSlovakia').then(m => m.FlagSlovakia),\n FlagSlovenia: () => import('@ds-mo/icons/svg/flags/FlagSlovenia').then(m => m.FlagSlovenia),\n FlagSpain: () => import('@ds-mo/icons/svg/flags/FlagSpain').then(m => m.FlagSpain),\n FlagSweden: () => import('@ds-mo/icons/svg/flags/FlagSweden').then(m => m.FlagSweden),\n FlagUnitedKingdom: () => import('@ds-mo/icons/svg/flags/FlagUnitedKingdom').then(m => m.FlagUnitedKingdom),\n FlagUnitedStates: () => import('@ds-mo/icons/svg/flags/FlagUnitedStates').then(m => m.FlagUnitedStates),\n};\n","/** Auto-generated by scripts/generate-icon-catalog.mjs — do not edit. */\n\nexport const systemIconLoaders: Record<string, () => Promise<string>> = {\n AI: () => import('@ds-mo/icons/svg/AI').then(m => m.AI),\n AIChip: () => import('@ds-mo/icons/svg/AIChip').then(m => m.AIChip),\n AINew: () => import('@ds-mo/icons/svg/AINew').then(m => m.AINew),\n AISparkle: () => import('@ds-mo/icons/svg/AISparkle').then(m => m.AISparkle),\n AUX: () => import('@ds-mo/icons/svg/AUX').then(m => m.AUX),\n AUXFilled: () => import('@ds-mo/icons/svg/AUXFilled').then(m => m.AUXFilled),\n AndroidFilled: () => import('@ds-mo/icons/svg/AndroidFilled').then(m => m.AndroidFilled),\n ArrowDown: () => import('@ds-mo/icons/svg/ArrowDown').then(m => m.ArrowDown),\n ArrowLeft: () => import('@ds-mo/icons/svg/ArrowLeft').then(m => m.ArrowLeft),\n ArrowPath: () => import('@ds-mo/icons/svg/ArrowPath').then(m => m.ArrowPath),\n ArrowRight: () => import('@ds-mo/icons/svg/ArrowRight').then(m => m.ArrowRight),\n ArrowUp: () => import('@ds-mo/icons/svg/ArrowUp').then(m => m.ArrowUp),\n ArrowsDiagonal: () => import('@ds-mo/icons/svg/ArrowsDiagonal').then(m => m.ArrowsDiagonal),\n ArrowsDiff: () => import('@ds-mo/icons/svg/ArrowsDiff').then(m => m.ArrowsDiff),\n ArrowsDiffDisabled: () => import('@ds-mo/icons/svg/ArrowsDiffDisabled').then(m => m.ArrowsDiffDisabled),\n ArrowsVertical: () => import('@ds-mo/icons/svg/ArrowsVertical').then(m => m.ArrowsVertical),\n AtSign: () => import('@ds-mo/icons/svg/AtSign').then(m => m.AtSign),\n Avatar: () => import('@ds-mo/icons/svg/Avatar').then(m => m.Avatar),\n BackslashBrackets: () => import('@ds-mo/icons/svg/BackslashBrackets').then(m => m.BackslashBrackets),\n BatteryCharging: () => import('@ds-mo/icons/svg/BatteryCharging').then(m => m.BatteryCharging),\n BatteryEmpty: () => import('@ds-mo/icons/svg/BatteryEmpty').then(m => m.BatteryEmpty),\n BatteryFull: () => import('@ds-mo/icons/svg/BatteryFull').then(m => m.BatteryFull),\n BatteryHalf: () => import('@ds-mo/icons/svg/BatteryHalf').then(m => m.BatteryHalf),\n BatteryLow: () => import('@ds-mo/icons/svg/BatteryLow').then(m => m.BatteryLow),\n Beaker: () => import('@ds-mo/icons/svg/Beaker').then(m => m.Beaker),\n Bell: () => import('@ds-mo/icons/svg/Bell').then(m => m.Bell),\n BellCircle: () => import('@ds-mo/icons/svg/BellCircle').then(m => m.BellCircle),\n BellExclamation: () => import('@ds-mo/icons/svg/BellExclamation').then(m => m.BellExclamation),\n BellFilled: () => import('@ds-mo/icons/svg/BellFilled').then(m => m.BellFilled),\n BellRinging: () => import('@ds-mo/icons/svg/BellRinging').then(m => m.BellRinging),\n BellWifi: () => import('@ds-mo/icons/svg/BellWifi').then(m => m.BellWifi),\n BlackWhite: () => import('@ds-mo/icons/svg/BlackWhite').then(m => m.BlackWhite),\n BlankUI: () => import('@ds-mo/icons/svg/BlankUI').then(m => m.BlankUI),\n Bluetooth: () => import('@ds-mo/icons/svg/Bluetooth').then(m => m.Bluetooth),\n Bolt: () => import('@ds-mo/icons/svg/Bolt').then(m => m.Bolt),\n BoltFilled: () => import('@ds-mo/icons/svg/BoltFilled').then(m => m.BoltFilled),\n Bookmark: () => import('@ds-mo/icons/svg/Bookmark').then(m => m.Bookmark),\n Box: () => import('@ds-mo/icons/svg/Box').then(m => m.Box),\n Braces: () => import('@ds-mo/icons/svg/Braces').then(m => m.Braces),\n Bug: () => import('@ds-mo/icons/svg/Bug').then(m => m.Bug),\n BuildingFacility: () => import('@ds-mo/icons/svg/BuildingFacility').then(m => m.BuildingFacility),\n BuildingHome: () => import('@ds-mo/icons/svg/BuildingHome').then(m => m.BuildingHome),\n BuildingOffice: () => import('@ds-mo/icons/svg/BuildingOffice').then(m => m.BuildingOffice),\n BuildingPublic: () => import('@ds-mo/icons/svg/BuildingPublic').then(m => m.BuildingPublic),\n BuildingShop: () => import('@ds-mo/icons/svg/BuildingShop').then(m => m.BuildingShop),\n Bulb: () => import('@ds-mo/icons/svg/Bulb').then(m => m.Bulb),\n Calculator: () => import('@ds-mo/icons/svg/Calculator').then(m => m.Calculator),\n Calendar: () => import('@ds-mo/icons/svg/Calendar').then(m => m.Calendar),\n CalendarClock: () => import('@ds-mo/icons/svg/CalendarClock').then(m => m.CalendarClock),\n CameraA: () => import('@ds-mo/icons/svg/CameraA').then(m => m.CameraA),\n CameraB: () => import('@ds-mo/icons/svg/CameraB').then(m => m.CameraB),\n Card: () => import('@ds-mo/icons/svg/Card').then(m => m.Card),\n CardPerson: () => import('@ds-mo/icons/svg/CardPerson').then(m => m.CardPerson),\n Cart: () => import('@ds-mo/icons/svg/Cart').then(m => m.Cart),\n Chart: () => import('@ds-mo/icons/svg/Chart').then(m => m.Chart),\n Check: () => import('@ds-mo/icons/svg/Check').then(m => m.Check),\n CheckCircle: () => import('@ds-mo/icons/svg/CheckCircle').then(m => m.CheckCircle),\n CheckCircleFilled: () => import('@ds-mo/icons/svg/CheckCircleFilled').then(m => m.CheckCircleFilled),\n CheckDouble: () => import('@ds-mo/icons/svg/CheckDouble').then(m => m.CheckDouble),\n ChevronDown: () => import('@ds-mo/icons/svg/ChevronDown').then(m => m.ChevronDown),\n ChevronLeft: () => import('@ds-mo/icons/svg/ChevronLeft').then(m => m.ChevronLeft),\n ChevronLeftDouble: () => import('@ds-mo/icons/svg/ChevronLeftDouble').then(m => m.ChevronLeftDouble),\n ChevronRight: () => import('@ds-mo/icons/svg/ChevronRight').then(m => m.ChevronRight),\n ChevronRightDouble: () => import('@ds-mo/icons/svg/ChevronRightDouble').then(m => m.ChevronRightDouble),\n ChevronUp: () => import('@ds-mo/icons/svg/ChevronUp').then(m => m.ChevronUp),\n ChevronUpDown: () => import('@ds-mo/icons/svg/ChevronUpDown').then(m => m.ChevronUpDown),\n Circle: () => import('@ds-mo/icons/svg/Circle').then(m => m.Circle),\n CircleArrow: () => import('@ds-mo/icons/svg/CircleArrow').then(m => m.CircleArrow),\n CircleArrowsDiff: () => import('@ds-mo/icons/svg/CircleArrowsDiff').then(m => m.CircleArrowsDiff),\n CircleArrowsDiffDisabled: () => import('@ds-mo/icons/svg/CircleArrowsDiffDisabled').then(m => m.CircleArrowsDiffDisabled),\n CircleConcentricFilled: () => import('@ds-mo/icons/svg/CircleConcentricFilled').then(m => m.CircleConcentricFilled),\n CircleConcentricThree: () => import('@ds-mo/icons/svg/CircleConcentricThree').then(m => m.CircleConcentricThree),\n CircleConcentricTwo: () => import('@ds-mo/icons/svg/CircleConcentricTwo').then(m => m.CircleConcentricTwo),\n CircleExclamation: () => import('@ds-mo/icons/svg/CircleExclamation').then(m => m.CircleExclamation),\n CircleExclamationFilled: () => import('@ds-mo/icons/svg/CircleExclamationFilled').then(m => m.CircleExclamationFilled),\n CircleFastForward: () => import('@ds-mo/icons/svg/CircleFastForward').then(m => m.CircleFastForward),\n CircleFilled: () => import('@ds-mo/icons/svg/CircleFilled').then(m => m.CircleFilled),\n CircleGrid: () => import('@ds-mo/icons/svg/CircleGrid').then(m => m.CircleGrid),\n CirclePlay: () => import('@ds-mo/icons/svg/CirclePlay').then(m => m.CirclePlay),\n CircleQuestion: () => import('@ds-mo/icons/svg/CircleQuestion').then(m => m.CircleQuestion),\n CircleSlash: () => import('@ds-mo/icons/svg/CircleSlash').then(m => m.CircleSlash),\n Clipboard: () => import('@ds-mo/icons/svg/Clipboard').then(m => m.Clipboard),\n ClipboardCheck: () => import('@ds-mo/icons/svg/ClipboardCheck').then(m => m.ClipboardCheck),\n Clock: () => import('@ds-mo/icons/svg/Clock').then(m => m.Clock),\n ClockDefer: () => import('@ds-mo/icons/svg/ClockDefer').then(m => m.ClockDefer),\n ClockFilled: () => import('@ds-mo/icons/svg/ClockFilled').then(m => m.ClockFilled),\n ClockSixteenHour: () => import('@ds-mo/icons/svg/ClockSixteenHour').then(m => m.ClockSixteenHour),\n Cloud: () => import('@ds-mo/icons/svg/Cloud').then(m => m.Cloud),\n CloudEllipses: () => import('@ds-mo/icons/svg/CloudEllipses').then(m => m.CloudEllipses),\n CloudLightning: () => import('@ds-mo/icons/svg/CloudLightning').then(m => m.CloudLightning),\n CloudRain: () => import('@ds-mo/icons/svg/CloudRain').then(m => m.CloudRain),\n CloudRainSun: () => import('@ds-mo/icons/svg/CloudRainSun').then(m => m.CloudRainSun),\n CloudSun: () => import('@ds-mo/icons/svg/CloudSun').then(m => m.CloudSun),\n CloudWind: () => import('@ds-mo/icons/svg/CloudWind').then(m => m.CloudWind),\n Cluster: () => import('@ds-mo/icons/svg/Cluster').then(m => m.Cluster),\n Coin: () => import('@ds-mo/icons/svg/Coin').then(m => m.Coin),\n CoinStack: () => import('@ds-mo/icons/svg/CoinStack').then(m => m.CoinStack),\n CoinStackGeneral: () => import('@ds-mo/icons/svg/CoinStackGeneral').then(m => m.CoinStackGeneral),\n Compass: () => import('@ds-mo/icons/svg/Compass').then(m => m.Compass),\n Copy: () => import('@ds-mo/icons/svg/Copy').then(m => m.Copy),\n Crop: () => import('@ds-mo/icons/svg/Crop').then(m => m.Crop),\n Cross: () => import('@ds-mo/icons/svg/Cross').then(m => m.Cross),\n CrossCircle: () => import('@ds-mo/icons/svg/CrossCircle').then(m => m.CrossCircle),\n CrossCircleFilled: () => import('@ds-mo/icons/svg/CrossCircleFilled').then(m => m.CrossCircleFilled),\n Cube: () => import('@ds-mo/icons/svg/Cube').then(m => m.Cube),\n Cup: () => import('@ds-mo/icons/svg/Cup').then(m => m.Cup),\n CursorPointer: () => import('@ds-mo/icons/svg/CursorPointer').then(m => m.CursorPointer),\n CursorPointerMinus: () => import('@ds-mo/icons/svg/CursorPointerMinus').then(m => m.CursorPointerMinus),\n CursorPointerPlus: () => import('@ds-mo/icons/svg/CursorPointerPlus').then(m => m.CursorPointerPlus),\n Dashboard: () => import('@ds-mo/icons/svg/Dashboard').then(m => m.Dashboard),\n DeviceAIDashcamPlus: () => import('@ds-mo/icons/svg/DeviceAIDashcamPlus').then(m => m.DeviceAIDashcamPlus),\n DeviceAssetTracker: () => import('@ds-mo/icons/svg/DeviceAssetTracker').then(m => m.DeviceAssetTracker),\n DeviceDVR: () => import('@ds-mo/icons/svg/DeviceDVR').then(m => m.DeviceDVR),\n DeviceDashcam: () => import('@ds-mo/icons/svg/DeviceDashcam').then(m => m.DeviceDashcam),\n DeviceDashcamLiveStream: () => import('@ds-mo/icons/svg/DeviceDashcamLiveStream').then(m => m.DeviceDashcamLiveStream),\n DeviceDoorSensor: () => import('@ds-mo/icons/svg/DeviceDoorSensor').then(m => m.DeviceDoorSensor),\n DeviceMobile: () => import('@ds-mo/icons/svg/DeviceMobile').then(m => m.DeviceMobile),\n DeviceMobileTwo: () => import('@ds-mo/icons/svg/DeviceMobileTwo').then(m => m.DeviceMobileTwo),\n DeviceOmnicam: () => import('@ds-mo/icons/svg/DeviceOmnicam').then(m => m.DeviceOmnicam),\n DeviceSensor: () => import('@ds-mo/icons/svg/DeviceSensor').then(m => m.DeviceSensor),\n DeviceTablet: () => import('@ds-mo/icons/svg/DeviceTablet').then(m => m.DeviceTablet),\n DeviceVehicleGateway: () => import('@ds-mo/icons/svg/DeviceVehicleGateway').then(m => m.DeviceVehicleGateway),\n Devices: () => import('@ds-mo/icons/svg/Devices').then(m => m.Devices),\n Document: () => import('@ds-mo/icons/svg/Document').then(m => m.Document),\n DocumentArrow: () => import('@ds-mo/icons/svg/DocumentArrow').then(m => m.DocumentArrow),\n DocumentChart: () => import('@ds-mo/icons/svg/DocumentChart').then(m => m.DocumentChart),\n DocumentDollar: () => import('@ds-mo/icons/svg/DocumentDollar').then(m => m.DocumentDollar),\n DocumentGear: () => import('@ds-mo/icons/svg/DocumentGear').then(m => m.DocumentGear),\n DocumentInverted: () => import('@ds-mo/icons/svg/DocumentInverted').then(m => m.DocumentInverted),\n DocumentPencil: () => import('@ds-mo/icons/svg/DocumentPencil').then(m => m.DocumentPencil),\n DocumentPlus: () => import('@ds-mo/icons/svg/DocumentPlus').then(m => m.DocumentPlus),\n DocumentQuestion: () => import('@ds-mo/icons/svg/DocumentQuestion').then(m => m.DocumentQuestion),\n DocumentReceipt: () => import('@ds-mo/icons/svg/DocumentReceipt').then(m => m.DocumentReceipt),\n DocumentStacked: () => import('@ds-mo/icons/svg/DocumentStacked').then(m => m.DocumentStacked),\n Dot: () => import('@ds-mo/icons/svg/Dot').then(m => m.Dot),\n DotFilled: () => import('@ds-mo/icons/svg/DotFilled').then(m => m.DotFilled),\n DotPath: () => import('@ds-mo/icons/svg/DotPath').then(m => m.DotPath),\n Download: () => import('@ds-mo/icons/svg/Download').then(m => m.Download),\n Drag: () => import('@ds-mo/icons/svg/Drag').then(m => m.Drag),\n Ellipses: () => import('@ds-mo/icons/svg/Ellipses').then(m => m.Ellipses),\n Email: () => import('@ds-mo/icons/svg/Email').then(m => m.Email),\n Engine: () => import('@ds-mo/icons/svg/Engine').then(m => m.Engine),\n Enter: () => import('@ds-mo/icons/svg/Enter').then(m => m.Enter),\n EntityAsset: () => import('@ds-mo/icons/svg/EntityAsset').then(m => m.EntityAsset),\n EntityAssetFilled: () => import('@ds-mo/icons/svg/EntityAssetFilled').then(m => m.EntityAssetFilled),\n EntityDriver: () => import('@ds-mo/icons/svg/EntityDriver').then(m => m.EntityDriver),\n EntityDriverFilled: () => import('@ds-mo/icons/svg/EntityDriverFilled').then(m => m.EntityDriverFilled),\n EntityTravelGroup: () => import('@ds-mo/icons/svg/EntityTravelGroup').then(m => m.EntityTravelGroup),\n EntityTravelGroupFilled: () => import('@ds-mo/icons/svg/EntityTravelGroupFilled').then(m => m.EntityTravelGroupFilled),\n EntityVehicle: () => import('@ds-mo/icons/svg/EntityVehicle').then(m => m.EntityVehicle),\n EntityVehicleCharging: () => import('@ds-mo/icons/svg/EntityVehicleCharging').then(m => m.EntityVehicleCharging),\n EntityVehicleChargingFilled: () => import('@ds-mo/icons/svg/EntityVehicleChargingFilled').then(m => m.EntityVehicleChargingFilled),\n EntityVehicleFilled: () => import('@ds-mo/icons/svg/EntityVehicleFilled').then(m => m.EntityVehicleFilled),\n EntityVehicleImmobilized: () => import('@ds-mo/icons/svg/EntityVehicleImmobilized').then(m => m.EntityVehicleImmobilized),\n EntityVehicleImmobilizedFilled: () => import('@ds-mo/icons/svg/EntityVehicleImmobilizedFilled').then(m => m.EntityVehicleImmobilizedFilled),\n ErrorTriangle: () => import('@ds-mo/icons/svg/ErrorTriangle').then(m => m.ErrorTriangle),\n ErrorTriangleFilled: () => import('@ds-mo/icons/svg/ErrorTriangleFilled').then(m => m.ErrorTriangleFilled),\n ErrorTriangleSimpleFilled: () => import('@ds-mo/icons/svg/ErrorTriangleSimpleFilled').then(m => m.ErrorTriangleSimpleFilled),\n Export: () => import('@ds-mo/icons/svg/Export').then(m => m.Export),\n ExternalLink: () => import('@ds-mo/icons/svg/ExternalLink').then(m => m.ExternalLink),\n Eye: () => import('@ds-mo/icons/svg/Eye').then(m => m.Eye),\n EyeDisabled: () => import('@ds-mo/icons/svg/EyeDisabled').then(m => m.EyeDisabled),\n EyeLock: () => import('@ds-mo/icons/svg/EyeLock').then(m => m.EyeLock),\n FastForward: () => import('@ds-mo/icons/svg/FastForward').then(m => m.FastForward),\n FastForwardSkip: () => import('@ds-mo/icons/svg/FastForwardSkip').then(m => m.FastForwardSkip),\n Filters: () => import('@ds-mo/icons/svg/Filters').then(m => m.Filters),\n FitToScreen: () => import('@ds-mo/icons/svg/FitToScreen').then(m => m.FitToScreen),\n Flag: () => import('@ds-mo/icons/svg/Flag').then(m => m.Flag),\n FlagFilled: () => import('@ds-mo/icons/svg/FlagFilled').then(m => m.FlagFilled),\n FloppyDisk: () => import('@ds-mo/icons/svg/FloppyDisk').then(m => m.FloppyDisk),\n Folder: () => import('@ds-mo/icons/svg/Folder').then(m => m.Folder),\n FolderFilled: () => import('@ds-mo/icons/svg/FolderFilled').then(m => m.FolderFilled),\n FuelPump: () => import('@ds-mo/icons/svg/FuelPump').then(m => m.FuelPump),\n FullScreen: () => import('@ds-mo/icons/svg/FullScreen').then(m => m.FullScreen),\n FullScreenExit: () => import('@ds-mo/icons/svg/FullScreenExit').then(m => m.FullScreenExit),\n Gauge: () => import('@ds-mo/icons/svg/Gauge').then(m => m.Gauge),\n GaugeTemperature: () => import('@ds-mo/icons/svg/GaugeTemperature').then(m => m.GaugeTemperature),\n Gear: () => import('@ds-mo/icons/svg/Gear').then(m => m.Gear),\n GearCheck: () => import('@ds-mo/icons/svg/GearCheck').then(m => m.GearCheck),\n Geofence: () => import('@ds-mo/icons/svg/Geofence').then(m => m.Geofence),\n GeofenceCircle: () => import('@ds-mo/icons/svg/GeofenceCircle').then(m => m.GeofenceCircle),\n GeofenceDiamond: () => import('@ds-mo/icons/svg/GeofenceDiamond').then(m => m.GeofenceDiamond),\n GeofenceSquare: () => import('@ds-mo/icons/svg/GeofenceSquare').then(m => m.GeofenceSquare),\n GlobeNetwork: () => import('@ds-mo/icons/svg/GlobeNetwork').then(m => m.GlobeNetwork),\n GlobeWorldMap: () => import('@ds-mo/icons/svg/GlobeWorldMap').then(m => m.GlobeWorldMap),\n Graph: () => import('@ds-mo/icons/svg/Graph').then(m => m.Graph),\n GraphArrow: () => import('@ds-mo/icons/svg/GraphArrow').then(m => m.GraphArrow),\n GraphBars: () => import('@ds-mo/icons/svg/GraphBars').then(m => m.GraphBars),\n GraphDecreasing: () => import('@ds-mo/icons/svg/GraphDecreasing').then(m => m.GraphDecreasing),\n GraphIncreasing: () => import('@ds-mo/icons/svg/GraphIncreasing').then(m => m.GraphIncreasing),\n GroupBy: () => import('@ds-mo/icons/svg/GroupBy').then(m => m.GroupBy),\n Hamburger: () => import('@ds-mo/icons/svg/Hamburger').then(m => m.Hamburger),\n HandOpen: () => import('@ds-mo/icons/svg/HandOpen').then(m => m.HandOpen),\n Headset: () => import('@ds-mo/icons/svg/Headset').then(m => m.Headset),\n History: () => import('@ds-mo/icons/svg/History').then(m => m.History),\n HourGlass: () => import('@ds-mo/icons/svg/HourGlass').then(m => m.HourGlass),\n Image: () => import('@ds-mo/icons/svg/Image').then(m => m.Image),\n Import: () => import('@ds-mo/icons/svg/Import').then(m => m.Import),\n ImportClock: () => import('@ds-mo/icons/svg/ImportClock').then(m => m.ImportClock),\n Inbox: () => import('@ds-mo/icons/svg/Inbox').then(m => m.Inbox),\n IosFilled: () => import('@ds-mo/icons/svg/IosFilled').then(m => m.IosFilled),\n Jerrycan: () => import('@ds-mo/icons/svg/Jerrycan').then(m => m.Jerrycan),\n KeyA: () => import('@ds-mo/icons/svg/KeyA').then(m => m.KeyA),\n KeyB: () => import('@ds-mo/icons/svg/KeyB').then(m => m.KeyB),\n KeyCmd: () => import('@ds-mo/icons/svg/KeyCmd').then(m => m.KeyCmd),\n KeyShift: () => import('@ds-mo/icons/svg/KeyShift').then(m => m.KeyShift),\n LED: () => import('@ds-mo/icons/svg/LED').then(m => m.LED),\n Layers: () => import('@ds-mo/icons/svg/Layers').then(m => m.Layers),\n Leaf: () => import('@ds-mo/icons/svg/Leaf').then(m => m.Leaf),\n LeftCollapse: () => import('@ds-mo/icons/svg/LeftCollapse').then(m => m.LeftCollapse),\n LeftCollapseB: () => import('@ds-mo/icons/svg/LeftCollapseB').then(m => m.LeftCollapseB),\n LeftExpand: () => import('@ds-mo/icons/svg/LeftExpand').then(m => m.LeftExpand),\n LeftExpandB: () => import('@ds-mo/icons/svg/LeftExpandB').then(m => m.LeftExpandB),\n LeftTurnSignal: () => import('@ds-mo/icons/svg/LeftTurnSignal').then(m => m.LeftTurnSignal),\n LetterB: () => import('@ds-mo/icons/svg/LetterB').then(m => m.LetterB),\n LetterC: () => import('@ds-mo/icons/svg/LetterC').then(m => m.LetterC),\n LetterI: () => import('@ds-mo/icons/svg/LetterI').then(m => m.LetterI),\n License: () => import('@ds-mo/icons/svg/License').then(m => m.License),\n LicensePlate: () => import('@ds-mo/icons/svg/LicensePlate').then(m => m.LicensePlate),\n Lifebuoy: () => import('@ds-mo/icons/svg/Lifebuoy').then(m => m.Lifebuoy),\n Link: () => import('@ds-mo/icons/svg/Link').then(m => m.Link),\n List: () => import('@ds-mo/icons/svg/List').then(m => m.List),\n Loads: () => import('@ds-mo/icons/svg/Loads').then(m => m.Loads),\n LocationPin: () => import('@ds-mo/icons/svg/LocationPin').then(m => m.LocationPin),\n LocationPinArrows: () => import('@ds-mo/icons/svg/LocationPinArrows').then(m => m.LocationPinArrows),\n LocationPinDisabled: () => import('@ds-mo/icons/svg/LocationPinDisabled').then(m => m.LocationPinDisabled),\n LocationPinDollar: () => import('@ds-mo/icons/svg/LocationPinDollar').then(m => m.LocationPinDollar),\n LockClosed: () => import('@ds-mo/icons/svg/LockClosed').then(m => m.LockClosed),\n LockClosedFilled: () => import('@ds-mo/icons/svg/LockClosedFilled').then(m => m.LockClosedFilled),\n LockOpen: () => import('@ds-mo/icons/svg/LockOpen').then(m => m.LockOpen),\n Logout: () => import('@ds-mo/icons/svg/Logout').then(m => m.Logout),\n Logs: () => import('@ds-mo/icons/svg/Logs').then(m => m.Logs),\n LogsMagnifyingGlass: () => import('@ds-mo/icons/svg/LogsMagnifyingGlass').then(m => m.LogsMagnifyingGlass),\n MagnifyingGlass: () => import('@ds-mo/icons/svg/MagnifyingGlass').then(m => m.MagnifyingGlass),\n MagnifyingGlassGraph: () => import('@ds-mo/icons/svg/MagnifyingGlassGraph').then(m => m.MagnifyingGlassGraph),\n MagnifyingGlassZoomIn: () => import('@ds-mo/icons/svg/MagnifyingGlassZoomIn').then(m => m.MagnifyingGlassZoomIn),\n MagnifyingGlassZoomOut: () => import('@ds-mo/icons/svg/MagnifyingGlassZoomOut').then(m => m.MagnifyingGlassZoomOut),\n MapNavigation: () => import('@ds-mo/icons/svg/MapNavigation').then(m => m.MapNavigation),\n MapPage: () => import('@ds-mo/icons/svg/MapPage').then(m => m.MapPage),\n MapPin: () => import('@ds-mo/icons/svg/MapPin').then(m => m.MapPin),\n MarkRead: () => import('@ds-mo/icons/svg/MarkRead').then(m => m.MarkRead),\n Match: () => import('@ds-mo/icons/svg/Match').then(m => m.Match),\n MessageBubble: () => import('@ds-mo/icons/svg/MessageBubble').then(m => m.MessageBubble),\n MessageBubbleStack: () => import('@ds-mo/icons/svg/MessageBubbleStack').then(m => m.MessageBubbleStack),\n Messaging: () => import('@ds-mo/icons/svg/Messaging').then(m => m.Messaging),\n Mic: () => import('@ds-mo/icons/svg/Mic').then(m => m.Mic),\n MicMute: () => import('@ds-mo/icons/svg/MicMute').then(m => m.MicMute),\n Minimize: () => import('@ds-mo/icons/svg/Minimize').then(m => m.Minimize),\n Monitor: () => import('@ds-mo/icons/svg/Monitor').then(m => m.Monitor),\n Notification: () => import('@ds-mo/icons/svg/Notification').then(m => m.Notification),\n NumberTen: () => import('@ds-mo/icons/svg/NumberTen').then(m => m.NumberTen),\n OctagonSubtract: () => import('@ds-mo/icons/svg/OctagonSubtract').then(m => m.OctagonSubtract),\n Odometer: () => import('@ds-mo/icons/svg/Odometer').then(m => m.Odometer),\n OverviewAI: () => import('@ds-mo/icons/svg/OverviewAI').then(m => m.OverviewAI),\n PanelCollapse: () => import('@ds-mo/icons/svg/PanelCollapse').then(m => m.PanelCollapse),\n PanelExpand: () => import('@ds-mo/icons/svg/PanelExpand').then(m => m.PanelExpand),\n Paperclip: () => import('@ds-mo/icons/svg/Paperclip').then(m => m.Paperclip),\n PaperplaneSend: () => import('@ds-mo/icons/svg/PaperplaneSend').then(m => m.PaperplaneSend),\n Paragraph: () => import('@ds-mo/icons/svg/Paragraph').then(m => m.Paragraph),\n ParagraphCheck: () => import('@ds-mo/icons/svg/ParagraphCheck').then(m => m.ParagraphCheck),\n ParagraphPencil: () => import('@ds-mo/icons/svg/ParagraphPencil').then(m => m.ParagraphPencil),\n Pause: () => import('@ds-mo/icons/svg/Pause').then(m => m.Pause),\n PauseFilled: () => import('@ds-mo/icons/svg/PauseFilled').then(m => m.PauseFilled),\n Pencil: () => import('@ds-mo/icons/svg/Pencil').then(m => m.Pencil),\n PencilSquiggle: () => import('@ds-mo/icons/svg/PencilSquiggle').then(m => m.PencilSquiggle),\n Person: () => import('@ds-mo/icons/svg/Person').then(m => m.Person),\n PersonAt: () => import('@ds-mo/icons/svg/PersonAt').then(m => m.PersonAt),\n PersonConnect: () => import('@ds-mo/icons/svg/PersonConnect').then(m => m.PersonConnect),\n PersonFrame: () => import('@ds-mo/icons/svg/PersonFrame').then(m => m.PersonFrame),\n PersonGear: () => import('@ds-mo/icons/svg/PersonGear').then(m => m.PersonGear),\n PersonGroup: () => import('@ds-mo/icons/svg/PersonGroup').then(m => m.PersonGroup),\n PersonGroupArrows: () => import('@ds-mo/icons/svg/PersonGroupArrows').then(m => m.PersonGroupArrows),\n PersonManager: () => import('@ds-mo/icons/svg/PersonManager').then(m => m.PersonManager),\n PersonShield: () => import('@ds-mo/icons/svg/PersonShield').then(m => m.PersonShield),\n PersonStar: () => import('@ds-mo/icons/svg/PersonStar').then(m => m.PersonStar),\n Phone: () => import('@ds-mo/icons/svg/Phone').then(m => m.Phone),\n PhoneDisconnect: () => import('@ds-mo/icons/svg/PhoneDisconnect').then(m => m.PhoneDisconnect),\n PicmanFilled: () => import('@ds-mo/icons/svg/PicmanFilled').then(m => m.PicmanFilled),\n Pin: () => import('@ds-mo/icons/svg/Pin').then(m => m.Pin),\n PipBottomLeft: () => import('@ds-mo/icons/svg/PipBottomLeft').then(m => m.PipBottomLeft),\n PipBottomRight: () => import('@ds-mo/icons/svg/PipBottomRight').then(m => m.PipBottomRight),\n PipTopLeft: () => import('@ds-mo/icons/svg/PipTopLeft').then(m => m.PipTopLeft),\n PipTopRight: () => import('@ds-mo/icons/svg/PipTopRight').then(m => m.PipTopRight),\n Play: () => import('@ds-mo/icons/svg/Play').then(m => m.Play),\n PlayFilled: () => import('@ds-mo/icons/svg/PlayFilled').then(m => m.PlayFilled),\n Plug: () => import('@ds-mo/icons/svg/Plug').then(m => m.Plug),\n Plus: () => import('@ds-mo/icons/svg/Plus').then(m => m.Plus),\n PlusCircle: () => import('@ds-mo/icons/svg/PlusCircle').then(m => m.PlusCircle),\n Preferences: () => import('@ds-mo/icons/svg/Preferences').then(m => m.Preferences),\n Printer: () => import('@ds-mo/icons/svg/Printer').then(m => m.Printer),\n PunchCard: () => import('@ds-mo/icons/svg/PunchCard').then(m => m.PunchCard),\n Puzzle: () => import('@ds-mo/icons/svg/Puzzle').then(m => m.Puzzle),\n PuzzleJoined: () => import('@ds-mo/icons/svg/PuzzleJoined').then(m => m.PuzzleJoined),\n Redo: () => import('@ds-mo/icons/svg/Redo').then(m => m.Redo),\n Refresh: () => import('@ds-mo/icons/svg/Refresh').then(m => m.Refresh),\n Restore: () => import('@ds-mo/icons/svg/Restore').then(m => m.Restore),\n RewardRibbon: () => import('@ds-mo/icons/svg/RewardRibbon').then(m => m.RewardRibbon),\n Rewind: () => import('@ds-mo/icons/svg/Rewind').then(m => m.Rewind),\n RewindSkip: () => import('@ds-mo/icons/svg/RewindSkip').then(m => m.RewindSkip),\n RewindSkipFilled: () => import('@ds-mo/icons/svg/RewindSkipFilled').then(m => m.RewindSkipFilled),\n RightCollapse: () => import('@ds-mo/icons/svg/RightCollapse').then(m => m.RightCollapse),\n RightCollapseB: () => import('@ds-mo/icons/svg/RightCollapseB').then(m => m.RightCollapseB),\n RightExpand: () => import('@ds-mo/icons/svg/RightExpand').then(m => m.RightExpand),\n RightExpandB: () => import('@ds-mo/icons/svg/RightExpandB').then(m => m.RightExpandB),\n RightTurnSignal: () => import('@ds-mo/icons/svg/RightTurnSignal').then(m => m.RightTurnSignal),\n Rotate: () => import('@ds-mo/icons/svg/Rotate').then(m => m.Rotate),\n Satellite: () => import('@ds-mo/icons/svg/Satellite').then(m => m.Satellite),\n Scan: () => import('@ds-mo/icons/svg/Scan').then(m => m.Scan),\n Scissor: () => import('@ds-mo/icons/svg/Scissor').then(m => m.Scissor),\n Scope: () => import('@ds-mo/icons/svg/Scope').then(m => m.Scope),\n Seatbelt: () => import('@ds-mo/icons/svg/Seatbelt').then(m => m.Seatbelt),\n SeatbeltBuckle: () => import('@ds-mo/icons/svg/SeatbeltBuckle').then(m => m.SeatbeltBuckle),\n Shapes: () => import('@ds-mo/icons/svg/Shapes').then(m => m.Shapes),\n ShareCircles: () => import('@ds-mo/icons/svg/ShareCircles').then(m => m.ShareCircles),\n ShareCirclesFilled: () => import('@ds-mo/icons/svg/ShareCirclesFilled').then(m => m.ShareCirclesFilled),\n SharePaperplane: () => import('@ds-mo/icons/svg/SharePaperplane').then(m => m.SharePaperplane),\n Shield: () => import('@ds-mo/icons/svg/Shield').then(m => m.Shield),\n ShieldCheck: () => import('@ds-mo/icons/svg/ShieldCheck').then(m => m.ShieldCheck),\n ShieldCheckmarkFilled: () => import('@ds-mo/icons/svg/ShieldCheckmarkFilled').then(m => m.ShieldCheckmarkFilled),\n ShieldCircle: () => import('@ds-mo/icons/svg/ShieldCircle').then(m => m.ShieldCircle),\n ShieldCircleFilled: () => import('@ds-mo/icons/svg/ShieldCircleFilled').then(m => m.ShieldCircleFilled),\n ShieldCross: () => import('@ds-mo/icons/svg/ShieldCross').then(m => m.ShieldCross),\n ShieldCrossFilled: () => import('@ds-mo/icons/svg/ShieldCrossFilled').then(m => m.ShieldCrossFilled),\n ShieldFilled: () => import('@ds-mo/icons/svg/ShieldFilled').then(m => m.ShieldFilled),\n ShieldLock: () => import('@ds-mo/icons/svg/ShieldLock').then(m => m.ShieldLock),\n ShieldLockFilled: () => import('@ds-mo/icons/svg/ShieldLockFilled').then(m => m.ShieldLockFilled),\n ShoppingBag: () => import('@ds-mo/icons/svg/ShoppingBag').then(m => m.ShoppingBag),\n Snowflake: () => import('@ds-mo/icons/svg/Snowflake').then(m => m.Snowflake),\n SpeakerPhone: () => import('@ds-mo/icons/svg/SpeakerPhone').then(m => m.SpeakerPhone),\n SpeedometerArrow: () => import('@ds-mo/icons/svg/SpeedometerArrow').then(m => m.SpeedometerArrow),\n SpeedometerLeft: () => import('@ds-mo/icons/svg/SpeedometerLeft').then(m => m.SpeedometerLeft),\n SpeedometerRight: () => import('@ds-mo/icons/svg/SpeedometerRight').then(m => m.SpeedometerRight),\n SpikeCirclePercentage: () => import('@ds-mo/icons/svg/SpikeCirclePercentage').then(m => m.SpikeCirclePercentage),\n SpikeCirclePercentageFilled: () => import('@ds-mo/icons/svg/SpikeCirclePercentageFilled').then(m => m.SpikeCirclePercentageFilled),\n Square: () => import('@ds-mo/icons/svg/Square').then(m => m.Square),\n SquareArrowTopRight: () => import('@ds-mo/icons/svg/SquareArrowTopRight').then(m => m.SquareArrowTopRight),\n SquareCheck: () => import('@ds-mo/icons/svg/SquareCheck').then(m => m.SquareCheck),\n SquareCheckFilled: () => import('@ds-mo/icons/svg/SquareCheckFilled').then(m => m.SquareCheckFilled),\n SquareDollar: () => import('@ds-mo/icons/svg/SquareDollar').then(m => m.SquareDollar),\n SquareDollarFilled: () => import('@ds-mo/icons/svg/SquareDollarFilled').then(m => m.SquareDollarFilled),\n SquareDottedMinus: () => import('@ds-mo/icons/svg/SquareDottedMinus').then(m => m.SquareDottedMinus),\n SquareFilled: () => import('@ds-mo/icons/svg/SquareFilled').then(m => m.SquareFilled),\n SquareGrid: () => import('@ds-mo/icons/svg/SquareGrid').then(m => m.SquareGrid),\n SquarePencil: () => import('@ds-mo/icons/svg/SquarePencil').then(m => m.SquarePencil),\n SquarePlus: () => import('@ds-mo/icons/svg/SquarePlus').then(m => m.SquarePlus),\n SquareSubtract: () => import('@ds-mo/icons/svg/SquareSubtract').then(m => m.SquareSubtract),\n SquareSubtractFilled: () => import('@ds-mo/icons/svg/SquareSubtractFilled').then(m => m.SquareSubtractFilled),\n Star: () => import('@ds-mo/icons/svg/Star').then(m => m.Star),\n StarFilled: () => import('@ds-mo/icons/svg/StarFilled').then(m => m.StarFilled),\n Stopwatch: () => import('@ds-mo/icons/svg/Stopwatch').then(m => m.Stopwatch),\n Street: () => import('@ds-mo/icons/svg/Street').then(m => m.Street),\n Subtract: () => import('@ds-mo/icons/svg/Subtract').then(m => m.Subtract),\n SubtractCircle: () => import('@ds-mo/icons/svg/SubtractCircle').then(m => m.SubtractCircle),\n SubtractCircleFilled: () => import('@ds-mo/icons/svg/SubtractCircleFilled').then(m => m.SubtractCircleFilled),\n Table: () => import('@ds-mo/icons/svg/Table').then(m => m.Table),\n Tag: () => import('@ds-mo/icons/svg/Tag').then(m => m.Tag),\n Target: () => import('@ds-mo/icons/svg/Target').then(m => m.Target),\n TargetDollar: () => import('@ds-mo/icons/svg/TargetDollar').then(m => m.TargetDollar),\n Text: () => import('@ds-mo/icons/svg/Text').then(m => m.Text),\n ThemeDark: () => import('@ds-mo/icons/svg/ThemeDark').then(m => m.ThemeDark),\n ThemeLight: () => import('@ds-mo/icons/svg/ThemeLight').then(m => m.ThemeLight),\n ThumbsDown: () => import('@ds-mo/icons/svg/ThumbsDown').then(m => m.ThumbsDown),\n ThumbsDownFilled: () => import('@ds-mo/icons/svg/ThumbsDownFilled').then(m => m.ThumbsDownFilled),\n ThumbsUp: () => import('@ds-mo/icons/svg/ThumbsUp').then(m => m.ThumbsUp),\n ThumbsUpFilled: () => import('@ds-mo/icons/svg/ThumbsUpFilled').then(m => m.ThumbsUpFilled),\n TirePressure: () => import('@ds-mo/icons/svg/TirePressure').then(m => m.TirePressure),\n Toggle: () => import('@ds-mo/icons/svg/Toggle').then(m => m.Toggle),\n TrafficLight: () => import('@ds-mo/icons/svg/TrafficLight').then(m => m.TrafficLight),\n Trash: () => import('@ds-mo/icons/svg/Trash').then(m => m.Trash),\n Trophy: () => import('@ds-mo/icons/svg/Trophy').then(m => m.Trophy),\n TurnSignal: () => import('@ds-mo/icons/svg/TurnSignal').then(m => m.TurnSignal),\n TurnSignalFilled: () => import('@ds-mo/icons/svg/TurnSignalFilled').then(m => m.TurnSignalFilled),\n Undo: () => import('@ds-mo/icons/svg/Undo').then(m => m.Undo),\n Upgrade: () => import('@ds-mo/icons/svg/Upgrade').then(m => m.Upgrade),\n Upload: () => import('@ds-mo/icons/svg/Upload').then(m => m.Upload),\n VehicleTrailer: () => import('@ds-mo/icons/svg/VehicleTrailer').then(m => m.VehicleTrailer),\n VehicleTruck: () => import('@ds-mo/icons/svg/VehicleTruck').then(m => m.VehicleTruck),\n VehicleTruckMagnifyingGlass: () => import('@ds-mo/icons/svg/VehicleTruckMagnifyingGlass').then(m => m.VehicleTruckMagnifyingGlass),\n Video: () => import('@ds-mo/icons/svg/Video').then(m => m.Video),\n ViewMenu: () => import('@ds-mo/icons/svg/ViewMenu').then(m => m.ViewMenu),\n Volume: () => import('@ds-mo/icons/svg/Volume').then(m => m.Volume),\n VolumeFilled: () => import('@ds-mo/icons/svg/VolumeFilled').then(m => m.VolumeFilled),\n VolumeMute: () => import('@ds-mo/icons/svg/VolumeMute').then(m => m.VolumeMute),\n VolumeMuteFilled: () => import('@ds-mo/icons/svg/VolumeMuteFilled').then(m => m.VolumeMuteFilled),\n WandSparkle: () => import('@ds-mo/icons/svg/WandSparkle').then(m => m.WandSparkle),\n Waveform: () => import('@ds-mo/icons/svg/Waveform').then(m => m.Waveform),\n Webhooks: () => import('@ds-mo/icons/svg/Webhooks').then(m => m.Webhooks),\n Whistle: () => import('@ds-mo/icons/svg/Whistle').then(m => m.Whistle),\n WifiHorizontal: () => import('@ds-mo/icons/svg/WifiHorizontal').then(m => m.WifiHorizontal),\n WifiTower: () => import('@ds-mo/icons/svg/WifiTower').then(m => m.WifiTower),\n WifiVertical: () => import('@ds-mo/icons/svg/WifiVertical').then(m => m.WifiVertical),\n WifiVerticalFilled: () => import('@ds-mo/icons/svg/WifiVerticalFilled').then(m => m.WifiVerticalFilled),\n WifiVerticalFilledDisabled: () => import('@ds-mo/icons/svg/WifiVerticalFilledDisabled').then(m => m.WifiVerticalFilledDisabled),\n WorkflowA: () => import('@ds-mo/icons/svg/WorkflowA').then(m => m.WorkflowA),\n WorkflowB: () => import('@ds-mo/icons/svg/WorkflowB').then(m => m.WorkflowB),\n Wrench: () => import('@ds-mo/icons/svg/Wrench').then(m => m.Wrench),\n ZoomBackOut: () => import('@ds-mo/icons/svg/ZoomBackOut').then(m => m.ZoomBackOut),\n};\n","/**\n * Glyph markup validation + Trusted-Types-safe parsing for ds-icon.\n *\n * Glyphs normally come from the trusted @ds-mo/icons build pipeline, but\n * `registerIcons` accepts arbitrary app-provided strings and injection is a\n * sink — so every glyph is validated at the render boundary. Injection uses\n * parsed DOM nodes (never innerHTML), which keeps ds-icon working under a\n * strict CSP with `require-trusted-types-for 'script'`.\n */\n\n/** Structural view of an element so the walk is unit-testable without a DOM. */\nexport interface IconSvgElementLike {\n localName: string;\n getAttributeNames(): string[];\n getAttribute(name: string): string | null;\n children: ArrayLike<IconSvgElementLike>;\n}\n\n/** Elements that can execute or embed foreign content — never valid in a glyph. */\nconst FORBIDDEN_ELEMENTS = new Set([\n 'script',\n 'foreignobject',\n 'iframe',\n 'object',\n 'embed',\n 'animation', // SVG 1.2 external-content element (distinct from animate/animateTransform)\n]);\n\nfunction isValidIconSvgElement(el: IconSvgElementLike): boolean {\n if (FORBIDDEN_ELEMENTS.has(el.localName.toLowerCase())) return false;\n\n for (const attr of el.getAttributeNames()) {\n const lower = attr.toLowerCase();\n // Event handler attributes (onclick, onload, …) — any casing.\n if (lower.startsWith('on')) return false;\n // References must stay internal (#gradient-id); rejects javascript:, data:,\n // and external URLs on <use>, <a>, <image>, …\n if (lower === 'href' || lower === 'xlink:href') {\n const value = el.getAttribute(attr) ?? '';\n if (!value.startsWith('#')) return false;\n }\n }\n\n for (let i = 0; i < el.children.length; i++) {\n if (!isValidIconSvgElement(el.children[i])) return false;\n }\n\n return true;\n}\n\n/** True when `root` is an `<svg>` whose whole tree passes validation. */\nexport function isValidIconSvgRoot(root: IconSvgElementLike | null): boolean {\n return root != null && root.localName === 'svg' && isValidIconSvgElement(root);\n}\n\n/**\n * Parse + validate glyph markup. Returns a detached `<svg>` element ready to\n * append (appending adopts it into the document), or `null` when the markup\n * is not well-formed XML, not rooted at `<svg>`, or fails validation —\n * ds-icon renders an empty fixed-size box in that case.\n */\nexport function parseIconSvg(svg: string): SVGElement | null {\n if (typeof DOMParser === 'undefined') return null;\n\n const doc = new DOMParser().parseFromString(svg, 'image/svg+xml');\n // Malformed XML yields a parsererror document (root or nested, per browser).\n if (doc.querySelector('parsererror')) return null;\n\n const root = doc.documentElement as unknown as IconSvgElementLike;\n if (!isValidIconSvgRoot(root)) return null;\n\n return doc.documentElement as unknown as SVGElement;\n}\n","/* ── Base icon ───────────────────────────────────────────────────────────── */\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n color: var(--color-foreground-primary);\n /* Explicit size so the SVG (width/height: 100% via JS) has a defined container */\n width: var(--_icon-sz, var(--dimension-iconography-md));\n height: var(--_icon-sz, var(--dimension-iconography-md));\n}\n\n.icon__svg {\n display: contents;\n line-height: 0;\n}\n\n/* SVG width/height are set via inline style in updateSvg() because Stencil's\n scoped CSS cannot reach innerHTML-injected elements (they lack the sc-* class). */\n\n/* ── Sizes ───────────────────────────────────────────────────────────────── */\n\n.icon--size-xs { --_icon-sz: var(--dimension-iconography-xs); }\n.icon--size-sm { --_icon-sz: var(--dimension-iconography-sm); }\n.icon--size-md { --_icon-sz: var(--dimension-iconography-md); }\n.icon--size-lg { --_icon-sz: var(--dimension-iconography-lg); }\n.icon--size-xl { --_icon-sz: var(--dimension-iconography-xl); }\n.icon--size-2xl { --_icon-sz: var(--dimension-iconography-2xl); }\n.icon--size-3xl { --_icon-sz: var(--dimension-iconography-3xl); }\n\n/* ── Colors — hierarchy ──────────────────────────────────────────────────── */\n\n.icon--color-primary { color: var(--color-foreground-primary); }\n.icon--color-secondary { color: var(--color-foreground-secondary); }\n.icon--color-tertiary { color: var(--color-foreground-tertiary); }\n.icon--color-quaternary { color: var(--color-foreground-quaternary); }\n.icon--color-inherit { color: inherit; }\n\n/* ── Colors — intent (bold contrast default) ─────────────────────────────── */\n\n.icon--color-brand { color: var(--color-foreground-bold-brand); }\n.icon--color-negative { color: var(--color-foreground-bold-negative); }\n.icon--color-positive { color: var(--color-foreground-bold-positive); }\n.icon--color-warning { color: var(--color-foreground-bold-warning); }\n.icon--color-caution { color: var(--color-foreground-bold-caution); }\n.icon--color-ai { color: var(--color-foreground-bold-ai); }\n.icon--color-guide { color: var(--color-foreground-bold-guide); }\n.icon--color-neutral { color: var(--color-foreground-bold-neutral); }\n\n/* ── Colors — intent faint ───────────────────────────────────────────────── */\n\n.icon--color-faint-brand { color: var(--color-foreground-faint-brand); }\n.icon--color-faint-negative { color: var(--color-foreground-faint-negative); }\n.icon--color-faint-positive { color: var(--color-foreground-faint-positive); }\n.icon--color-faint-warning { color: var(--color-foreground-faint-warning); }\n.icon--color-faint-caution { color: var(--color-foreground-faint-caution); }\n.icon--color-faint-ai { color: var(--color-foreground-faint-ai); }\n.icon--color-faint-neutral { color: var(--color-foreground-faint-neutral); }\n\n/* ── Colors — intent medium ─────────────────────────────────────────────── */\n\n.icon--color-medium-brand { color: var(--color-foreground-medium-brand); }\n.icon--color-medium-negative { color: var(--color-foreground-medium-negative); }\n.icon--color-medium-positive { color: var(--color-foreground-medium-positive); }\n.icon--color-medium-warning { color: var(--color-foreground-medium-warning); }\n.icon--color-medium-caution { color: var(--color-foreground-medium-caution); }\n.icon--color-medium-ai { color: var(--color-foreground-medium-ai); }\n.icon--color-medium-neutral { color: var(--color-foreground-medium-neutral); }\n\n/* ── Colors — intent bold (explicit) ────────────────────────────────────── */\n\n.icon--color-bold-brand { color: var(--color-foreground-bold-brand); }\n.icon--color-bold-negative { color: var(--color-foreground-bold-negative); }\n.icon--color-bold-positive { color: var(--color-foreground-bold-positive); }\n.icon--color-bold-warning { color: var(--color-foreground-bold-warning); }\n.icon--color-bold-caution { color: var(--color-foreground-bold-caution); }\n.icon--color-bold-ai { color: var(--color-foreground-bold-ai); }\n.icon--color-bold-neutral { color: var(--color-foreground-bold-neutral); }\n\n/* ── Colors — intent strong ──────────────────────────────────────────────── */\n\n.icon--color-strong-brand { color: var(--color-foreground-strong-brand); }\n.icon--color-strong-negative { color: var(--color-foreground-strong-negative); }\n.icon--color-strong-positive { color: var(--color-foreground-strong-positive); }\n.icon--color-strong-warning { color: var(--color-foreground-strong-warning); }\n.icon--color-strong-caution { color: var(--color-foreground-strong-caution); }\n.icon--color-strong-ai { color: var(--color-foreground-strong-ai); }\n.icon--color-strong-neutral { color: var(--color-foreground-strong-neutral); }\n\n/* ── Colors — contextual ────────────────────────────────────────────────── */\n\n.icon--color-on-strong { color: var(--color-foreground-on-strong-background-primary); }\n.icon--color-on-bold { color: var(--color-foreground-on-bold-background-primary); }\n","import { Component, Prop, Element, State, Watch, h, Host } from '@stencil/core';\nimport { flagIconLoaders } from './flag-icon-catalog';\nimport { systemIconLoaders } from './system-icon-catalog';\nimport { iconCache, iconCacheKey } from './icon-cache';\nimport { parseIconSvg } from './icon-svg';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n\nexport type IconColorToken =\n // Hierarchy\n | 'primary' | 'secondary' | 'tertiary' | 'quaternary'\n // Intent — bold contrast (default)\n | 'brand' | 'negative' | 'positive' | 'warning' | 'caution' | 'ai' | 'guide' | 'neutral'\n // Intent — faint\n | 'faint-brand' | 'faint-negative' | 'faint-positive' | 'faint-warning'\n | 'faint-caution' | 'faint-ai' | 'faint-neutral'\n // Intent — medium\n | 'medium-brand' | 'medium-negative' | 'medium-positive' | 'medium-warning'\n | 'medium-caution' | 'medium-ai' | 'medium-neutral'\n // Intent — bold (explicit)\n | 'bold-brand' | 'bold-negative' | 'bold-positive' | 'bold-warning'\n | 'bold-caution' | 'bold-ai' | 'bold-neutral'\n // Intent — strong\n | 'strong-brand' | 'strong-negative' | 'strong-positive' | 'strong-warning'\n | 'strong-caution' | 'strong-ai' | 'strong-neutral'\n // Contextual\n | 'on-strong' | 'on-bold'\n // Pass-through\n | 'inherit';\n\nexport type IconColor = IconColorToken | `var(--${string})`;\n\n@Component({\n tag: 'ds-icon',\n styleUrl: 'Icon.css',\n scoped: true,\n})\nexport class Icon {\n @Element() el!: HTMLElement;\n\n /** Name of the system icon (e.g. `\"Gear\"`, `\"ArrowRight\"`) or flag (e.g. `\"US\"`) */\n @Prop() name: string = '';\n /** Iconography size token. Maps to `--dimension-iconography-{size}`. Default `md` = 20 px. */\n @Prop() size: IconSize = 'md';\n /** Semantic foreground color token, or a raw CSS var reference. */\n @Prop() color: IconColor | undefined;\n /** Accessible label. Sets `role=\"img\"` and `aria-label`. Omit for decorative icons. */\n @Prop() label: string | undefined;\n /** Set `true` to look up from the flag icon set instead of the system icon set. */\n @Prop() flag: boolean = false;\n\n /** Resolved SVG markup — set synchronously on cache hit, async after a lazy load. */\n @State() private svg: string = '';\n\n /** Guards against out-of-order async resolutions when `name`/`flag` change quickly. */\n private loadToken = 0;\n\n /**\n * Cache hit → render synchronously (pre-registered via `registerIcons` or\n * previously loaded). Miss → fire the per-icon lazy loader; the glyph pops in\n * when the (tiny, per-icon) chunk resolves and stays cached for every other\n * ds-icon instance.\n */\n private resolveSvg() {\n const flag = this.flag;\n const key = iconCacheKey(this.name, flag);\n const token = ++this.loadToken;\n\n const cached = iconCache().get(key);\n if (cached !== undefined) {\n this.svg = cached;\n return;\n }\n\n // Own-key lookup only: names resolve by exact canonical IcoMo export key —\n // never meta.json aliases (not in the maps) and never inherited prototype\n // keys ('constructor', 'toString', …) that a bare index access would hit.\n const loaders = flag ? flagIconLoaders : systemIconLoaders;\n const loader = Object.prototype.hasOwnProperty.call(loaders, this.name)\n ? loaders[this.name]\n : undefined;\n if (!loader) {\n this.svg = '';\n return;\n }\n\n loader()\n .then(svg => {\n iconCache().set(key, svg);\n if (token === this.loadToken) this.svg = svg;\n })\n .catch(() => {\n if (token === this.loadToken) this.svg = '';\n });\n }\n\n componentWillLoad() {\n // Fire-and-forget: do not return the promise — a cache miss must not block\n // the parent render tree on a network fetch.\n this.resolveSvg();\n }\n\n /** Last markup injected into the DOM — skips redundant re-parse on unrelated re-renders. */\n private renderedSvg: string | null = null;\n\n private updateSvg() {\n const container = this.el.querySelector<HTMLElement>('.icon__svg');\n if (!container) return;\n if (this.svg === this.renderedSvg) return;\n this.renderedSvg = this.svg;\n\n // Validate + inject as parsed DOM nodes — never innerHTML. Keeps ds-icon\n // Trusted-Types compatible and rejects executable/foreign content in\n // glyph strings (registerIcons accepts app-provided markup).\n const svg = this.svg ? parseIconSvg(this.svg) : null;\n if (!svg) {\n container.replaceChildren();\n return;\n }\n\n // Stencil's scoped CSS cannot reach injected elements (no sc-* class).\n // Apply width/height as inline styles so sizing works regardless of scope class.\n svg.removeAttribute('width');\n svg.removeAttribute('height');\n // Prevent SVG from being natively focusable (Firefox/IE default) while\n // sitting inside an aria-hidden parent — fixes aria-hidden-focus violation.\n svg.setAttribute('focusable', 'false');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.display = 'block';\n svg.style.flexShrink = '0';\n svg.style.width = '100%';\n svg.style.height = '100%';\n container.replaceChildren(svg);\n }\n\n @Watch('name')\n @Watch('flag')\n onIconChange() {\n this.resolveSvg();\n }\n\n componentDidRender() {\n this.updateSvg();\n }\n\n render() {\n const isCustomColor = typeof this.color === 'string' && this.color.startsWith('var(--');\n\n const cls: Record<string, boolean> = {\n icon: true,\n [`icon--size-${this.size}`]: true,\n [`icon--color-${this.color}`]: !!this.color && !isCustomColor && this.color !== 'inherit',\n 'icon--color-inherit': this.color === 'inherit',\n };\n\n const style = isCustomColor ? { color: this.color as string } : undefined;\n\n return (\n <Host style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center' }}>\n <span\n class={cls}\n style={style}\n role={this.label ? 'img' : 'presentation'}\n aria-label={this.label}\n aria-hidden={!this.label ? 'true' : undefined}\n >\n <span class=\"icon__svg\" />\n </span>\n </Host>\n );\n }\n}\n"],"mappings":"2DAQA,MAAMA,EAAYC,OAAOC,IAAI,wBAMvB,SAAUC,EAAaC,EAAcC,GACzC,OAAOA,EAAO,QAAQD,IAAS,UAAUA,GAC3C,C,SAEgBE,IACd,MAAMC,EAAIC,WACV,OAAQD,EAAEP,KAAFO,EAAEP,GAAe,IAAIS,IAC/B,CCnBO,MAAMC,EAAyD,CACpEC,YAAa,IAAMC,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEH,cAC5EI,YAAa,IAAMH,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEC,cAC5EC,aAAc,IAAMJ,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEE,eAC9EC,WAAY,IAAML,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEG,aAC1EC,YAAa,IAAMN,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEI,cAC5EC,WAAY,IAAMP,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEK,aAC1EC,kBAAmB,IAAMR,OAAO,4CAA4CC,MAAKC,GAAKA,EAAEM,oBACxFC,YAAa,IAAMT,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEO,cAC5EC,OAAQ,IAAMV,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEQ,SAClEC,YAAa,IAAMX,OAAO,sCAAsCC,MAAKC,GAAKA,EAAES,cAC5EC,YAAa,IAAMZ,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEU,cAC5EC,WAAY,IAAMb,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEW,aAC1EC,YAAa,IAAMd,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEY,cAC5EC,WAAY,IAAMf,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEa,aAC1EC,YAAa,IAAMhB,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEc,cAC5EC,YAAa,IAAMjB,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEe,cAC5EC,UAAW,IAAMlB,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEgB,YACxEC,WAAY,IAAMnB,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEiB,aAC1EC,cAAe,IAAMpB,OAAO,wCAAwCC,MAAKC,GAAKA,EAAEkB,gBAChFC,eAAgB,IAAMrB,OAAO,yCAAyCC,MAAKC,GAAKA,EAAEmB,iBAClFC,UAAW,IAAMtB,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEoB,YACxEC,WAAY,IAAMvB,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEqB,aAC1EC,gBAAiB,IAAMxB,OAAO,0CAA0CC,MAAKC,GAAKA,EAAEsB,kBACpFC,WAAY,IAAMzB,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEuB,aAC1EC,aAAc,IAAM1B,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEwB,eAC9EC,YAAa,IAAM3B,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEyB,cAC5EC,aAAc,IAAM5B,OAAO,uCAAuCC,MAAKC,GAAKA,EAAE0B,eAC9EC,aAAc,IAAM7B,OAAO,uCAAuCC,MAAKC,GAAKA,EAAE2B,eAC9EC,UAAW,IAAM9B,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE4B,YACxEC,WAAY,IAAM/B,OAAO,qCAAqCC,MAAKC,GAAKA,EAAE6B,aAC1EC,kBAAmB,IAAMhC,OAAO,4CAA4CC,MAAKC,GAAKA,EAAE8B,oBACxFC,iBAAkB,IAAMjC,OAAO,2CAA2CC,MAAKC,GAAKA,EAAE+B,oBChCjF,MAAMC,EAA2D,CACtEC,GAAI,IAAMnC,OAAO,uBAAuBC,MAAKC,GAAKA,EAAEiC,KACpDC,OAAQ,IAAMpC,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEkC,SAC5DC,MAAO,IAAMrC,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEmC,QAC1DC,UAAW,IAAMtC,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEoC,YAClEC,IAAK,IAAMvC,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEqC,MACtDC,UAAW,IAAMxC,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEsC,YAClEC,cAAe,IAAMzC,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEuC,gBAC1EC,UAAW,IAAM1C,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEwC,YAClEC,UAAW,IAAM3C,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEyC,YAClEC,UAAW,IAAM5C,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE0C,YAClEC,WAAY,IAAM7C,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE2C,aACpEC,QAAS,IAAM9C,OAAO,4BAA4BC,MAAKC,GAAKA,EAAE4C,UAC9DC,eAAgB,IAAM/C,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE6C,iBAC5EC,WAAY,IAAMhD,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE8C,aACpEC,mBAAoB,IAAMjD,OAAO,uCAAuCC,MAAKC,GAAKA,EAAE+C,qBACpFC,eAAgB,IAAMlD,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEgD,iBAC5EC,OAAQ,IAAMnD,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEiD,SAC5DC,OAAQ,IAAMpD,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEkD,SAC5DC,kBAAmB,IAAMrD,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEmD,oBAClFC,gBAAiB,IAAMtD,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEoD,kBAC9EC,aAAc,IAAMvD,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEqD,eACxEC,YAAa,IAAMxD,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEsD,cACtEC,YAAa,IAAMzD,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEuD,cACtEC,WAAY,IAAM1D,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEwD,aACpEC,OAAQ,IAAM3D,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEyD,SAC5DC,KAAM,IAAM5D,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE0D,OACxDC,WAAY,IAAM7D,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE2D,aACpEC,gBAAiB,IAAM9D,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE4D,kBAC9EC,WAAY,IAAM/D,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE6D,aACpEC,YAAa,IAAMhE,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE8D,cACtEC,SAAU,IAAMjE,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE+D,WAChEC,WAAY,IAAMlE,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEgE,aACpEC,QAAS,IAAMnE,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEiE,UAC9DC,UAAW,IAAMpE,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEkE,YAClEC,KAAM,IAAMrE,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEmE,OACxDC,WAAY,IAAMtE,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEoE,aACpEC,SAAU,IAAMvE,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEqE,WAChEC,IAAK,IAAMxE,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEsE,MACtDC,OAAQ,IAAMzE,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEuE,SAC5DC,IAAK,IAAM1E,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEwE,MACtDC,iBAAkB,IAAM3E,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEyE,mBAChFC,aAAc,IAAM5E,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE0E,eACxEC,eAAgB,IAAM7E,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE2E,iBAC5EC,eAAgB,IAAM9E,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE4E,iBAC5EC,aAAc,IAAM/E,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE6E,eACxEC,KAAM,IAAMhF,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE8E,OACxDC,WAAY,IAAMjF,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE+E,aACpEC,SAAU,IAAMlF,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEgF,WAChEC,cAAe,IAAMnF,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEiF,gBAC1EC,QAAS,IAAMpF,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEkF,UAC9DC,QAAS,IAAMrF,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEmF,UAC9DC,KAAM,IAAMtF,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEoF,OACxDC,WAAY,IAAMvF,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEqF,aACpEC,KAAM,IAAMxF,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEsF,OACxDC,MAAO,IAAMzF,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEuF,QAC1DC,MAAO,IAAM1F,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEwF,QAC1DC,YAAa,IAAM3F,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEyF,cACtEC,kBAAmB,IAAM5F,OAAO,sCAAsCC,MAAKC,GAAKA,EAAE0F,oBAClFC,YAAa,IAAM7F,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE2F,cACtEC,YAAa,IAAM9F,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE4F,cACtEC,YAAa,IAAM/F,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE6F,cACtEC,kBAAmB,IAAMhG,OAAO,sCAAsCC,MAAKC,GAAKA,EAAE8F,oBAClFC,aAAc,IAAMjG,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE+F,eACxEC,mBAAoB,IAAMlG,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEgG,qBACpFC,UAAW,IAAMnG,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEiG,YAClEC,cAAe,IAAMpG,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEkG,gBAC1EC,OAAQ,IAAMrG,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEmG,SAC5DC,YAAa,IAAMtG,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEoG,cACtEC,iBAAkB,IAAMvG,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEqG,mBAChFC,yBAA0B,IAAMxG,OAAO,6CAA6CC,MAAKC,GAAKA,EAAEsG,2BAChGC,uBAAwB,IAAMzG,OAAO,2CAA2CC,MAAKC,GAAKA,EAAEuG,yBAC5FC,sBAAuB,IAAM1G,OAAO,0CAA0CC,MAAKC,GAAKA,EAAEwG,wBAC1FC,oBAAqB,IAAM3G,OAAO,wCAAwCC,MAAKC,GAAKA,EAAEyG,sBACtFC,kBAAmB,IAAM5G,OAAO,sCAAsCC,MAAKC,GAAKA,EAAE0G,oBAClFC,wBAAyB,IAAM7G,OAAO,4CAA4CC,MAAKC,GAAKA,EAAE2G,0BAC9FC,kBAAmB,IAAM9G,OAAO,sCAAsCC,MAAKC,GAAKA,EAAE4G,oBAClFC,aAAc,IAAM/G,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE6G,eACxEC,WAAY,IAAMhH,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE8G,aACpEC,WAAY,IAAMjH,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE+G,aACpEC,eAAgB,IAAMlH,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEgH,iBAC5EC,YAAa,IAAMnH,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEiH,cACtEC,UAAW,IAAMpH,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEkH,YAClEC,eAAgB,IAAMrH,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEmH,iBAC5EC,MAAO,IAAMtH,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEoH,QAC1DC,WAAY,IAAMvH,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEqH,aACpEC,YAAa,IAAMxH,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEsH,cACtEC,iBAAkB,IAAMzH,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEuH,mBAChFC,MAAO,IAAM1H,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEwH,QAC1DC,cAAe,IAAM3H,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEyH,gBAC1EC,eAAgB,IAAM5H,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE0H,iBAC5EC,UAAW,IAAM7H,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE2H,YAClEC,aAAc,IAAM9H,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE4H,eACxEC,SAAU,IAAM/H,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE6H,WAChEC,UAAW,IAAMhI,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE8H,YAClEC,QAAS,IAAMjI,OAAO,4BAA4BC,MAAKC,GAAKA,EAAE+H,UAC9DC,KAAM,IAAMlI,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEgI,OACxDC,UAAW,IAAMnI,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEiI,YAClEC,iBAAkB,IAAMpI,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEkI,mBAChFC,QAAS,IAAMrI,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEmI,UAC9DC,KAAM,IAAMtI,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEoI,OACxDC,KAAM,IAAMvI,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEqI,OACxDC,MAAO,IAAMxI,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEsI,QAC1DC,YAAa,IAAMzI,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEuI,cACtEC,kBAAmB,IAAM1I,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEwI,oBAClFC,KAAM,IAAM3I,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEyI,OACxDC,IAAK,IAAM5I,OAAO,wBAAwBC,MAAKC,GAAKA,EAAE0I,MACtDC,cAAe,IAAM7I,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE2I,gBAC1EC,mBAAoB,IAAM9I,OAAO,uCAAuCC,MAAKC,GAAKA,EAAE4I,qBACpFC,kBAAmB,IAAM/I,OAAO,sCAAsCC,MAAKC,GAAKA,EAAE6I,oBAClFC,UAAW,IAAMhJ,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE8I,YAClEC,oBAAqB,IAAMjJ,OAAO,wCAAwCC,MAAKC,GAAKA,EAAE+I,sBACtFC,mBAAoB,IAAMlJ,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEgJ,qBACpFC,UAAW,IAAMnJ,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEiJ,YAClEC,cAAe,IAAMpJ,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEkJ,gBAC1EC,wBAAyB,IAAMrJ,OAAO,4CAA4CC,MAAKC,GAAKA,EAAEmJ,0BAC9FC,iBAAkB,IAAMtJ,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEoJ,mBAChFC,aAAc,IAAMvJ,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEqJ,eACxEC,gBAAiB,IAAMxJ,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEsJ,kBAC9EC,cAAe,IAAMzJ,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEuJ,gBAC1EC,aAAc,IAAM1J,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEwJ,eACxEC,aAAc,IAAM3J,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEyJ,eACxEC,qBAAsB,IAAM5J,OAAO,yCAAyCC,MAAKC,GAAKA,EAAE0J,uBACxFC,QAAS,IAAM7J,OAAO,4BAA4BC,MAAKC,GAAKA,EAAE2J,UAC9DC,SAAU,IAAM9J,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE4J,WAChEC,cAAe,IAAM/J,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE6J,gBAC1EC,cAAe,IAAMhK,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE8J,gBAC1EC,eAAgB,IAAMjK,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE+J,iBAC5EC,aAAc,IAAMlK,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEgK,eACxEC,iBAAkB,IAAMnK,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEiK,mBAChFC,eAAgB,IAAMpK,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEkK,iBAC5EC,aAAc,IAAMrK,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEmK,eACxEC,iBAAkB,IAAMtK,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEoK,mBAChFC,gBAAiB,IAAMvK,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEqK,kBAC9EC,gBAAiB,IAAMxK,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEsK,kBAC9EC,IAAK,IAAMzK,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEuK,MACtDC,UAAW,IAAM1K,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEwK,YAClEC,QAAS,IAAM3K,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEyK,UAC9DC,SAAU,IAAM5K,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE0K,WAChEC,KAAM,IAAM7K,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE2K,OACxDC,SAAU,IAAM9K,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE4K,WAChEC,MAAO,IAAM/K,OAAO,0BAA0BC,MAAKC,GAAKA,EAAE6K,QAC1DC,OAAQ,IAAMhL,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE8K,SAC5DC,MAAO,IAAMjL,OAAO,0BAA0BC,MAAKC,GAAKA,EAAE+K,QAC1DC,YAAa,IAAMlL,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEgL,cACtEC,kBAAmB,IAAMnL,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEiL,oBAClFC,aAAc,IAAMpL,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEkL,eACxEC,mBAAoB,IAAMrL,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEmL,qBACpFC,kBAAmB,IAAMtL,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEoL,oBAClFC,wBAAyB,IAAMvL,OAAO,4CAA4CC,MAAKC,GAAKA,EAAEqL,0BAC9FC,cAAe,IAAMxL,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEsL,gBAC1EC,sBAAuB,IAAMzL,OAAO,0CAA0CC,MAAKC,GAAKA,EAAEuL,wBAC1FC,4BAA6B,IAAM1L,OAAO,gDAAgDC,MAAKC,GAAKA,EAAEwL,8BACtGC,oBAAqB,IAAM3L,OAAO,wCAAwCC,MAAKC,GAAKA,EAAEyL,sBACtFC,yBAA0B,IAAM5L,OAAO,6CAA6CC,MAAKC,GAAKA,EAAE0L,2BAChGC,+BAAgC,IAAM7L,OAAO,mDAAmDC,MAAKC,GAAKA,EAAE2L,iCAC5GC,cAAe,IAAM9L,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE4L,gBAC1EC,oBAAqB,IAAM/L,OAAO,wCAAwCC,MAAKC,GAAKA,EAAE6L,sBACtFC,0BAA2B,IAAMhM,OAAO,8CAA8CC,MAAKC,GAAKA,EAAE8L,4BAClGC,OAAQ,IAAMjM,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE+L,SAC5DC,aAAc,IAAMlM,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEgM,eACxEC,IAAK,IAAMnM,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEiM,MACtDC,YAAa,IAAMpM,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEkM,cACtEC,QAAS,IAAMrM,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEmM,UAC9DC,YAAa,IAAMtM,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEoM,cACtEC,gBAAiB,IAAMvM,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEqM,kBAC9EC,QAAS,IAAMxM,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEsM,UAC9DC,YAAa,IAAMzM,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEuM,cACtEC,KAAM,IAAM1M,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEwM,OACxDC,WAAY,IAAM3M,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEyM,aACpEC,WAAY,IAAM5M,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE0M,aACpEC,OAAQ,IAAM7M,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE2M,SAC5DC,aAAc,IAAM9M,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE4M,eACxEC,SAAU,IAAM/M,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE6M,WAChEC,WAAY,IAAMhN,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE8M,aACpEC,eAAgB,IAAMjN,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE+M,iBAC5EC,MAAO,IAAMlN,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEgN,QAC1DC,iBAAkB,IAAMnN,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEiN,mBAChFC,KAAM,IAAMpN,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEkN,OACxDC,UAAW,IAAMrN,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEmN,YAClEC,SAAU,IAAMtN,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEoN,WAChEC,eAAgB,IAAMvN,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEqN,iBAC5EC,gBAAiB,IAAMxN,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEsN,kBAC9EC,eAAgB,IAAMzN,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEuN,iBAC5EC,aAAc,IAAM1N,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEwN,eACxEC,cAAe,IAAM3N,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEyN,gBAC1EC,MAAO,IAAM5N,OAAO,0BAA0BC,MAAKC,GAAKA,EAAE0N,QAC1DC,WAAY,IAAM7N,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE2N,aACpEC,UAAW,IAAM9N,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE4N,YAClEC,gBAAiB,IAAM/N,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE6N,kBAC9EC,gBAAiB,IAAMhO,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE8N,kBAC9EC,QAAS,IAAMjO,OAAO,4BAA4BC,MAAKC,GAAKA,EAAE+N,UAC9DC,UAAW,IAAMlO,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEgO,YAClEC,SAAU,IAAMnO,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEiO,WAChEC,QAAS,IAAMpO,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEkO,UAC9DC,QAAS,IAAMrO,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEmO,UAC9DC,UAAW,IAAMtO,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEoO,YAClEC,MAAO,IAAMvO,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEqO,QAC1DC,OAAQ,IAAMxO,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEsO,SAC5DC,YAAa,IAAMzO,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEuO,cACtEC,MAAO,IAAM1O,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEwO,QAC1DC,UAAW,IAAM3O,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEyO,YAClEC,SAAU,IAAM5O,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE0O,WAChEC,KAAM,IAAM7O,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE2O,OACxDC,KAAM,IAAM9O,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE4O,OACxDC,OAAQ,IAAM/O,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE6O,SAC5DC,SAAU,IAAMhP,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE8O,WAChEC,IAAK,IAAMjP,OAAO,wBAAwBC,MAAKC,GAAKA,EAAE+O,MACtDC,OAAQ,IAAMlP,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEgP,SAC5DC,KAAM,IAAMnP,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEiP,OACxDC,aAAc,IAAMpP,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEkP,eACxEC,cAAe,IAAMrP,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEmP,gBAC1EC,WAAY,IAAMtP,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEoP,aACpEC,YAAa,IAAMvP,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEqP,cACtEC,eAAgB,IAAMxP,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEsP,iBAC5EC,QAAS,IAAMzP,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEuP,UAC9DC,QAAS,IAAM1P,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEwP,UAC9DC,QAAS,IAAM3P,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEyP,UAC9DC,QAAS,IAAM5P,OAAO,4BAA4BC,MAAKC,GAAKA,EAAE0P,UAC9DC,aAAc,IAAM7P,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE2P,eACxEC,SAAU,IAAM9P,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE4P,WAChEC,KAAM,IAAM/P,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE6P,OACxDC,KAAM,IAAMhQ,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE8P,OACxDC,MAAO,IAAMjQ,OAAO,0BAA0BC,MAAKC,GAAKA,EAAE+P,QAC1DC,YAAa,IAAMlQ,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEgQ,cACtEC,kBAAmB,IAAMnQ,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEiQ,oBAClFC,oBAAqB,IAAMpQ,OAAO,wCAAwCC,MAAKC,GAAKA,EAAEkQ,sBACtFC,kBAAmB,IAAMrQ,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEmQ,oBAClFC,WAAY,IAAMtQ,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEoQ,aACpEC,iBAAkB,IAAMvQ,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEqQ,mBAChFC,SAAU,IAAMxQ,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEsQ,WAChEC,OAAQ,IAAMzQ,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEuQ,SAC5DC,KAAM,IAAM1Q,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEwQ,OACxDC,oBAAqB,IAAM3Q,OAAO,wCAAwCC,MAAKC,GAAKA,EAAEyQ,sBACtFC,gBAAiB,IAAM5Q,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE0Q,kBAC9EC,qBAAsB,IAAM7Q,OAAO,yCAAyCC,MAAKC,GAAKA,EAAE2Q,uBACxFC,sBAAuB,IAAM9Q,OAAO,0CAA0CC,MAAKC,GAAKA,EAAE4Q,wBAC1FC,uBAAwB,IAAM/Q,OAAO,2CAA2CC,MAAKC,GAAKA,EAAE6Q,yBAC5FC,cAAe,IAAMhR,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE8Q,gBAC1EC,QAAS,IAAMjR,OAAO,4BAA4BC,MAAKC,GAAKA,EAAE+Q,UAC9DC,OAAQ,IAAMlR,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEgR,SAC5DC,SAAU,IAAMnR,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEiR,WAChEC,MAAO,IAAMpR,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEkR,QAC1DC,cAAe,IAAMrR,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEmR,gBAC1EC,mBAAoB,IAAMtR,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEoR,qBACpFC,UAAW,IAAMvR,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEqR,YAClEC,IAAK,IAAMxR,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEsR,MACtDC,QAAS,IAAMzR,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEuR,UAC9DC,SAAU,IAAM1R,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEwR,WAChEC,QAAS,IAAM3R,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEyR,UAC9DC,aAAc,IAAM5R,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE0R,eACxEC,UAAW,IAAM7R,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE2R,YAClEC,gBAAiB,IAAM9R,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE4R,kBAC9EC,SAAU,IAAM/R,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE6R,WAChEC,WAAY,IAAMhS,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE8R,aACpEC,cAAe,IAAMjS,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE+R,gBAC1EC,YAAa,IAAMlS,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEgS,cACtEC,UAAW,IAAMnS,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEiS,YAClEC,eAAgB,IAAMpS,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEkS,iBAC5EC,UAAW,IAAMrS,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEmS,YAClEC,eAAgB,IAAMtS,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEoS,iBAC5EC,gBAAiB,IAAMvS,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEqS,kBAC9EC,MAAO,IAAMxS,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEsS,QAC1DC,YAAa,IAAMzS,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEuS,cACtEC,OAAQ,IAAM1S,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEwS,SAC5DC,eAAgB,IAAM3S,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEyS,iBAC5EC,OAAQ,IAAM5S,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE0S,SAC5DC,SAAU,IAAM7S,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE2S,WAChEC,cAAe,IAAM9S,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE4S,gBAC1EC,YAAa,IAAM/S,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE6S,cACtEC,WAAY,IAAMhT,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE8S,aACpEC,YAAa,IAAMjT,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE+S,cACtEC,kBAAmB,IAAMlT,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEgT,oBAClFC,cAAe,IAAMnT,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEiT,gBAC1EC,aAAc,IAAMpT,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEkT,eACxEC,WAAY,IAAMrT,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEmT,aACpEC,MAAO,IAAMtT,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEoT,QAC1DC,gBAAiB,IAAMvT,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEqT,kBAC9EC,aAAc,IAAMxT,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEsT,eACxEC,IAAK,IAAMzT,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEuT,MACtDC,cAAe,IAAM1T,OAAO,kCAAkCC,MAAKC,GAAKA,EAAEwT,gBAC1EC,eAAgB,IAAM3T,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEyT,iBAC5EC,WAAY,IAAM5T,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE0T,aACpEC,YAAa,IAAM7T,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE2T,cACtEC,KAAM,IAAM9T,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE4T,OACxDC,WAAY,IAAM/T,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE6T,aACpEC,KAAM,IAAMhU,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE8T,OACxDC,KAAM,IAAMjU,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE+T,OACxDC,WAAY,IAAMlU,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEgU,aACpEC,YAAa,IAAMnU,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEiU,cACtEC,QAAS,IAAMpU,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEkU,UAC9DC,UAAW,IAAMrU,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEmU,YAClEC,OAAQ,IAAMtU,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEoU,SAC5DC,aAAc,IAAMvU,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEqU,eACxEC,KAAM,IAAMxU,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEsU,OACxDC,QAAS,IAAMzU,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEuU,UAC9DC,QAAS,IAAM1U,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEwU,UAC9DC,aAAc,IAAM3U,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEyU,eACxEC,OAAQ,IAAM5U,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE0U,SAC5DC,WAAY,IAAM7U,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE2U,aACpEC,iBAAkB,IAAM9U,OAAO,qCAAqCC,MAAKC,GAAKA,EAAE4U,mBAChFC,cAAe,IAAM/U,OAAO,kCAAkCC,MAAKC,GAAKA,EAAE6U,gBAC1EC,eAAgB,IAAMhV,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE8U,iBAC5EC,YAAa,IAAMjV,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE+U,cACtEC,aAAc,IAAMlV,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEgV,eACxEC,gBAAiB,IAAMnV,OAAO,oCAAoCC,MAAKC,GAAKA,EAAEiV,kBAC9EC,OAAQ,IAAMpV,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEkV,SAC5DC,UAAW,IAAMrV,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEmV,YAClEC,KAAM,IAAMtV,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEoV,OACxDC,QAAS,IAAMvV,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEqV,UAC9DC,MAAO,IAAMxV,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEsV,QAC1DC,SAAU,IAAMzV,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEuV,WAChEC,eAAgB,IAAM1V,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEwV,iBAC5EC,OAAQ,IAAM3V,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEyV,SAC5DC,aAAc,IAAM5V,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE0V,eACxEC,mBAAoB,IAAM7V,OAAO,uCAAuCC,MAAKC,GAAKA,EAAE2V,qBACpFC,gBAAiB,IAAM9V,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE4V,kBAC9EC,OAAQ,IAAM/V,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE6V,SAC5DC,YAAa,IAAMhW,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE8V,cACtEC,sBAAuB,IAAMjW,OAAO,0CAA0CC,MAAKC,GAAKA,EAAE+V,wBAC1FC,aAAc,IAAMlW,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEgW,eACxEC,mBAAoB,IAAMnW,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEiW,qBACpFC,YAAa,IAAMpW,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEkW,cACtEC,kBAAmB,IAAMrW,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEmW,oBAClFC,aAAc,IAAMtW,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEoW,eACxEC,WAAY,IAAMvW,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEqW,aACpEC,iBAAkB,IAAMxW,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEsW,mBAChFC,YAAa,IAAMzW,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEuW,cACtEC,UAAW,IAAM1W,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEwW,YAClEC,aAAc,IAAM3W,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEyW,eACxEC,iBAAkB,IAAM5W,OAAO,qCAAqCC,MAAKC,GAAKA,EAAE0W,mBAChFC,gBAAiB,IAAM7W,OAAO,oCAAoCC,MAAKC,GAAKA,EAAE2W,kBAC9EC,iBAAkB,IAAM9W,OAAO,qCAAqCC,MAAKC,GAAKA,EAAE4W,mBAChFC,sBAAuB,IAAM/W,OAAO,0CAA0CC,MAAKC,GAAKA,EAAE6W,wBAC1FC,4BAA6B,IAAMhX,OAAO,gDAAgDC,MAAKC,GAAKA,EAAE8W,8BACtGC,OAAQ,IAAMjX,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE+W,SAC5DC,oBAAqB,IAAMlX,OAAO,wCAAwCC,MAAKC,GAAKA,EAAEgX,sBACtFC,YAAa,IAAMnX,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEiX,cACtEC,kBAAmB,IAAMpX,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEkX,oBAClFC,aAAc,IAAMrX,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEmX,eACxEC,mBAAoB,IAAMtX,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEoX,qBACpFC,kBAAmB,IAAMvX,OAAO,sCAAsCC,MAAKC,GAAKA,EAAEqX,oBAClFC,aAAc,IAAMxX,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEsX,eACxEC,WAAY,IAAMzX,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEuX,aACpEC,aAAc,IAAM1X,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEwX,eACxEC,WAAY,IAAM3X,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEyX,aACpEC,eAAgB,IAAM5X,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE0X,iBAC5EC,qBAAsB,IAAM7X,OAAO,yCAAyCC,MAAKC,GAAKA,EAAE2X,uBACxFC,KAAM,IAAM9X,OAAO,yBAAyBC,MAAKC,GAAKA,EAAE4X,OACxDC,WAAY,IAAM/X,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE6X,aACpEC,UAAW,IAAMhY,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE8X,YAClEC,OAAQ,IAAMjY,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE+X,SAC5DC,SAAU,IAAMlY,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEgY,WAChEC,eAAgB,IAAMnY,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEiY,iBAC5EC,qBAAsB,IAAMpY,OAAO,yCAAyCC,MAAKC,GAAKA,EAAEkY,uBACxFC,MAAO,IAAMrY,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEmY,QAC1DC,IAAK,IAAMtY,OAAO,wBAAwBC,MAAKC,GAAKA,EAAEoY,MACtDC,OAAQ,IAAMvY,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEqY,SAC5DC,aAAc,IAAMxY,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEsY,eACxEC,KAAM,IAAMzY,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEuY,OACxDC,UAAW,IAAM1Y,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEwY,YAClEC,WAAY,IAAM3Y,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEyY,aACpEC,WAAY,IAAM5Y,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE0Y,aACpEC,iBAAkB,IAAM7Y,OAAO,qCAAqCC,MAAKC,GAAKA,EAAE2Y,mBAChFC,SAAU,IAAM9Y,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE4Y,WAChEC,eAAgB,IAAM/Y,OAAO,mCAAmCC,MAAKC,GAAKA,EAAE6Y,iBAC5EC,aAAc,IAAMhZ,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE8Y,eACxEC,OAAQ,IAAMjZ,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE+Y,SAC5DC,aAAc,IAAMlZ,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEgZ,eACxEC,MAAO,IAAMnZ,OAAO,0BAA0BC,MAAKC,GAAKA,EAAEiZ,QAC1DC,OAAQ,IAAMpZ,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEkZ,SAC5DC,WAAY,IAAMrZ,OAAO,+BAA+BC,MAAKC,GAAKA,EAAEmZ,aACpEC,iBAAkB,IAAMtZ,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEoZ,mBAChFC,KAAM,IAAMvZ,OAAO,yBAAyBC,MAAKC,GAAKA,EAAEqZ,OACxDC,QAAS,IAAMxZ,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEsZ,UAC9DC,OAAQ,IAAMzZ,OAAO,2BAA2BC,MAAKC,GAAKA,EAAEuZ,SAC5DC,eAAgB,IAAM1Z,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEwZ,iBAC5EC,aAAc,IAAM3Z,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEyZ,eACxEC,4BAA6B,IAAM5Z,OAAO,gDAAgDC,MAAKC,GAAKA,EAAE0Z,8BACtGC,MAAO,IAAM7Z,OAAO,0BAA0BC,MAAKC,GAAKA,EAAE2Z,QAC1DC,SAAU,IAAM9Z,OAAO,6BAA6BC,MAAKC,GAAKA,EAAE4Z,WAChEC,OAAQ,IAAM/Z,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE6Z,SAC5DC,aAAc,IAAMha,OAAO,iCAAiCC,MAAKC,GAAKA,EAAE8Z,eACxEC,WAAY,IAAMja,OAAO,+BAA+BC,MAAKC,GAAKA,EAAE+Z,aACpEC,iBAAkB,IAAMla,OAAO,qCAAqCC,MAAKC,GAAKA,EAAEga,mBAChFC,YAAa,IAAMna,OAAO,gCAAgCC,MAAKC,GAAKA,EAAEia,cACtEC,SAAU,IAAMpa,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEka,WAChEC,SAAU,IAAMra,OAAO,6BAA6BC,MAAKC,GAAKA,EAAEma,WAChEC,QAAS,IAAMta,OAAO,4BAA4BC,MAAKC,GAAKA,EAAEoa,UAC9DC,eAAgB,IAAMva,OAAO,mCAAmCC,MAAKC,GAAKA,EAAEqa,iBAC5EC,UAAW,IAAMxa,OAAO,8BAA8BC,MAAKC,GAAKA,EAAEsa,YAClEC,aAAc,IAAMza,OAAO,iCAAiCC,MAAKC,GAAKA,EAAEua,eACxEC,mBAAoB,IAAM1a,OAAO,uCAAuCC,MAAKC,GAAKA,EAAEwa,qBACpFC,2BAA4B,IAAM3a,OAAO,+CAA+CC,MAAKC,GAAKA,EAAEya,6BACpGC,UAAW,IAAM5a,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE0a,YAClEC,UAAW,IAAM7a,OAAO,8BAA8BC,MAAKC,GAAKA,EAAE2a,YAClEC,OAAQ,IAAM9a,OAAO,2BAA2BC,MAAKC,GAAKA,EAAE4a,SAC5DC,YAAa,IAAM/a,OAAO,gCAAgCC,MAAKC,GAAKA,EAAE6a,eC5XxE,MAAMC,EAAqB,IAAIC,IAAI,CACjC,SACA,gBACA,SACA,SACA,QACA,cAGF,SAASC,EAAsBC,GAC7B,GAAIH,EAAmBI,IAAID,EAAGE,UAAUC,eAAgB,OAAO,MAE/D,IAAK,MAAMC,KAAQJ,EAAGK,oBAAqB,CACzC,MAAMC,EAAQF,EAAKD,cAEnB,GAAIG,EAAMC,WAAW,MAAO,OAAO,MAGnC,GAAID,IAAU,QAAUA,IAAU,aAAc,CAC9C,MAAME,EAAQR,EAAGS,aAAaL,IAAS,GACvC,IAAKI,EAAMD,WAAW,KAAM,OAAO,K,EAIvC,IAAK,IAAIG,EAAI,EAAGA,EAAIV,EAAGW,SAASC,OAAQF,IAAK,CAC3C,IAAKX,EAAsBC,EAAGW,SAASD,IAAK,OAAO,K,CAGrD,OAAO,IACT,CAGM,SAAUG,EAAmBC,GACjC,OAAOA,GAAQ,MAAQA,EAAKZ,YAAc,OAASH,EAAsBe,EAC3E,CAQM,SAAUC,EAAaC,GAC3B,UAAWC,YAAc,YAAa,OAAO,KAE7C,MAAMC,GAAM,IAAID,WAAYE,gBAAgBH,EAAK,iBAEjD,GAAIE,EAAIE,cAAc,eAAgB,OAAO,KAE7C,MAAMN,EAAOI,EAAIG,gBACjB,IAAKR,EAAmBC,GAAO,OAAO,KAEtC,OAAOI,EAAIG,eACb,CCxEA,MAAMC,EAAU,IAAM,+kI,MCqCTC,EAAIC,EAAA,MAAAD,UAAAE,EALjB,WAAAC,CAAAC,G,4CASUC,KAAAvd,KAAe,GAEfud,KAAAC,KAAiB,KAMjBD,KAAAtd,KAAgB,MAGPsd,KAAAZ,IAAc,GAGvBY,KAAAE,UAAY,EAgDZF,KAAAG,YAA6B,IAoEtC,CA5GS,UAAAC,GACN,MAAM1d,EAAOsd,KAAKtd,KAClB,MAAM2d,EAAM7d,EAAawd,KAAKvd,KAAMC,GACpC,MAAM4d,IAAUN,KAAKE,UAErB,MAAMK,EAAS5d,IAAY6d,IAAIH,GAC/B,GAAIE,IAAWE,UAAW,CACxBT,KAAKZ,IAAMmB,EACX,M,CAMF,MAAMG,EAAUhe,EAAOK,EAAkBoC,EACzC,MAAMwb,EAASC,OAAOC,UAAUC,eAAeC,KAAKL,EAASV,KAAKvd,MAC9Die,EAAQV,KAAKvd,MACbge,UACJ,IAAKE,EAAQ,CACXX,KAAKZ,IAAM,GACX,M,CAGFuB,IACGzd,MAAKkc,IACJzc,IAAYqe,IAAIX,EAAKjB,GACrB,GAAIkB,IAAUN,KAAKE,UAAWF,KAAKZ,IAAMA,CAAG,IAE7C6B,OAAM,KACL,GAAIX,IAAUN,KAAKE,UAAWF,KAAKZ,IAAM,EAAE,G,CAIjD,iBAAA8B,GAGElB,KAAKI,Y,CAMC,SAAAe,GACN,MAAMC,EAAYpB,KAAK5B,GAAGoB,cAA2B,cACrD,IAAK4B,EAAW,OAChB,GAAIpB,KAAKZ,MAAQY,KAAKG,YAAa,OACnCH,KAAKG,YAAcH,KAAKZ,IAKxB,MAAMA,EAAMY,KAAKZ,IAAMD,EAAaa,KAAKZ,KAAO,KAChD,IAAKA,EAAK,CACRgC,EAAUC,kBACV,M,CAKFjC,EAAIkC,gBAAgB,SACpBlC,EAAIkC,gBAAgB,UAGpBlC,EAAImC,aAAa,YAAa,SAC9BnC,EAAImC,aAAa,cAAe,QAChCnC,EAAIoC,MAAMC,QAAU,QACpBrC,EAAIoC,MAAME,WAAa,IACvBtC,EAAIoC,MAAMG,MAAQ,OAClBvC,EAAIoC,MAAMI,OAAS,OACnBR,EAAUC,gBAAgBjC,E,CAK5B,YAAAyC,GACE7B,KAAKI,Y,CAGP,kBAAA0B,GACE9B,KAAKmB,W,CAGP,MAAAY,GACE,MAAMC,SAAuBhC,KAAKiC,QAAU,UAAYjC,KAAKiC,MAAMtD,WAAW,UAE9E,MAAMuD,EAA+B,CACnCC,KAAM,KACN,CAAC,cAAcnC,KAAKC,QAAS,KAC7B,CAAC,eAAeD,KAAKiC,WAAYjC,KAAKiC,QAAUD,GAAiBhC,KAAKiC,QAAU,UAChF,sBAAuBjC,KAAKiC,QAAU,WAGxC,MAAMT,EAAQQ,EAAgB,CAAEC,MAAOjC,KAAKiC,OAAoBxB,UAEhE,OACE2B,EAACC,EAAI,CAAAhC,IAAA,2CAACmB,MAAO,CAAEC,QAAS,cAAea,WAAY,SAAUC,eAAgB,WAC3EH,EAAA,QAAA/B,IAAA,2CACEmC,MAAON,EACPV,MAAOA,EACPiB,KAAMzC,KAAK0C,MAAQ,MAAQ,eAAc,aAC7B1C,KAAK0C,MAAK,eACR1C,KAAK0C,MAAQ,OAASjC,WAEpC2B,EAAA,QAAA/B,IAAA,2CAAMmC,MAAM,e","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as i,H as e,c as s,h as n,a as t,t as o}from"./index.js";import{d as r}from"./p-cgo-rgl4.js";import{d as a}from"./p-RBe9XqjU.js";import{d as c}from"./p-DHwtgzjP.js";import{d}from"./p-DhgDNluD.js";import{d as l}from"./p-CWd8L7Fk.js";import{a as u,T as h}from"./p-drBA73M_.js";import{r as m}from"./p-BWUTr_XN.js";import{r as f}from"./p-BHtg1fh3.js";function v(i){const{anchorRect:e,popupWidth:s,popupHeight:n,side:t,align:o,sideOffsetPx:r,alignOffsetPx:a,viewportPadPx:c,viewportWidth:d,viewportHeight:l}=i;let u=0;let h=0;switch(t){case"top":h=e.top-n-r;u=o==="start"?e.left+a:o==="end"?e.right-s+a:e.left+e.width/2-s/2+a;break;case"bottom":h=e.bottom+r;u=o==="start"?e.left+a:o==="end"?e.right-s+a:e.left+e.width/2-s/2+a;break;case"left":u=e.left-s-r;h=o==="start"?e.top+a:o==="end"?e.bottom-n+a:e.top+e.height/2-n/2+a;break;case"right":u=e.right+r;h=o==="start"?e.top+a:o==="end"?e.bottom-n+a:e.top+e.height/2-n/2+a;break}return{x:Math.min(Math.max(u,c),d-s-c),y:Math.min(Math.max(h,c),l-n-c)}}function p(i){return"variant"in i&&i.variant==="gradient-picker"}const g=()=>`.sc-ds-menu-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-menu-h:focus-visible,.ds-focus-ring.sc-ds-menu:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-menu-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-menu{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-menu-h:focus-visible,.ds-focus-ring-inset.sc-ds-menu:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-menu-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-menu:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-menu-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-menu{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-menu-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-menu::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-menu-h,.ds-interaction-fill.sc-ds-menu{position:relative;z-index:0;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-menu-h::before,.ds-interaction-fill.sc-ds-menu::before,.ds-interaction-fill.sc-ds-menu-h::after,.ds-interaction-fill.sc-ds-menu::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;transition:none}.ds-interaction-fill.sc-ds-menu-h::before,.ds-interaction-fill.sc-ds-menu::before{z-index:1}.ds-interaction-fill.sc-ds-menu-h::after,.ds-interaction-fill.sc-ds-menu::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-menu-h,.ds-interaction-fill--bordered.sc-ds-menu{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-menu-h::before,.ds-interaction-fill--selected.sc-ds-menu::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-menu-h,.ds-interaction-fill--selected.sc-ds-menu{--ds-interaction-dot-ring:var(--ds-interaction-active)}.ds-interaction-fill.sc-ds-menu-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-menu:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}.ds-interaction-fill.sc-ds-menu-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-menu:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-menu-h>.ds-interaction-fill__content.sc-ds-menu,.ds-interaction-fill.sc-ds-menu>.ds-interaction-fill__content.sc-ds-menu,.ds-interaction-fill__content.sc-ds-menu{position:relative;z-index:2}.ds-interaction-fill--on-medium.sc-ds-menu-h,.ds-interaction-fill--on-medium.sc-ds-menu{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-menu-h,.ds-interaction-fill--on-bold.sc-ds-menu{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-menu-h,.ds-interaction-fill--on-strong.sc-ds-menu{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-menu-h,.ds-interaction-fill--on-translucent.sc-ds-menu{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-menu-h,.ds-interaction-fill--on-inverted.sc-ds-menu{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-menu-h,.ds-interaction-fill--on-media.sc-ds-menu{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-menu-h,.ds-interaction-fill--on-always-dark.sc-ds-menu{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-menu-h,.ds-interaction-fill--on-navigation.sc-ds-menu{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-control-inactive.sc-ds-menu-h,.ds-control-inactive.sc-ds-menu{opacity:0.25;pointer-events:none;cursor:not-allowed}.ds-control--md.sc-ds-menu-h,.ds-control--md.sc-ds-menu{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050);--ds-control-radius:var(--dimension-radius-025)}.ds-control--sm.sc-ds-menu-h,.ds-control--sm.sc-ds-menu{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025);--ds-control-radius:var(--dimension-radius-025)}.ds-control--xs.sc-ds-menu-h,.ds-control--xs.sc-ds-menu{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0;--ds-control-radius:var(--dimension-radius-025)}.menu-popup.sc-ds-menu{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--dimension-menu-width-xs);max-width:var(--dimension-panel-width-lg);overflow:hidden;background-color:var(--color-background-primary);border-radius:var(--dimension-radius-075);box-shadow:var(--effect-shadow-elevated-floating);animation:menuFadeIn var(--effect-motion-short-2) forwards;backface-visibility:hidden;will-change:transform;text-align:start}.menu-popup.sc-ds-menu::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:var(--effect-highlight-elevated-floating)}.menu-popup--closing.sc-ds-menu{animation:menuFadeOut var(--effect-motion-short-2) forwards}@keyframes menuFadeIn{from{opacity:0;transform:inherit scale(0.97)}to{opacity:1}}@keyframes menuFadeOut{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.menu-popup.sc-ds-menu{animation:none;opacity:1}.menu-popup--closing.sc-ds-menu{opacity:0}}.menu-section.sc-ds-menu{display:flex;flex-direction:column;gap:var(--dimension-space-050);padding:var(--dimension-space-050)}.menu-section--divided.sc-ds-menu{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.section-header.sc-ds-menu{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding:0 calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) );text-align:start;-webkit-user-select:none;user-select:none}.menu-item.sc-ds-menu{display:flex;align-items:center;gap:var(--ds-control-gap, var(--dimension-space-050));width:100%;height:var(--ds-control-height, var(--dimension-size-400));padding:0 var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background:transparent;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:left;color:inherit}.menu-item.sc-ds-menu:has(.menu-item__subtext){height:auto;min-height:var(--ds-control-height, var(--dimension-size-400));padding-block:var(--ds-control-padding-inline, var(--dimension-space-075));align-items:flex-start}.menu-item--destructive.sc-ds-menu .menu-item__label.sc-ds-menu{color:var(--color-foreground-bold-negative) !important}.menu-item__content.sc-ds-menu{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.menu-item__label.sc-ds-menu{padding:0 var(--ds-control-label-inset, var(--dimension-space-025))}.menu-item__subtext.sc-ds-menu,ds-text.menu-item__subtext.sc-ds-menu{padding:0 var(--ds-control-label-inset, var(--dimension-space-025))}.menu-item__dot-box.sc-ds-menu{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.menu-item__switch.sc-ds-menu{flex-shrink:0}`;const b=8;const w=i(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.dsClose=s(this,"dsClose");this.dsSelect=s(this,"dsSelect");this.dsGradientSelect=s(this,"dsGradientSelect");this.open=false;this.items=[];this.sections=[];this.side="bottom";this.align="start";this.sideOffset=u.space050;this.alignOffset=0;this.initialFocusVisible=false;this.menuLabel="Menu";this.shouldRender=false;this.closing=false;this.pos={x:0,y:0};this.focusedIndex=0;this.positionReady=false;this.focusRingVisible=false;this.clickOutsideHandler=null;this.scrollResizeHandler=null;this.closeTimer=null;this.itemEls=[];this.positionRetryRaf=null;this.listenersReady=false}componentDidLoad(){if(this.open)this.onOpenChange(true)}disconnectedCallback(){this.cancelPositionRetry();this.teardownListeners()}onOpenChange(i){if(i){this.teardownListeners();this.shouldRender=true;this.closing=false;this.positionReady=false;this.listenersReady=false;this.focusRingVisible=this.initialFocusVisible;this.listenersReady=true;this.setupListeners();this.schedulePositionUpdate((()=>{this.focusInitialItem()}))}else if(this.shouldRender){this.cancelPositionRetry();this.closing=true;this.teardownListeners();this.listenersReady=false;const i=this.closeAnimationMs;if(i<=0){this.finishClose();return}this.closeTimer=setTimeout((()=>{this.closeTimer=null;this.finishClose()}),i)}}onAnchorChange(){if(this.open)this.schedulePositionUpdate()}onPositionPropsChange(){if(this.open)this.schedulePositionUpdate()}get viewportPadPx(){return m(h.space050,h.space050)}get sideOffsetPx(){return m(this.sideOffset,h.space050)}get alignOffsetPx(){return m(this.alignOffset,0)}get popupFallbackWidthPx(){return m(h.menuWidthXs,h.menuWidthXs)}get popupFallbackHeightPx(){return m(h.menuFallbackHeight,h.menuFallbackHeight)}get closeAnimationMs(){return f(h.motionShort2,h.animationDurationShort3)}finishClose(){this.shouldRender=false;this.closing=false}get resolvedAnchor(){if(this.anchor)return this.anchor;if(this.anchorId)return document.getElementById(this.anchorId);return null}get activeSections(){if(this.sections.length>0)return this.sections;if(this.items.length>0)return[{items:this.items}];return[]}get flatItems(){return this.activeSections.flatMap((i=>p(i)?[]:i.items))}cancelPositionRetry(){if(this.positionRetryRaf!==null){cancelAnimationFrame(this.positionRetryRaf);this.positionRetryRaf=null}}schedulePositionUpdate(i){if(!this.open)return;this.cancelPositionRetry();this.positionReady=false;let e=b;const s=()=>{this.positionRetryRaf=null;if(!this.open)return;if(this.calculatePosition()){this.positionReady=true;i?.();return}if(e>0){e-=1;this.positionRetryRaf=requestAnimationFrame(s)}};this.positionRetryRaf=requestAnimationFrame(s)}calculatePosition(){const i=this.resolvedAnchor;if(!i)return false;const e=this.el.querySelector(".menu-popup");if(!e)return false;this.pos=v({anchorRect:i.getBoundingClientRect(),popupWidth:e.offsetWidth||this.popupFallbackWidthPx,popupHeight:e.offsetHeight||this.popupFallbackHeightPx,side:this.side,align:this.align,sideOffsetPx:this.sideOffsetPx,alignOffsetPx:this.alignOffsetPx,viewportPadPx:this.viewportPadPx,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});return true}focusInitialItem(){const i=this.flatItems;const e=i.findIndex((i=>i.isSelected&&!i.isInactive));const s=i.findIndex((i=>!i.isInactive));this.focusedIndex=e>=0?e:s>=0?s:0;requestAnimationFrame((()=>{const i=this.el.querySelectorAll(".menu-item");i[this.focusedIndex]?.focus()}))}setupListeners(){this.clickOutsideHandler=i=>{const e=i.target;const s=this.el.querySelector(".menu-popup");const n=this.resolvedAnchor;if(s?.contains(e)||n?.contains(e))return;this.close()};this.scrollResizeHandler=()=>{if(this.shouldRender&&!this.closing)this.calculatePosition()};document.addEventListener("mousedown",this.clickOutsideHandler,true);window.addEventListener("scroll",this.scrollResizeHandler,true);window.addEventListener("resize",this.scrollResizeHandler)}teardownListeners(){if(this.clickOutsideHandler){document.removeEventListener("mousedown",this.clickOutsideHandler,true);this.clickOutsideHandler=null}if(this.scrollResizeHandler){window.removeEventListener("scroll",this.scrollResizeHandler,true);window.removeEventListener("resize",this.scrollResizeHandler);this.scrollResizeHandler=null}if(this.closeTimer){clearTimeout(this.closeTimer);this.closeTimer=null}}close(){this.resolvedAnchor?.focus();this.dsClose.emit();this.open=false;this.onOpenChange(false)}handleKeyDown(i){if(!this.shouldRender||this.closing)return;const e=this.flatItems;const s=e.map(((i,e)=>({it:i,i:e}))).filter((({it:i})=>!i.isInactive)).map((({i})=>i));if(!s.length)return;const n=s.indexOf(this.focusedIndex);const t=n<0?0:n;switch(i.key){case"ArrowDown":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[(t+1)%s.length];this.focusItem(this.focusedIndex);break;case"ArrowUp":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[(t-1+s.length)%s.length];this.focusItem(this.focusedIndex);break;case"Home":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[0];this.focusItem(this.focusedIndex);break;case"End":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[s.length-1];this.focusItem(this.focusedIndex);break;case"Escape":i.preventDefault();this.close();break;case"Tab":i.preventDefault();this.close();break}}focusItem(i){const e=this.el.querySelectorAll(".menu-item");e[i]?.focus()}handleItemClick(i){if(i.isInactive)return;this.dsSelect.emit(i)}handleGradientSelect(i){this.dsGradientSelect.emit(i)}render(){if(!this.shouldRender)return n(t,{style:{display:"contents"}});const i=this.activeSections;let e=0;const s={position:"fixed",left:"0",top:"0",transform:`translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,zIndex:"9998",visibility:this.positionReady?"visible":"hidden"};if(this.menuWidth)s["width"]=this.menuWidth;if(this.minWidth)s["min-width"]=this.minWidth;return n(t,{style:{display:"contents"}},n("div",{class:{"menu-popup":true,"menu-popup--closing":this.closing},style:s,role:"menu","aria-label":this.menuLabel,"aria-orientation":"vertical"},i.map(((s,t)=>n("div",{key:t,class:{"menu-section":true,"menu-section--divided":t<i.length-1,"menu-section--gradient-picker":p(s)},role:s.header?"group":undefined,"aria-label":s.header},s.header&&n("ds-text",{class:"section-header ds-control--md",as:"span",variant:"text-body-small",emphasis:true,color:"primary","aria-hidden":"true"},s.header),p(s)?n("ds-shell-gradient-picker",{value:s.value,onDsChange:i=>{i.stopPropagation();this.handleGradientSelect(i.detail)}}):s.items.map((i=>{const s=e++;const t=this.focusedIndex===s;return n("button",{key:s,type:"button",class:{"menu-item":true,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-focus-ring--visible":t&&this.focusRingVisible,"ds-interaction-fill":!i.isInactive,"ds-interaction-fill--selected":!!i.isSelected&&!i.isInactive,"menu-item--selected":!!i.isSelected,"ds-control-inactive":!!i.isInactive,"menu-item--destructive":!!i.isDestructive,"menu-item--focused":t},role:i.showSwitch?"menuitemcheckbox":"menuitem","aria-checked":i.showSwitch?String(!!i.switchValue):undefined,"aria-current":!i.showSwitch&&i.isSelected?"true":undefined,disabled:i.isInactive,tabIndex:t?0:-1,onMouseDown:()=>{this.focusRingVisible=false},onClick:()=>this.handleItemClick(i),onFocus:()=>{this.focusedIndex=s}},n("div",{class:"menu-item__content ds-interaction-fill__content"},n("ds-text",{class:"menu-item__label",as:"span",variant:"text-body-medium",color:i.isSelected?"primary":"secondary"},i.label),i.subtext&&n("ds-text",{class:"menu-item__subtext",as:"span",variant:"text-body-small",color:"secondary"},i.subtext)),i.dot&&n("span",{class:"menu-item__dot-box ds-interaction-fill__content","aria-hidden":"true"},n("ds-badge",{class:"menu-item__dot",variant:"dot",background:i.isSelected&&!i.isInactive?"var(--ds-interaction-active)":"var(--color-background-primary)",label:""})),i.showSwitch&&n("ds-switch",{class:"menu-item__switch ds-interaction-fill__content",size:"sm",checked:!!i.switchValue,presentation:true}))})))))))}get el(){return this}static get watchers(){return{open:[{onOpenChange:0}],anchor:[{onAnchorChange:0}],anchorId:[{onAnchorChange:0}],side:[{onPositionPropsChange:0}],align:[{onPositionPropsChange:0}],sideOffset:[{onPositionPropsChange:0}],alignOffset:[{onPositionPropsChange:0}]}}static get style(){return g()}},[2,"ds-menu",{open:[1028],items:[16],sections:[16],side:[1],align:[1],sideOffset:[8,"side-offset"],alignOffset:[8,"align-offset"],menuWidth:[1,"menu-width"],minWidth:[1,"min-width"],anchor:[16],anchorId:[1,"anchor-id"],initialFocusVisible:[4,"initial-focus-visible"],menuLabel:[1,"menu-label"],shouldRender:[32],closing:[32],pos:[32],focusedIndex:[32],positionReady:[32],focusRingVisible:[32]},[[0,"keydown","handleKeyDown"]],{open:[{onOpenChange:0}],anchor:[{onAnchorChange:0}],anchorId:[{onAnchorChange:0}],side:[{onPositionPropsChange:0}],align:[{onPositionPropsChange:0}],sideOffset:[{onPositionPropsChange:0}],alignOffset:[{onPositionPropsChange:0}]}]);function x(){if(typeof customElements==="undefined"){return}const i=["ds-menu","ds-badge","ds-shell-gradient-picker","ds-shell-gradient-swatch","ds-switch","ds-text"];i.forEach((i=>{switch(i){case"ds-menu":if(!customElements.get(o(i))){customElements.define(o(i),w)}break;case"ds-badge":if(!customElements.get(o(i))){r()}break;case"ds-shell-gradient-picker":if(!customElements.get(o(i))){a()}break;case"ds-shell-gradient-swatch":if(!customElements.get(o(i))){c()}break;case"ds-switch":if(!customElements.get(o(i))){d()}break;case"ds-text":if(!customElements.get(o(i))){l()}break}}))}x();export{w as M,x as d};
2
- //# sourceMappingURL=p-B5kfuVQz.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["computeMenuPosition","input","anchorRect","a","popupWidth","pw","popupHeight","ph","side","align","sideOffsetPx","alignOffsetPx","viewportPadPx","vpPad","viewportWidth","viewportHeight","x","y","top","left","right","width","bottom","height","Math","min","max","isMenuGradientPickerSection","section","variant","menuCss","POSITION_RETRY_BUDGET","Menu","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","open","items","sections","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","initialFocusVisible","menuLabel","shouldRender","closing","pos","focusedIndex","positionReady","focusRingVisible","clickOutsideHandler","scrollResizeHandler","closeTimer","itemEls","positionRetryRaf","listenersReady","componentDidLoad","onOpenChange","disconnectedCallback","cancelPositionRetry","teardownListeners","isOpen","setupListeners","schedulePositionUpdate","focusInitialItem","closeAnimationMs","finishClose","setTimeout","onAnchorChange","onPositionPropsChange","resolveCssLengthPx","TOKEN_DEFAULTS","popupFallbackWidthPx","menuWidthXs","popupFallbackHeightPx","menuFallbackHeight","resolveMotionTimeMs","motionShort2","animationDurationShort3","resolvedAnchor","anchor","anchorId","document","getElementById","activeSections","length","flatItems","flatMap","cancelAnimationFrame","onReady","remaining","attempt","calculatePosition","requestAnimationFrame","anchorEl","popup","el","querySelector","getBoundingClientRect","offsetWidth","offsetHeight","window","innerWidth","innerHeight","flat","selectedIdx","findIndex","it","isSelected","isInactive","firstEnabledIdx","btns","querySelectorAll","focus","e","t","target","contains","close","addEventListener","removeEventListener","clearTimeout","dsClose","emit","handleKeyDown","enabled","map","i","filter","cur","indexOf","safe","key","preventDefault","stopPropagation","focusItem","idx","handleItemClick","item","dsSelect","handleGradientSelect","preset","dsGradientSelect","render","h","Host","style","display","flatIdx","popupStyle","position","transform","round","zIndex","visibility","menuWidth","minWidth","class","role","si","header","undefined","as","emphasis","color","value","onDsChange","detail","isFocused","type","isDestructive","showSwitch","String","switchValue","disabled","tabIndex","onMouseDown","onClick","onFocus","label","subtext","dot","background","size","checked","presentation"],"sources":["src/wc/components/Menu/menu-position.ts","src/wc/components/Menu/menu-types.ts","src/wc/components/Menu/Menu.css?tag=ds-menu&encapsulation=scoped","src/wc/components/Menu/Menu.tsx"],"sourcesContent":["export type MenuSide = 'top' | 'right' | 'bottom' | 'left';\nexport type MenuAlign = 'start' | 'center' | 'end';\n\nexport interface MenuPositionInput {\n anchorRect: Pick<DOMRectReadOnly, 'top' | 'left' | 'right' | 'bottom' | 'width' | 'height'>;\n popupWidth: number;\n popupHeight: number;\n side: MenuSide;\n align: MenuAlign;\n sideOffsetPx: number;\n alignOffsetPx: number;\n viewportPadPx: number;\n viewportWidth: number;\n viewportHeight: number;\n}\n\n/** Pure layout math for ds-menu — anchor rect + placement props → viewport-fixed x/y. */\nexport function computeMenuPosition(input: MenuPositionInput): { x: number; y: number } {\n const {\n anchorRect: a,\n popupWidth: pw,\n popupHeight: ph,\n side,\n align,\n sideOffsetPx,\n alignOffsetPx,\n viewportPadPx: vpPad,\n viewportWidth,\n viewportHeight,\n } = input;\n\n let x = 0;\n let y = 0;\n\n switch (side) {\n case 'top':\n y = a.top - ph - sideOffsetPx;\n x =\n align === 'start'\n ? a.left + alignOffsetPx\n : align === 'end'\n ? a.right - pw + alignOffsetPx\n : a.left + a.width / 2 - pw / 2 + alignOffsetPx;\n break;\n case 'bottom':\n y = a.bottom + sideOffsetPx;\n x =\n align === 'start'\n ? a.left + alignOffsetPx\n : align === 'end'\n ? a.right - pw + alignOffsetPx\n : a.left + a.width / 2 - pw / 2 + alignOffsetPx;\n break;\n case 'left':\n x = a.left - pw - sideOffsetPx;\n y =\n align === 'start'\n ? a.top + alignOffsetPx\n : align === 'end'\n ? a.bottom - ph + alignOffsetPx\n : a.top + a.height / 2 - ph / 2 + alignOffsetPx;\n break;\n case 'right':\n x = a.right + sideOffsetPx;\n y =\n align === 'start'\n ? a.top + alignOffsetPx\n : align === 'end'\n ? a.bottom - ph + alignOffsetPx\n : a.top + a.height / 2 - ph / 2 + alignOffsetPx;\n break;\n }\n\n return {\n x: Math.min(Math.max(x, vpPad), viewportWidth - pw - vpPad),\n y: Math.min(Math.max(y, vpPad), viewportHeight - ph - vpPad),\n };\n}\n","import type { ShellGradientPreset } from '../../nav/shell-gradient-presets';\n\nexport type { MenuAlign, MenuSide } from './menu-position';\nexport {\n PANEL_NAV_USER_MENU_PLACEMENT,\n type MenuPlacement,\n} from './menu-placement';\n\nexport interface MenuItemData {\n label: string;\n value?: string;\n subtext?: string;\n /** Show a supplemental brand notification dot. */\n dot?: boolean;\n isSelected?: boolean;\n isInactive?: boolean;\n isDestructive?: boolean;\n /** Render a compact switch indicator; the menu row owns interaction. */\n showSwitch?: boolean;\n switchValue?: boolean;\n}\n\nexport interface MenuItemsSection {\n header?: string;\n items: MenuItemData[];\n}\n\nexport interface MenuGradientPickerSection {\n header?: string;\n variant: 'gradient-picker';\n value: ShellGradientPreset;\n}\n\nexport type MenuSection = MenuItemsSection | MenuGradientPickerSection;\n\nexport function isMenuGradientPickerSection(\n section: MenuSection,\n): section is MenuGradientPickerSection {\n return 'variant' in section && section.variant === 'gradient-picker';\n}\n\nexport type { ShellGradientPreset };\n","@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n@import '../../utils/control-inactive.css';\n@import '../../utils/control-density.css';\n\n/* ── Popup shell ─────────────────────────────────────────────────────────── */\n\n.menu-popup {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n min-width: var(--dimension-menu-width-xs);\n max-width: var(--dimension-panel-width-lg);\n overflow: hidden;\n background-color: var(--color-background-primary);\n border-radius: var(--dimension-radius-075);\n /* Split elevation: shadow on shell, inset highlight on ::after (combined token clips with overflow:hidden). */\n box-shadow: var(--effect-shadow-elevated-floating);\n animation: menuFadeIn var(--effect-motion-short-2) forwards;\n backface-visibility: hidden;\n will-change: transform;\n /*\n * Neutralize the host `align` prop. Stencil reflects it as the legacy HTML\n * `align` attribute, which browsers map to `text-align` on ds-menu. Menu\n * items already force left; section headers / other content must not inherit\n * `end` once ds-text is the full-width layout box.\n */\n text-align: start;\n}\n\n.menu-popup::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n box-shadow: var(--effect-highlight-elevated-floating);\n}\n\n.menu-popup--closing {\n animation: menuFadeOut var(--effect-motion-short-2) forwards;\n}\n\n@keyframes menuFadeIn {\n from { opacity: 0; transform: inherit scale(0.97); }\n to { opacity: 1; }\n}\n\n@keyframes menuFadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .menu-popup {\n animation: none;\n opacity: 1;\n }\n\n .menu-popup--closing {\n opacity: 0;\n }\n}\n\n/* ── Sections ────────────────────────────────────────────────────────────── */\n\n.menu-section {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-050);\n padding: var(--dimension-space-050);\n}\n\n.menu-section--divided {\n border-bottom: var(--dimension-stroke-width-015) solid var(--color-border-tertiary);\n}\n\nds-text.section-header {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n height: var(--ds-control-height, var(--dimension-size-400));\n /* Same inset as menu-item padding-inline + menu-item__label inset. */\n padding: 0 calc(\n var(--ds-control-padding-inline, var(--dimension-space-075)) +\n var(--ds-control-label-inset, var(--dimension-space-025))\n );\n text-align: start;\n -webkit-user-select: none;\n user-select: none;\n}\n\n/* ── Items (md control-density + interaction-fill + inset focus) ─────────── */\n\n.menu-item {\n display: flex;\n align-items: center;\n gap: var(--ds-control-gap, var(--dimension-space-050));\n width: 100%;\n height: var(--ds-control-height, var(--dimension-size-400));\n padding: 0 var(--ds-control-padding-inline, var(--dimension-space-075));\n box-sizing: border-box;\n border: none;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n background: transparent;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n text-align: left;\n color: inherit;\n /* Hover/press/selected: `.ds-interaction-fill` (+ `--selected`). */\n}\n\n/* Subtext rows grow past the density height. */\n.menu-item:has(.menu-item__subtext) {\n height: auto;\n min-height: var(--ds-control-height, var(--dimension-size-400));\n padding-block: var(--ds-control-padding-inline, var(--dimension-space-075));\n align-items: flex-start;\n}\n\n/* Inactive: `.ds-control-inactive` (25% opacity). */\n\n.menu-item--destructive .menu-item__label {\n /* Beat ds-text color-* host classes for destructive rows. */\n color: var(--color-foreground-bold-negative) !important;\n}\n\n.menu-item__content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--dimension-space-025);\n min-width: 0;\n}\n\n/* Colors come from ds-text color prop; keep padding on the metric box. */\nds-text.menu-item__label {\n padding: 0 var(--ds-control-label-inset, var(--dimension-space-025));\n}\n\n.menu-item__subtext,\nds-text.menu-item__subtext {\n padding: 0 var(--ds-control-label-inset, var(--dimension-space-025));\n}\n\n/* Standard md icon zone keeps the dot aligned with other control suffixes. */\n.menu-item__dot-box {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--ds-control-icon, var(--dimension-iconography-md));\n height: var(--ds-control-icon, var(--dimension-iconography-md));\n pointer-events: none;\n}\n\n/* ── Switch suffix ───────────────────────────────────────────────────────── */\n\n.menu-item__switch {\n flex-shrink: 0;\n}\n","import { Component, Prop, State, Event, EventEmitter, Element, Watch, Listen, h, Host } from '@stencil/core';\nimport { resolveCssLengthPx, resolveMotionTimeMs, TOKEN_CSS_LENGTHS, TOKEN_DEFAULTS } from '../../utils';\nimport { computeMenuPosition, type MenuAlign, type MenuSide } from './menu-position';\nimport type { MenuItemData, MenuSection } from './menu-types';\nimport { isMenuGradientPickerSection } from './menu-types';\nimport type { ShellGradientPreset } from '../../nav/shell-gradient-presets';\n\n/** rAF retries while the popup mounts or the anchor resolves. */\nconst POSITION_RETRY_BUDGET = 8;\n\n@Component({\n tag: 'ds-menu',\n styleUrl: 'Menu.css',\n scoped: true,\n})\nexport class Menu {\n @Element() el!: HTMLElement;\n\n @Prop({ mutable: true }) open: boolean = false;\n @Prop() items: MenuItemData[] = [];\n @Prop() sections: MenuSection[] = [];\n @Prop() side: MenuSide = 'bottom';\n @Prop() align: MenuAlign = 'start';\n /** Gap between anchor and menu — number (px) or TokoMo length (`var(--dimension-space-050)`, etc.). */\n @Prop() sideOffset: number | string = TOKEN_CSS_LENGTHS.space050;\n /** Cross-axis offset — number (px) or TokoMo length. */\n @Prop() alignOffset: number | string = 0;\n @Prop() menuWidth: string | undefined;\n @Prop() minWidth: string | undefined;\n /** External trigger element to position against. Set via JS: menuEl.anchor = buttonEl */\n @Prop() anchor: HTMLElement | undefined;\n /** ID of the external trigger element for positioning */\n @Prop() anchorId: string | undefined;\n /** Show a visible ring on the initially focused menu item. Use only when the opener was keyboard-driven. */\n @Prop() initialFocusVisible: boolean = false;\n /** Accessible name for the popup menu. */\n @Prop() menuLabel: string = 'Menu';\n\n @State() private shouldRender: boolean = false;\n @State() private closing: boolean = false;\n @State() private pos: { x: number; y: number } = { x: 0, y: 0 };\n @State() private focusedIndex: number = 0;\n @State() private positionReady: boolean = false;\n @State() private focusRingVisible: boolean = false;\n\n @Event() dsClose!: EventEmitter<void>;\n @Event() dsSelect!: EventEmitter<MenuItemData>;\n /** Emitted when a `gradient-picker` section swatch is chosen. */\n @Event() dsGradientSelect!: EventEmitter<ShellGradientPreset>;\n\n private clickOutsideHandler: ((e: MouseEvent) => void) | null = null;\n private scrollResizeHandler: (() => void) | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private itemEls: HTMLElement[] = [];\n private positionRetryRaf: number | null = null;\n private listenersReady = false;\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.cancelPositionRetry();\n this.teardownListeners();\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.teardownListeners();\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.listenersReady = false;\n this.focusRingVisible = this.initialFocusVisible;\n this.listenersReady = true;\n this.setupListeners();\n this.schedulePositionUpdate(() => {\n this.focusInitialItem();\n });\n } else if (this.shouldRender) {\n this.cancelPositionRetry();\n this.closing = true;\n this.teardownListeners();\n this.listenersReady = false;\n const closeAnimationMs = this.closeAnimationMs;\n if (closeAnimationMs <= 0) {\n this.finishClose();\n return;\n }\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n this.finishClose();\n }, closeAnimationMs);\n }\n }\n\n @Watch('anchor')\n @Watch('anchorId')\n onAnchorChange() {\n if (this.open) this.schedulePositionUpdate();\n }\n\n @Watch('side')\n @Watch('align')\n @Watch('sideOffset')\n @Watch('alignOffset')\n onPositionPropsChange() {\n if (this.open) this.schedulePositionUpdate();\n }\n\n private get viewportPadPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n }\n\n private get sideOffsetPx(): number {\n return resolveCssLengthPx(this.sideOffset, TOKEN_DEFAULTS.space050);\n }\n\n private get alignOffsetPx(): number {\n return resolveCssLengthPx(this.alignOffset, 0);\n }\n\n private get popupFallbackWidthPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuWidthXs, TOKEN_DEFAULTS.menuWidthXs);\n }\n\n private get popupFallbackHeightPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuFallbackHeight, TOKEN_DEFAULTS.menuFallbackHeight);\n }\n\n private get closeAnimationMs(): number {\n return resolveMotionTimeMs(TOKEN_DEFAULTS.motionShort2, TOKEN_DEFAULTS.animationDurationShort3);\n }\n\n private finishClose() {\n this.shouldRender = false;\n this.closing = false;\n }\n\n private get resolvedAnchor(): HTMLElement | null {\n if (this.anchor) return this.anchor;\n if (this.anchorId) return document.getElementById(this.anchorId);\n return null;\n }\n\n private get activeSections(): MenuSection[] {\n if (this.sections.length > 0) return this.sections;\n if (this.items.length > 0) return [{ items: this.items }];\n return [];\n }\n\n private get flatItems(): MenuItemData[] {\n return this.activeSections.flatMap(section =>\n isMenuGradientPickerSection(section) ? [] : section.items,\n );\n }\n\n private cancelPositionRetry() {\n if (this.positionRetryRaf !== null) {\n cancelAnimationFrame(this.positionRetryRaf);\n this.positionRetryRaf = null;\n }\n }\n\n /** Retry until anchor + popup exist — do not reveal at 0,0 on a failed first pass. */\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.open) return;\n\n this.cancelPositionRetry();\n this.positionReady = false;\n\n let remaining = POSITION_RETRY_BUDGET;\n\n const attempt = () => {\n this.positionRetryRaf = null;\n if (!this.open) return;\n\n if (this.calculatePosition()) {\n this.positionReady = true;\n onReady?.();\n return;\n }\n\n if (remaining > 0) {\n remaining -= 1;\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n };\n\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n\n /** @returns `true` when anchor and popup were found and `pos` was updated. */\n private calculatePosition(): boolean {\n const anchorEl = this.resolvedAnchor;\n if (!anchorEl) return false;\n const popup = this.el.querySelector('.menu-popup') as HTMLElement | null;\n if (!popup) return false;\n\n this.pos = computeMenuPosition({\n anchorRect: anchorEl.getBoundingClientRect(),\n popupWidth: popup.offsetWidth || this.popupFallbackWidthPx,\n popupHeight: popup.offsetHeight || this.popupFallbackHeightPx,\n side: this.side,\n align: this.align,\n sideOffsetPx: this.sideOffsetPx,\n alignOffsetPx: this.alignOffsetPx,\n viewportPadPx: this.viewportPadPx,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n return true;\n }\n\n /** Focus the selected item when present, otherwise the first enabled item. */\n private focusInitialItem() {\n const flat = this.flatItems;\n const selectedIdx = flat.findIndex(it => it.isSelected && !it.isInactive);\n const firstEnabledIdx = flat.findIndex(it => !it.isInactive);\n this.focusedIndex = selectedIdx >= 0\n ? selectedIdx\n : (firstEnabledIdx >= 0 ? firstEnabledIdx : 0);\n\n requestAnimationFrame(() => {\n const btns = this.el.querySelectorAll<HTMLElement>('.menu-item');\n btns[this.focusedIndex]?.focus();\n });\n }\n\n private setupListeners() {\n this.clickOutsideHandler = (e: MouseEvent) => {\n const t = e.target as Node;\n const popup = this.el.querySelector('.menu-popup');\n const anchorEl = this.resolvedAnchor;\n if (popup?.contains(t) || anchorEl?.contains(t)) return;\n this.close();\n };\n\n this.scrollResizeHandler = () => {\n if (this.shouldRender && !this.closing) this.calculatePosition();\n };\n\n document.addEventListener('mousedown', this.clickOutsideHandler, true);\n window.addEventListener('scroll', this.scrollResizeHandler, true);\n window.addEventListener('resize', this.scrollResizeHandler);\n }\n\n private teardownListeners() {\n if (this.clickOutsideHandler) {\n document.removeEventListener('mousedown', this.clickOutsideHandler, true);\n this.clickOutsideHandler = null;\n }\n if (this.scrollResizeHandler) {\n window.removeEventListener('scroll', this.scrollResizeHandler, true);\n window.removeEventListener('resize', this.scrollResizeHandler);\n this.scrollResizeHandler = null;\n }\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private close() {\n this.resolvedAnchor?.focus();\n this.dsClose.emit();\n this.open = false;\n this.onOpenChange(false);\n }\n\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n if (!this.shouldRender || this.closing) return;\n const flat = this.flatItems;\n const enabled = flat.map((it, i) => ({ it, i })).filter(({ it }) => !it.isInactive).map(({ i }) => i);\n if (!enabled.length) return;\n\n const cur = enabled.indexOf(this.focusedIndex);\n const safe = cur < 0 ? 0 : cur;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault(); e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[(safe + 1) % enabled.length];\n this.focusItem(this.focusedIndex);\n break;\n case 'ArrowUp':\n e.preventDefault(); e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[(safe - 1 + enabled.length) % enabled.length];\n this.focusItem(this.focusedIndex);\n break;\n case 'Home':\n e.preventDefault(); e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[0];\n this.focusItem(this.focusedIndex);\n break;\n case 'End':\n e.preventDefault(); e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[enabled.length - 1];\n this.focusItem(this.focusedIndex);\n break;\n case 'Escape':\n e.preventDefault();\n this.close();\n break;\n case 'Tab':\n e.preventDefault();\n this.close();\n break;\n }\n }\n\n private focusItem(idx: number) {\n const btns = this.el.querySelectorAll<HTMLElement>('.menu-item');\n btns[idx]?.focus();\n }\n\n private handleItemClick(item: MenuItemData) {\n if (item.isInactive) return;\n this.dsSelect.emit(item);\n }\n\n private handleGradientSelect(preset: ShellGradientPreset) {\n this.dsGradientSelect.emit(preset);\n }\n\n render() {\n if (!this.shouldRender) return <Host style={{ display: 'contents' }} />;\n\n const sections = this.activeSections;\n let flatIdx = 0;\n\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,\n zIndex: '9998',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n\n if (this.menuWidth) popupStyle['width'] = this.menuWidth;\n if (this.minWidth) popupStyle['min-width'] = this.minWidth;\n\n return (\n <Host style={{ display: 'contents' }}>\n <div\n class={{ 'menu-popup': true, 'menu-popup--closing': this.closing }}\n style={popupStyle}\n role=\"menu\"\n aria-label={this.menuLabel}\n aria-orientation=\"vertical\"\n >\n {sections.map((section, si) => (\n <div\n key={si}\n class={{\n 'menu-section': true,\n 'menu-section--divided': si < sections.length - 1,\n 'menu-section--gradient-picker': isMenuGradientPickerSection(section),\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class=\"section-header ds-control--md\"\n as=\"span\"\n variant=\"text-body-small\"\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n {section.header}\n </ds-text>\n )}\n {isMenuGradientPickerSection(section) ? (\n <ds-shell-gradient-picker\n value={section.value}\n onDsChange={(e: CustomEvent<ShellGradientPreset>) => {\n e.stopPropagation();\n this.handleGradientSelect(e.detail);\n }}\n />\n ) : (\n section.items.map(item => {\n const idx = flatIdx++;\n const isFocused = this.focusedIndex === idx;\n return (\n <button\n key={idx}\n type=\"button\"\n class={{\n 'menu-item': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': isFocused && this.focusRingVisible,\n 'ds-interaction-fill': !item.isInactive,\n 'ds-interaction-fill--selected': !!item.isSelected && !item.isInactive,\n 'menu-item--selected': !!item.isSelected,\n 'ds-control-inactive': !!item.isInactive,\n 'menu-item--destructive': !!item.isDestructive,\n 'menu-item--focused': isFocused,\n }}\n role={item.showSwitch ? 'menuitemcheckbox' : 'menuitem'}\n aria-checked={item.showSwitch ? String(!!item.switchValue) : undefined}\n aria-current={!item.showSwitch && item.isSelected ? 'true' : undefined}\n disabled={item.isInactive}\n tabIndex={isFocused ? 0 : -1}\n onMouseDown={() => { this.focusRingVisible = false; }}\n onClick={() => this.handleItemClick(item)}\n onFocus={() => { this.focusedIndex = idx; }}\n >\n <div class=\"menu-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"menu-item__label\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={item.isSelected ? 'primary' : 'secondary'}\n >\n {item.label}\n </ds-text>\n {item.subtext && (\n <ds-text class=\"menu-item__subtext\" as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {item.subtext}\n </ds-text>\n )}\n </div>\n {item.dot && (\n <span class=\"menu-item__dot-box ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-badge\n class=\"menu-item__dot\"\n variant=\"dot\"\n background={item.isSelected && !item.isInactive\n ? 'var(--ds-interaction-active)'\n : 'var(--color-background-primary)'}\n label=\"\"\n />\n </span>\n )}\n {item.showSwitch && (\n <ds-switch\n class=\"menu-item__switch ds-interaction-fill__content\"\n size=\"sm\"\n checked={!!item.switchValue}\n presentation\n />\n )}\n </button>\n );\n }))}\n </div>\n ))}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as e,H as s,h as r,a as o,t as n}from"./index.js";const a=()=>`:host(.ds-control--md),.ds-control--md{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050);--ds-control-radius:var(--dimension-radius-025)}:host(.ds-control--sm),.ds-control--sm{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025);--ds-control-radius:var(--dimension-radius-025)}:host(.ds-control--xs),.ds-control--xs{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0;--ds-control-radius:var(--dimension-radius-025)}@keyframes ds-shimmer-text-motion{0%{background-position:100% 0}76.923%{background-position:0 0}100%{background-position:0 0}}@keyframes ds-shimmer-surface-motion{0%{background-position:100% 0}76.923%{background-position:0 0}100%{background-position:0 0}}.ds-shimmer-text{--ds-shimmer-base:currentColor;--ds-shimmer-duration:var(--effect-animation-duration-long-2);--ds-shimmer-repeat-delay:var(--effect-animation-delay-short-3);--ds-shimmer-cycle-duration:calc( var(--ds-shimmer-duration) + var(--ds-shimmer-repeat-delay) );--ds-shimmer-easing:var(--effect-animation-easing-linear);--ds-shimmer-spread:var(--dimension-size-500);--ds-shimmer-travel:calc( var(--dimension-size-800) + var(--dimension-size-500) + var(--dimension-size-200) );background-color:var(--ds-shimmer-base);background-image:linear-gradient( 330deg, transparent calc(50% - var(--ds-shimmer-spread)), var(--ds-shimmer, var(--color-shimmer-shimmer)) 50%, transparent calc(50% + var(--ds-shimmer-spread)) );background-repeat:no-repeat;background-position:100% 0;background-size:calc( 200% + var(--ds-shimmer-spread) * 2 + var(--ds-shimmer-travel) * 2 ) 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:ds-shimmer-text-motion var(--ds-shimmer-cycle-duration) var(--ds-shimmer-easing) infinite}.ds-shimmer-surface{--ds-shimmer-surface-base:var(--color-foreground-quaternary);--ds-shimmer-duration:var(--effect-animation-duration-long-2);--ds-shimmer-repeat-delay:var(--effect-animation-delay-short-3);--ds-shimmer-cycle-duration:calc( var(--ds-shimmer-duration) + var(--ds-shimmer-repeat-delay) );--ds-shimmer-easing:var(--effect-animation-easing-linear);--ds-shimmer-spread:var(--dimension-size-500);--ds-shimmer-travel:calc( var(--dimension-size-800) + var(--dimension-size-500) + var(--dimension-size-200) );position:relative;overflow:hidden;background-color:var(--ds-shimmer-surface-base)}.ds-shimmer-surface::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient( 330deg, transparent calc(50% - var(--ds-shimmer-spread)), var(--ds-shimmer, var(--color-shimmer-shimmer)) 50%, transparent calc(50% + var(--ds-shimmer-spread)) );background-repeat:no-repeat;background-position:100% 0;background-size:calc( 200% + var(--ds-shimmer-spread) * 2 + var(--ds-shimmer-travel) * 2 ) 100%;animation:ds-shimmer-surface-motion var(--ds-shimmer-cycle-duration) var(--ds-shimmer-easing) infinite}:where([dir='rtl'],[dir='rtl'] *) .ds-shimmer-text,:where([dir='rtl'],[dir='rtl'] *) .ds-shimmer-surface::after{animation-direction:reverse}:host-context([dir='rtl']) .ds-shimmer-text,:host-context([dir='rtl']) .ds-shimmer-surface::after{animation-direction:reverse}@media (prefers-reduced-motion: reduce){.ds-shimmer-text{animation:none;background-image:none;-webkit-text-fill-color:currentColor}.ds-shimmer-surface::after{display:none;animation:none}}:host{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;vertical-align:middle;--ds-skeleton-base:var(--color-foreground-quaternary);--ds-shimmer:var(--color-shimmer-shimmer)}.skeleton__shape{--ds-shimmer-surface-base:var(--ds-skeleton-base);display:block;width:100%;height:100%;flex:0 0 auto;background-color:var(--ds-skeleton-base);border-radius:var(--dimension-radius-025)}:host(.skeleton--surface-on-medium-background){--ds-skeleton-base:var(--color-foreground-on-medium-background-quaternary);--ds-shimmer:var(--color-shimmer-shimmer-on-medium-background)}:host(.skeleton--surface-on-bold-background){--ds-skeleton-base:var(--color-foreground-on-bold-background-quaternary);--ds-shimmer:var(--color-shimmer-shimmer-on-bold-background)}:host(.skeleton--surface-on-strong-background){--ds-skeleton-base:var(--color-foreground-on-strong-background-quaternary);--ds-shimmer:var(--color-shimmer-shimmer-on-strong-background)}:host(.skeleton--surface-on-translucent-background){--ds-skeleton-base:var(--color-translucent-foreground-quaternary);--ds-shimmer:var(--color-translucent-shimmer)}:host(.skeleton--surface-inverted){--ds-skeleton-base:var(--color-inverted-foreground-quaternary);--ds-shimmer:var(--color-inverted-shimmer)}:host(.skeleton--surface-media){--ds-skeleton-base:var(--color-media-foreground-quaternary);--ds-shimmer:var(--color-media-shimmer)}:host(.skeleton--surface-always-dark){--ds-skeleton-base:var(--color-always-dark-foreground-quaternary);--ds-shimmer:var(--color-always-dark-shimmer)}:host(.skeleton--surface-navigation){--ds-skeleton-base:var(--color-navigation-foreground-quaternary);--ds-shimmer:var(--color-navigation-shimmer)}:host(.skeleton--text){width:100%;height:var(--ds-skeleton-canvas-size);padding-block:var(--dimension-space-025)}:host(.skeleton--text) .skeleton__shape{height:calc(var(--ds-skeleton-canvas-size) - var(--dimension-space-050))}:host(.skeleton--text-text-display-medium){--ds-skeleton-canvas-size:var(--typography-lineheight-3xl)}:host(.skeleton--text-text-display-small){--ds-skeleton-canvas-size:var(--typography-lineheight-2xl)}:host(.skeleton--text-text-title-large){--ds-skeleton-canvas-size:var(--typography-lineheight-xl)}:host(.skeleton--text-text-title-medium),:host(.skeleton--text-text-body-large){--ds-skeleton-canvas-size:var(--typography-lineheight-lg)}:host(.skeleton--text-text-title-small),:host(.skeleton--text-text-body-medium){--ds-skeleton-canvas-size:var(--typography-lineheight-md)}:host(.skeleton--text-text-body-small){--ds-skeleton-canvas-size:var(--typography-lineheight-sm)}:host(.skeleton--text-text-caption){--ds-skeleton-canvas-size:var(--typography-lineheight-xs)}:host(.skeleton--icon){width:var(--ds-skeleton-canvas-size);height:var(--ds-skeleton-canvas-size);padding:var(--dimension-space-025)}:host(.skeleton--icon) .skeleton__shape{width:calc(var(--ds-skeleton-canvas-size) - var(--dimension-space-050));height:calc(var(--ds-skeleton-canvas-size) - var(--dimension-space-050))}:host(.skeleton--icon.skeleton--rounded) .skeleton__shape{border-radius:var(--dimension-radius-half)}:host(.skeleton--icon-xs){--ds-skeleton-canvas-size:var(--dimension-iconography-xs)}:host(.skeleton--icon-sm){--ds-skeleton-canvas-size:var(--dimension-iconography-sm)}:host(.skeleton--icon-md){--ds-skeleton-canvas-size:var(--dimension-iconography-md)}:host(.skeleton--icon-lg){--ds-skeleton-canvas-size:var(--dimension-iconography-lg)}:host(.skeleton--icon-xl){--ds-skeleton-canvas-size:var(--dimension-iconography-xl)}:host(.skeleton--icon-2xl){--ds-skeleton-canvas-size:var(--dimension-iconography-2xl)}:host(.skeleton--icon-3xl){--ds-skeleton-canvas-size:var(--dimension-iconography-3xl)}:host(.skeleton--control){width:100%;height:var(--ds-control-height)}:host(.skeleton--control.skeleton--rounded) .skeleton__shape{border-radius:var(--dimension-radius-half)}`;const i=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.variant="text";this.textVariant="text-body-medium";this.iconSize="md";this.controlSize="md";this.rounded=false;this.shimmer=true;this.surface="default"}get widthCss(){const e=this.width;if(e==null)return undefined;return typeof e==="number"?`${e}px`:e}render(){return r(o,{key:"0aca4cbc2e34c5ae919f33e75cba756840429da8","aria-hidden":"true",class:{skeleton:true,[`skeleton--${this.variant}`]:true,[`skeleton--text-${this.textVariant}`]:this.variant==="text",[`skeleton--icon-${this.iconSize}`]:this.variant==="icon",[`ds-control--${this.controlSize}`]:this.variant==="control",[`skeleton--surface-${this.surface}`]:true,"skeleton--rounded":this.variant!=="text"&&this.rounded},style:this.variant==="icon"?undefined:{width:this.widthCss}},r("span",{key:"959ff34228c81eba5372be62ef9e87efa2f96156",class:{skeleton__shape:true,"ds-shimmer-surface":this.shimmer}}))}static get style(){return a()}},[1,"ds-skeleton",{variant:[1],textVariant:[1,"text-variant"],iconSize:[1,"icon-size"],controlSize:[1,"control-size"],width:[8],rounded:[4],shimmer:[4],surface:[1]}]);function t(){if(typeof customElements==="undefined"){return}const e=["ds-skeleton"];e.forEach((e=>{switch(e){case"ds-skeleton":if(!customElements.get(n(e))){customElements.define(n(e),i)}break}}))}t();export{i as S,t as d};
2
- //# sourceMappingURL=p-BeIuJQO9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["skeletonCss","Skeleton","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","variant","textVariant","iconSize","controlSize","rounded","shimmer","surface","widthCss","v","width","undefined","render","h","Host","key","class","skeleton","style","skeleton__shape"],"sources":["src/wc/components/Skeleton/Skeleton.css?tag=ds-skeleton&encapsulation=shadow","src/wc/components/Skeleton/Skeleton.tsx"],"sourcesContent":["@import '../../utils/control-density.css';\n@import '../../utils/shimmer.css';\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 0;\n vertical-align: middle;\n --ds-skeleton-base: var(--color-foreground-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer);\n}\n\n.skeleton__shape {\n --ds-shimmer-surface-base: var(--ds-skeleton-base);\n\n display: block;\n width: 100%;\n height: 100%;\n flex: 0 0 auto;\n background-color: var(--ds-skeleton-base);\n border-radius: var(--dimension-radius-025);\n}\n\n/* ── Surface context ───────────────────────────────────────────────────── */\n\n:host(.skeleton--surface-on-medium-background) {\n --ds-skeleton-base: var(--color-foreground-on-medium-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-medium-background);\n}\n\n:host(.skeleton--surface-on-bold-background) {\n --ds-skeleton-base: var(--color-foreground-on-bold-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-bold-background);\n}\n\n:host(.skeleton--surface-on-strong-background) {\n --ds-skeleton-base: var(--color-foreground-on-strong-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-strong-background);\n}\n\n:host(.skeleton--surface-on-translucent-background) {\n --ds-skeleton-base: var(--color-translucent-foreground-quaternary);\n --ds-shimmer: var(--color-translucent-shimmer);\n}\n\n:host(.skeleton--surface-inverted) {\n --ds-skeleton-base: var(--color-inverted-foreground-quaternary);\n --ds-shimmer: var(--color-inverted-shimmer);\n}\n\n:host(.skeleton--surface-media) {\n --ds-skeleton-base: var(--color-media-foreground-quaternary);\n --ds-shimmer: var(--color-media-shimmer);\n}\n\n:host(.skeleton--surface-always-dark) {\n --ds-skeleton-base: var(--color-always-dark-foreground-quaternary);\n --ds-shimmer: var(--color-always-dark-shimmer);\n}\n\n:host(.skeleton--surface-navigation) {\n --ds-skeleton-base: var(--color-navigation-foreground-quaternary);\n --ds-shimmer: var(--color-navigation-shimmer);\n}\n\n/* ── Text ──────────────────────────────────────────────────────────────── */\n\n:host(.skeleton--text) {\n width: 100%;\n height: var(--ds-skeleton-canvas-size);\n padding-block: var(--dimension-space-025);\n}\n\n:host(.skeleton--text) .skeleton__shape {\n height: calc(var(--ds-skeleton-canvas-size) - var(--dimension-space-050));\n}\n\n:host(.skeleton--text-text-display-medium) { --ds-skeleton-canvas-size: var(--typography-lineheight-3xl); }\n:host(.skeleton--text-text-display-small) { --ds-skeleton-canvas-size: var(--typography-lineheight-2xl); }\n:host(.skeleton--text-text-title-large) { --ds-skeleton-canvas-size: var(--typography-lineheight-xl); }\n:host(.skeleton--text-text-title-medium),\n:host(.skeleton--text-text-body-large) { --ds-skeleton-canvas-size: var(--typography-lineheight-lg); }\n:host(.skeleton--text-text-title-small),\n:host(.skeleton--text-text-body-medium) { --ds-skeleton-canvas-size: var(--typography-lineheight-md); }\n:host(.skeleton--text-text-body-small) { --ds-skeleton-canvas-size: var(--typography-lineheight-sm); }\n:host(.skeleton--text-text-caption) { --ds-skeleton-canvas-size: var(--typography-lineheight-xs); }\n\n/* ── Icon ──────────────────────────────────────────────────────────────── */\n\n:host(.skeleton--icon) {\n width: var(--ds-skeleton-canvas-size);\n height: var(--ds-skeleton-canvas-size);\n padding: var(--dimension-space-025);\n}\n\n:host(.skeleton--icon) .skeleton__shape {\n width: calc(var(--ds-skeleton-canvas-size) - var(--dimension-space-050));\n height: calc(var(--ds-skeleton-canvas-size) - var(--dimension-space-050));\n}\n\n:host(.skeleton--icon.skeleton--rounded) .skeleton__shape {\n border-radius: var(--dimension-radius-half);\n}\n\n:host(.skeleton--icon-xs) { --ds-skeleton-canvas-size: var(--dimension-iconography-xs); }\n:host(.skeleton--icon-sm) { --ds-skeleton-canvas-size: var(--dimension-iconography-sm); }\n:host(.skeleton--icon-md) { --ds-skeleton-canvas-size: var(--dimension-iconography-md); }\n:host(.skeleton--icon-lg) { --ds-skeleton-canvas-size: var(--dimension-iconography-lg); }\n:host(.skeleton--icon-xl) { --ds-skeleton-canvas-size: var(--dimension-iconography-xl); }\n:host(.skeleton--icon-2xl) { --ds-skeleton-canvas-size: var(--dimension-iconography-2xl); }\n:host(.skeleton--icon-3xl) { --ds-skeleton-canvas-size: var(--dimension-iconography-3xl); }\n\n/* ── Control ───────────────────────────────────────────────────────────── */\n\n:host(.skeleton--control) {\n width: 100%;\n height: var(--ds-control-height);\n}\n\n:host(.skeleton--control.skeleton--rounded) .skeleton__shape {\n border-radius: var(--dimension-radius-half);\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { IconSize } from '../Icon/Icon';\nimport type { TextVariant } from '../Text/text-types';\nimport type { ControlSize } from '../../utils/control-text';\n\nexport type SkeletonVariant = 'text' | 'icon' | 'control';\nexport type SkeletonSurface =\n | 'default'\n | 'on-bold-background'\n | 'on-strong-background'\n | 'on-medium-background'\n | 'on-translucent-background'\n | 'navigation'\n | 'media'\n | 'always-dark'\n | 'inverted';\n\n@Component({\n tag: 'ds-skeleton',\n styleUrl: 'Skeleton.css',\n shadow: true,\n})\nexport class Skeleton {\n @Prop() variant: SkeletonVariant = 'text';\n /** Text metric recipe whose line-height defines the text canvas. */\n @Prop() textVariant: TextVariant = 'text-body-medium';\n /** Iconography token whose square canvas defines the icon canvas. */\n @Prop() iconSize: IconSize = 'md';\n /** Shared control-density size whose height defines the control canvas. */\n @Prop() controlSize: ControlSize = 'md';\n /** Width of text and control skeleton canvases. Numbers resolve to px. Ignored for icons. */\n @Prop() width: string | number | undefined;\n /** Round icon skeletons into circles and control skeletons into pills. Ignored for text. */\n @Prop() rounded: boolean = false;\n /** Whether to show the shimmer animation. */\n @Prop() shimmer: boolean = true;\n /** Surface context used to select the matching foreground base and shimmer tokens. */\n @Prop() surface: SkeletonSurface = 'default';\n\n private get widthCss() {\n const v = this.width;\n if (v == null) return undefined;\n return typeof v === 'number' ? `${v}px` : v;\n }\n\n render() {\n return (\n <Host\n aria-hidden=\"true\"\n class={{\n 'skeleton': true,\n [`skeleton--${this.variant}`]: true,\n [`skeleton--text-${this.textVariant}`]: this.variant === 'text',\n [`skeleton--icon-${this.iconSize}`]: this.variant === 'icon',\n [`ds-control--${this.controlSize}`]: this.variant === 'control',\n [`skeleton--surface-${this.surface}`]: true,\n 'skeleton--rounded': this.variant !== 'text' && this.rounded,\n }}\n style={this.variant === 'icon' ? undefined : { width: this.widthCss }}\n >\n <span\n class={{\n 'skeleton__shape': true,\n 'ds-shimmer-surface': this.shimmer,\n }}\n />\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAc,IAAM,kpP,MCsBbC,EAAQC,EAAA,MAAAD,UAAAE,EALrB,WAAAC,CAAAC,G,kEAMUC,KAAAC,QAA2B,OAE3BD,KAAAE,YAA2B,mBAE3BF,KAAAG,SAAqB,KAErBH,KAAAI,YAA2B,KAI3BJ,KAAAK,QAAmB,MAEnBL,KAAAM,QAAmB,KAEnBN,KAAAO,QAA2B,SAgCpC,CA9BC,YAAYC,GACV,MAAMC,EAAIT,KAAKU,MACf,GAAID,GAAK,KAAM,OAAOE,UACtB,cAAcF,IAAM,SAAW,GAAGA,MAAQA,C,CAG5C,MAAAG,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,yDACS,OACZC,MAAO,CACLC,SAAY,KACZ,CAAC,aAAajB,KAAKC,WAAY,KAC/B,CAAC,kBAAkBD,KAAKE,eAAgBF,KAAKC,UAAY,OACzD,CAAC,kBAAkBD,KAAKG,YAAaH,KAAKC,UAAY,OACtD,CAAC,eAAeD,KAAKI,eAAgBJ,KAAKC,UAAY,UACtD,CAAC,qBAAqBD,KAAKO,WAAY,KACvC,oBAAqBP,KAAKC,UAAY,QAAUD,KAAKK,SAEvDa,MAAOlB,KAAKC,UAAY,OAASU,UAAY,CAAED,MAAOV,KAAKQ,WAE3DK,EAAA,QAAAE,IAAA,2CACEC,MAAO,CACLG,gBAAmB,KACnB,qBAAsBnB,KAAKM,W","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["textVariantClass","variant","replace","textDisplayClass","element","textCss","Text","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","emphasis","italic","shimmer","lineTruncation","fontFeature","as","render","Tag","isCustomColor","c","startsWith","cls","wrap","color","decoration","align","style","undefined","extraProps","for","textId","h","Host","key","class"],"sources":["src/wc/components/Text/text-utils.ts","src/wc/components/Text/Text.css?tag=ds-text&encapsulation=scoped","src/wc/components/Text/Text.tsx"],"sourcesContent":["import type { TextElement, TextVariant } from './text-types';\n\n/** `text-body-medium` → `ds-text--body-medium` */\nexport function textVariantClass(variant: TextVariant): string {\n return `ds-text--${variant.replace(/^text-/, '')}`;\n}\n\n/** Inline semantics get a measurable inline box; paragraphs/headings get a block box. */\nexport function textDisplayClass(element: TextElement): string {\n return element === 'span' || element === 'label'\n ? 'ds-text--inline-box'\n : 'ds-text--block-box';\n}\n","@import '../../utils/typography.css';\n@import '../../utils/shimmer.css';\n\n:host {\n box-sizing: border-box;\n max-width: 100%;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n font-family: var(--typography-font-family);\n}\n\n:host(:where(.ds-text--inline-box)) {\n display: inline-block;\n}\n\n:host(:where(.ds-text--block-box)) {\n display: block;\n width: 100%;\n}\n\n/*\n * The host is the measurable typography box. The semantic inner element fills\n * it and inherits every text metric without adding margins, padding, or its own\n * line-height strut. One rendered line therefore measures exactly one token\n * line-height; N lines measure N × that token.\n */\n.ds-text__element {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n text-transform: inherit;\n text-align: inherit;\n text-decoration: inherit;\n font-style: inherit;\n font-variant-numeric: inherit;\n font-feature-settings: inherit;\n white-space: inherit;\n text-wrap: inherit;\n overflow-wrap: inherit;\n word-break: inherit;\n /* Consumer truncation on the host (PanelNav, ChartLegend, …) must reach the\n text node — overflow/text-overflow are not inherited by default. */\n overflow: inherit;\n text-overflow: inherit;\n}\n\n/* ── Truncation ─────────────────────────────────────────────────────────── */\n\n:host(.ds-text--truncate-1) {\n overflow: hidden;\n}\n\n:host(.ds-text--truncate-1) .ds-text__element {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n:host(.ds-text--truncate-2),\n:host(.ds-text--truncate-3),\n:host(.ds-text--truncate-4),\n:host(.ds-text--truncate-5) {\n overflow: hidden;\n}\n\n:host(.ds-text--truncate-2) .ds-text__element,\n:host(.ds-text--truncate-3) .ds-text__element,\n:host(.ds-text--truncate-4) .ds-text__element,\n:host(.ds-text--truncate-5) .ds-text__element {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n}\n\n:host(.ds-text--truncate-2) .ds-text__element { -webkit-line-clamp: 2; }\n:host(.ds-text--truncate-3) .ds-text__element { -webkit-line-clamp: 3; }\n:host(.ds-text--truncate-4) .ds-text__element { -webkit-line-clamp: 4; }\n:host(.ds-text--truncate-5) .ds-text__element { -webkit-line-clamp: 5; }\n\n/* ── Wrap ───────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--nowrap),\n:host(.ds-text--nowrap) .ds-text__element {\n white-space: nowrap;\n word-break: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n\n:host(.ds-text--balance),\n:host(.ds-text--balance) .ds-text__element { text-wrap: balance; }\n\n:host(.ds-text--pretty),\n:host(.ds-text--pretty) .ds-text__element { text-wrap: pretty; }\n\n/* ── Color ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--color-primary) { color: var(--color-foreground-primary); }\n:host(.ds-text--color-secondary) { color: var(--color-foreground-secondary); }\n:host(.ds-text--color-tertiary) { color: var(--color-foreground-tertiary); }\n:host(.ds-text--color-brand) { color: var(--color-foreground-bold-brand); }\n:host(.ds-text--color-negative) { color: var(--color-foreground-bold-negative); }\n:host(.ds-text--color-positive) { color: var(--color-foreground-bold-positive); }\n:host(.ds-text--color-warning) { color: var(--color-foreground-bold-warning); }\n:host(.ds-text--color-caution) { color: var(--color-foreground-bold-caution); }\n:host(.ds-text--color-ai) { color: var(--color-foreground-bold-ai); }\n:host(.ds-text--color-on-strong) { color: var(--color-foreground-on-strong-background-primary); }\n:host(.ds-text--color-on-bold) { color: var(--color-foreground-on-bold-background-primary); }\n:host(.ds-text--color-inherit) { color: inherit; }\n\n/* ── Decorations ─────────────────────────────────────────────────────────── */\n\n:host(.ds-text--decoration-underline) {\n text-decoration: underline;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\n:host(.ds-text--decoration-dotted-underline) {\n text-decoration: underline dotted;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\n/* ── Style ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--italic) { font-style: italic; }\n\n:host(.ds-text--font-feature-tabular-nums) {\n font-variant-numeric: tabular-nums;\n font-feature-settings: 'tnum';\n}\n\n/* ── Align ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--align-left) { text-align: left; }\n:host(.ds-text--align-center) { text-align: center; }\n:host(.ds-text--align-right) { text-align: right; }\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport { textDisplayClass, textVariantClass } from './text-utils';\nimport type {\n TextAlign,\n TextColor,\n TextDecoration,\n TextElement,\n TextFontFeature,\n TextVariant,\n LineTruncation,\n TextWrap,\n} from './text-types';\n\n@Component({\n tag: 'ds-text',\n styleUrl: 'Text.css',\n scoped: true,\n})\nexport class Text {\n @Prop() variant: TextVariant = 'text-body-medium';\n /**\n * Heavier weight + tighter letter-spacing for the variant.\n * `false` (default): one step below emphasis (display semibold, title/body\n * medium, caption medium).\n * `true`: display bold, title/caption semibold, body medium.\n */\n @Prop() emphasis: boolean = false;\n @Prop() color: TextColor | undefined;\n @Prop() decoration: TextDecoration | undefined;\n @Prop() italic: boolean = false;\n /** Animate the visible glyphs with the shared loading shimmer treatment. */\n @Prop() shimmer: boolean = false;\n @Prop() align: TextAlign | undefined;\n @Prop() lineTruncation: LineTruncation = 'none';\n @Prop() wrap: TextWrap | undefined;\n @Prop() fontFeature: TextFontFeature = 'normal';\n @Prop() as: TextElement = 'p';\n /** Maps to `for` attribute on <label> elements. */\n @Prop() for: string | undefined;\n /** Forwarded to the inner element (e.g. aria-labelledby targets). */\n @Prop() textId: string | undefined;\n\n render() {\n // Polymorphic element: TSX treats a variable tag as a component, so a\n // dynamic intrinsic element name must be cast to `any` to render.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Tag = this.as as any;\n const isCustomColor = (c: TextColor) => typeof c === 'string' && c.startsWith('var(--');\n\n const cls: Record<string, boolean> = {\n 'ds-text': true,\n [textDisplayClass(this.as)]: true,\n [textVariantClass(this.variant)]: true,\n 'ds-text--emphasis': this.emphasis,\n 'ds-text--regular': !this.emphasis,\n 'ds-text--nowrap': this.wrap === 'nowrap',\n 'ds-text--balance': this.wrap === 'balance',\n 'ds-text--pretty': this.wrap === 'pretty',\n 'ds-text--truncate-1': this.lineTruncation === 1 && this.wrap !== 'nowrap',\n 'ds-text--truncate-2': this.lineTruncation === 2 && this.wrap !== 'nowrap',\n 'ds-text--truncate-3': this.lineTruncation === 3 && this.wrap !== 'nowrap',\n 'ds-text--truncate-4': this.lineTruncation === 4 && this.wrap !== 'nowrap',\n 'ds-text--truncate-5': this.lineTruncation === 5 && this.wrap !== 'nowrap',\n 'ds-text--color-primary': this.color === 'primary',\n 'ds-text--color-secondary': this.color === 'secondary',\n 'ds-text--color-tertiary': this.color === 'tertiary',\n 'ds-text--color-brand': this.color === 'brand',\n 'ds-text--color-negative': this.color === 'negative',\n 'ds-text--color-positive': this.color === 'positive',\n 'ds-text--color-warning': this.color === 'warning',\n 'ds-text--color-caution': this.color === 'caution',\n 'ds-text--color-ai': this.color === 'ai',\n 'ds-text--color-on-strong': this.color === 'on-strong',\n 'ds-text--color-on-bold': this.color === 'on-bold',\n 'ds-text--color-inherit': this.color === 'inherit',\n 'ds-text--decoration-underline': this.decoration === 'underline',\n 'ds-text--decoration-dotted-underline': this.decoration === 'dotted-underline',\n 'ds-text--italic': this.italic,\n 'ds-text--align-left': this.align === 'left',\n 'ds-text--align-center': this.align === 'center',\n 'ds-text--align-right': this.align === 'right',\n 'ds-text--font-feature-tabular-nums': this.fontFeature === 'tabular-nums',\n };\n\n const style = this.color && isCustomColor(this.color)\n ? { color: this.color as string }\n : undefined;\n\n const extraProps: Record<string, string> = {};\n if (this.as === 'label' && this.for) extraProps['for'] = this.for;\n if (this.textId) extraProps['id'] = this.textId;\n\n return (\n <Host class={cls} style={style}>\n <Tag\n class={{\n 'ds-text__element': true,\n 'ds-shimmer-text': this.shimmer,\n }}\n {...extraProps}\n >\n <slot />\n </Tag>\n </Host>\n );\n }\n}\n"],"mappings":"2DAGM,SAAUA,EAAiBC,GAC/B,MAAO,YAAYA,EAAQC,QAAQ,SAAU,KAC/C,CAGM,SAAUC,EAAiBC,GAC/B,OAAOA,IAAY,QAAUA,IAAY,QACrC,sBACA,oBACN,CCZA,MAAMC,EAAU,IAAM,4lW,MCkBTC,EAAIC,EAAA,MAAAD,UAAAE,EALjB,WAAAC,CAAAC,G,4CAMUC,KAAAV,QAAuB,mBAOvBU,KAAAC,SAAoB,MAGpBD,KAAAE,OAAkB,MAElBF,KAAAG,QAAmB,MAEnBH,KAAAI,eAAiC,OAEjCJ,KAAAK,YAA+B,SAC/BL,KAAAM,GAAkB,GAsE3B,CAhEC,MAAAC,GAIE,MAAMC,EAAMR,KAAKM,GACjB,MAAMG,EAAiBC,UAAwBA,IAAM,UAAYA,EAAEC,WAAW,UAE9E,MAAMC,EAA+B,CACnC,UAAW,KACX,CAACpB,EAAiBQ,KAAKM,KAAM,KAC7B,CAACjB,EAAiBW,KAAKV,UAAW,KAClC,oBAAqBU,KAAKC,SAC1B,oBAAqBD,KAAKC,SAC1B,kBAAmBD,KAAKa,OAAS,SACjC,mBAAoBb,KAAKa,OAAS,UAClC,kBAAmBb,KAAKa,OAAS,SACjC,sBAAuBb,KAAKI,iBAAmB,GAAKJ,KAAKa,OAAS,SAClE,sBAAuBb,KAAKI,iBAAmB,GAAKJ,KAAKa,OAAS,SAClE,sBAAuBb,KAAKI,iBAAmB,GAAKJ,KAAKa,OAAS,SAClE,sBAAuBb,KAAKI,iBAAmB,GAAKJ,KAAKa,OAAS,SAClE,sBAAuBb,KAAKI,iBAAmB,GAAKJ,KAAKa,OAAS,SAClE,yBAA4Bb,KAAKc,QAAU,UAC3C,2BAA4Bd,KAAKc,QAAU,YAC3C,0BAA4Bd,KAAKc,QAAU,WAC3C,uBAA4Bd,KAAKc,QAAU,QAC3C,0BAA4Bd,KAAKc,QAAU,WAC3C,0BAA4Bd,KAAKc,QAAU,WAC3C,yBAA4Bd,KAAKc,QAAU,UAC3C,yBAA4Bd,KAAKc,QAAU,UAC3C,oBAA4Bd,KAAKc,QAAU,KAC3C,2BAA4Bd,KAAKc,QAAU,YAC3C,yBAA4Bd,KAAKc,QAAU,UAC3C,yBAA4Bd,KAAKc,QAAU,UAC3C,gCAAwCd,KAAKe,aAAe,YAC5D,uCAAwCf,KAAKe,aAAe,mBAC5D,kBAAmBf,KAAKE,OACxB,sBAAyBF,KAAKgB,QAAU,OACxC,wBAAyBhB,KAAKgB,QAAU,SACxC,uBAAyBhB,KAAKgB,QAAU,QACxC,qCAAsChB,KAAKK,cAAgB,gBAG7D,MAAMY,EAAQjB,KAAKc,OAASL,EAAcT,KAAKc,OAC3C,CAAEA,MAAOd,KAAKc,OACdI,UAEJ,MAAMC,EAAqC,GAC3C,GAAInB,KAAKM,KAAO,SAAWN,KAAKoB,IAAKD,EAAW,OAASnB,KAAKoB,IAC9D,GAAIpB,KAAKqB,OAAQF,EAAW,MAAQnB,KAAKqB,OAEzC,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAOb,EAAKK,MAAOA,GACvBK,EAACd,EAAG,CAAAgB,IAAA,2CACFC,MAAO,CACL,mBAAoB,KACpB,kBAAmBzB,KAAKG,YAEtBgB,GAEJG,EAAA,QAAAE,IAAA,8C","ignoreList":[]}