@ds-mo/ui 12.2.0 → 12.3.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.
- package/README.md +8 -2
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +6 -6
- package/dist/agent.json +530 -25
- package/dist/angular/ds-bar-title.d.ts +7 -1
- package/dist/angular/ds-bar-title.js +7 -4
- package/dist/angular/ds-breadcrumb.d.ts +19 -0
- package/dist/angular/ds-breadcrumb.js +42 -0
- package/dist/angular/ds-card-data-viz-bar.d.ts +18 -0
- package/dist/angular/ds-card-data-viz-bar.js +42 -0
- package/dist/angular/ds-card-data-viz-line.d.ts +18 -0
- package/dist/angular/ds-card-data-viz-line.js +42 -0
- package/dist/angular/ds-chart-bar-stacked.d.ts +12 -0
- package/dist/angular/ds-chart-bar-stacked.js +38 -0
- package/dist/angular/ds-chart-legend.d.ts +1 -1
- package/dist/angular/ds-chart-legend.js +3 -3
- package/dist/angular/ds-shell-page.d.ts +1 -1
- package/dist/angular/ds-shell-page.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +4 -0
- package/dist/angular/proxies.d.ts +4 -0
- package/dist/angular/proxies.js +4 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-title.js.map +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.d.ts +11 -0
- package/dist/components/ds-breadcrumb.js +2 -0
- package/dist/components/ds-breadcrumb.js.map +1 -0
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-data-viz-bar.d.ts +11 -0
- package/dist/components/ds-card-data-viz-bar.js +2 -0
- package/dist/components/ds-card-data-viz-bar.js.map +1 -0
- package/dist/components/ds-card-data-viz-donut.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js.map +1 -1
- package/dist/components/ds-card-data-viz-line.d.ts +11 -0
- package/dist/components/ds-card-data-viz-line.js +2 -0
- package/dist/components/ds-card-data-viz-line.js.map +1 -0
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-card-shell-data-viz.js +1 -1
- package/dist/components/ds-chart-bar-stacked.d.ts +11 -0
- package/dist/components/ds-chart-bar-stacked.js +2 -0
- package/dist/components/ds-chart-bar-stacked.js.map +1 -0
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-bar.js.map +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart-line.js +1 -1
- package/dist/components/ds-chart-line.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-bubble.js.map +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-scroll-overlay.js.map +1 -1
- package/dist/components/ds-select-multi.js +1 -1
- package/dist/components/ds-select-multi.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-page.js.map +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/ds-typing-indicator.js.map +1 -1
- package/dist/components/{p-DcGpdIlT.js → p-9dQQSgwT.js} +2 -2
- package/dist/components/p-B3rbhRAk.js +2 -0
- package/dist/components/p-B3rbhRAk.js.map +1 -0
- package/dist/components/{p-BWUTr_XN.js → p-BJMRBHKW.js} +2 -2
- package/dist/components/p-BJMRBHKW.js.map +1 -0
- package/dist/components/p-BVV_rlIP.js +2 -0
- package/dist/components/p-BVV_rlIP.js.map +1 -0
- package/dist/components/{p-GMDGgtY8.js → p-BhxwpOH8.js} +2 -2
- package/dist/components/{p-2W-ZjZCR.js → p-Bi_bxbih.js} +2 -2
- package/dist/components/{p-CG5EX4NW.js → p-BtEjlcB9.js} +2 -2
- package/dist/components/{p-C0_8K4y7.js → p-BwGnhInj.js} +2 -2
- package/dist/components/p-BwGnhInj.js.map +1 -0
- package/dist/components/p-C0NPJ0h2.js +2 -0
- package/dist/components/{p-BpA9uYKX.js.map → p-C0NPJ0h2.js.map} +1 -1
- package/dist/components/{p-D6jK2Hyi.js → p-C7bZ-jiU.js} +2 -2
- package/dist/components/p-CH3w-P2H.js +2 -0
- package/dist/components/p-CH3w-P2H.js.map +1 -0
- package/dist/components/{p-DOCKtrS4.js → p-CH6cNXXF.js} +2 -2
- package/dist/components/p-CWlh7HAg.js +2 -0
- package/dist/components/{p-8OOCLGph.js.map → p-CWlh7HAg.js.map} +1 -1
- package/dist/components/{p-BE_CDJeL.js → p-CY19gMiz.js} +2 -2
- package/dist/components/p-C_ewSXTT.js +2 -0
- package/dist/components/p-C_ewSXTT.js.map +1 -0
- package/dist/components/{p-CHkI3oIS.js → p-Ce52yVXF.js} +2 -2
- package/dist/components/{p-xY3TjBF5.js → p-CoYFJD-w.js} +2 -2
- package/dist/components/{p-DBi1bmOL.js → p-Cuw2Lo2g.js} +2 -2
- package/dist/components/{p-BRLDJmkh.js → p-D-xttdpn.js} +2 -2
- package/dist/components/{p-CCHqsF_H.js → p-D3DYxbC5.js} +2 -2
- package/dist/components/{p-Cxpl-rzP.js → p-DC7yOUQx.js} +2 -2
- package/dist/components/{p-CNffejay.js → p-DSa0Hnd3.js} +2 -2
- package/dist/components/p-DXewjzkM.js +2 -0
- package/dist/components/p-DXewjzkM.js.map +1 -0
- package/dist/components/{p-DyGB97Oy.js → p-DYqReipj.js} +2 -2
- package/dist/components/{p-ky1msbJ8.js → p-DjPZxzIG.js} +2 -2
- package/dist/components/{p-ky1msbJ8.js.map → p-DjPZxzIG.js.map} +1 -1
- package/dist/components/p-J6xK6Ihq.js +2 -0
- package/dist/components/p-jCWtxthA.js +2 -0
- package/dist/components/{p-XgIQ3oI_.js.map → p-jCWtxthA.js.map} +1 -1
- package/dist/docs/components.json +956 -145
- package/dist/lib/utils/index.js +3 -1
- package/dist/lib/utils/index.js.map +2 -2
- package/dist/mcp/cli.js +142 -18
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +68 -14
- package/dist/mcp-data/registry/breadcrumb.json +205 -0
- package/dist/mcp-data/registry/card-data-viz-bar.json +212 -0
- package/dist/mcp-data/registry/card-data-viz-line.json +206 -0
- package/dist/mcp-data/registry/card-shell-data-viz.json +7 -0
- package/dist/mcp-data/registry/chart-bar-stacked.json +225 -0
- package/dist/mcp-data/registry/chart-bar.json +9 -2
- package/dist/mcp-data/registry/chart-legend.json +29 -3
- package/dist/mcp-data/registry/chart-line.json +4 -2
- package/dist/mcp-data/registry/conversation-list-item.json +2 -2
- package/dist/mcp-data/registry/message-scroller.json +4 -2
- package/dist/mcp-data/registry/message.json +3 -2
- package/dist/mcp-data/registry/registry.json +541 -24
- package/dist/mcp-data/registry/shell-page.json +31 -13
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +7 -7
- package/dist/react/components.d.ts +4 -0
- package/dist/react/components.js +4 -0
- package/dist/react/ds-bar-title.d.ts +2 -1
- package/dist/react/ds-bar-title.js +1 -0
- package/dist/react/ds-breadcrumb.d.ts +12 -0
- package/dist/react/ds-breadcrumb.js +12 -0
- package/dist/react/ds-card-data-viz-bar.d.ts +12 -0
- package/dist/react/ds-card-data-viz-bar.js +12 -0
- package/dist/react/ds-card-data-viz-line.d.ts +12 -0
- package/dist/react/ds-card-data-viz-line.js +12 -0
- package/dist/react/ds-chart-bar-stacked.d.ts +9 -0
- package/dist/react/ds-chart-bar-stacked.js +12 -0
- package/dist/styles/prose.css +1 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +13 -1
- package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +31 -0
- package/dist/types/components/Breadcrumb/breadcrumb-types.d.ts +17 -0
- package/dist/types/components/CardDataVizBar/CardDataVizBar.d.ts +24 -0
- package/dist/types/components/CardDataVizBar/index.d.ts +2 -0
- package/dist/types/components/CardDataVizLine/CardDataVizLine.d.ts +24 -0
- package/dist/types/components/CardDataVizLine/index.d.ts +2 -0
- package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +15 -0
- package/dist/types/components/ChartBarStacked/index.d.ts +3 -0
- package/dist/types/components/ChartLegend/ChartLegend.d.ts +3 -0
- package/dist/types/components/ShellPage/ShellPage.d.ts +19 -7
- package/dist/types/components/ShellPage/shell-page-responsive.d.ts +0 -8
- package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +1 -1
- package/dist/types/components.d.ts +339 -10
- package/package.json +1 -1
- package/dist/components/p-8OOCLGph.js +0 -2
- package/dist/components/p-B8CubPgQ.js +0 -2
- package/dist/components/p-BWUTr_XN.js.map +0 -1
- package/dist/components/p-BpA9uYKX.js +0 -2
- package/dist/components/p-C0_8K4y7.js.map +0 -1
- package/dist/components/p-CA3kLO7K.js +0 -2
- package/dist/components/p-CA3kLO7K.js.map +0 -1
- package/dist/components/p-CzBnvtcz.js +0 -2
- package/dist/components/p-CzBnvtcz.js.map +0 -1
- package/dist/components/p-XgIQ3oI_.js +0 -2
- /package/dist/components/{p-DcGpdIlT.js.map → p-9dQQSgwT.js.map} +0 -0
- /package/dist/components/{p-GMDGgtY8.js.map → p-BhxwpOH8.js.map} +0 -0
- /package/dist/components/{p-2W-ZjZCR.js.map → p-Bi_bxbih.js.map} +0 -0
- /package/dist/components/{p-CG5EX4NW.js.map → p-BtEjlcB9.js.map} +0 -0
- /package/dist/components/{p-D6jK2Hyi.js.map → p-C7bZ-jiU.js.map} +0 -0
- /package/dist/components/{p-DOCKtrS4.js.map → p-CH6cNXXF.js.map} +0 -0
- /package/dist/components/{p-BE_CDJeL.js.map → p-CY19gMiz.js.map} +0 -0
- /package/dist/components/{p-CHkI3oIS.js.map → p-Ce52yVXF.js.map} +0 -0
- /package/dist/components/{p-xY3TjBF5.js.map → p-CoYFJD-w.js.map} +0 -0
- /package/dist/components/{p-DBi1bmOL.js.map → p-Cuw2Lo2g.js.map} +0 -0
- /package/dist/components/{p-BRLDJmkh.js.map → p-D-xttdpn.js.map} +0 -0
- /package/dist/components/{p-CCHqsF_H.js.map → p-D3DYxbC5.js.map} +0 -0
- /package/dist/components/{p-Cxpl-rzP.js.map → p-DC7yOUQx.js.map} +0 -0
- /package/dist/components/{p-CNffejay.js.map → p-DSa0Hnd3.js.map} +0 -0
- /package/dist/components/{p-DyGB97Oy.js.map → p-DYqReipj.js.map} +0 -0
- /package/dist/components/{p-B8CubPgQ.js.map → p-J6xK6Ihq.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["computeMenuPosition","computeAnchoredPopupPosition","isMenuGradientPickerSection","section","variant","isMenuSwatchPickerSection","isMenuPickerSection","menuCss","POSITION_RETRY_BUDGET","MENU_FOCUSABLE_SELECTOR","join","snapshotMenuSections","sections","map","options","option","swatchSection","items","item","Menu","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","open","selectionMode","side","align","anchorAlignment","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","initialFocusVisible","menuLabel","shouldRender","closing","pos","x","y","focusedIndex","positionReady","focusRingVisible","clickOutsideHandler","scrollResizeHandler","closeTimer","positionRetryRaf","livePositionRaf","lastRenderedSections","closingSections","componentDidLoad","onOpenChange","componentDidRender","popup","el","querySelector","showPopover","matches","disconnectedCallback","cancelPositionRetry","cancelLivePositionUpdate","teardownListeners","isOpen","setupListeners","schedulePositionUpdate","focusInitialItem","captureClosingSections","closeAnimationMs","finishClose","setTimeout","onAnchorChange","onPositionPropsChange","viewportPadPx","resolveCssLengthPx","TOKEN_DEFAULTS","sideOffsetPx","alignOffsetPx","popupFallbackWidthPx","menuWidthXs","popupFallbackHeightPx","menuFallbackHeight","resolveMotionTimeMs","motionShort2","animationDurationShort3","hidePopover","dsAfterClose","emit","visibleSections","length","activeSections","resolvedAnchor","anchor","anchorId","document","getElementById","anchorFocusTarget","focusAnchor","setFocus","focus","moveFocusAfterTab","backwards","candidates","Array","from","querySelectorAll","filter","element","closest","getClientRects","index","indexOf","compositeTabLeavesPopup","event","focusables","currentIndex","target","shiftKey","flatItems","flatMap","hasCompositeSections","some","cancelAnimationFrame","scheduleLivePositionUpdate","requestAnimationFrame","calculatePosition","onReady","remaining","attempt","anchorEl","anchorRect","getBoundingClientRect","sectionInsetPx","minWidth","style","choicePopupMinWidth","width","removeProperty","next","popupWidth","offsetWidth","popupHeight","offsetHeight","resolveChoicePopupAlignOffset","viewportWidth","window","innerWidth","viewportHeight","innerHeight","flat","selectedIdx","findIndex","it","isSelected","isInactive","firstEnabledIdx","btns","e","t","contains","close","addEventListener","removeEventListener","clearTimeout","restoreFocus","dsClose","handleKeyDown","key","preventDefault","enabled","i","cur","safe","stopPropagation","focusItem","idx","handleItemClick","dsSelect","handleGradientSelect","preset","dsGradientSelect","handleSwatchSelect","value","dsSwatchSelect","render","h","Host","display","flatIdx","popupStyle","position","left","top","transform","Math","round","zIndex","visibility","menuWidth","popover","class","role","undefined","si","header","as","emphasis","color","groupLabel","shellGradientPickerSections","onDsChange","detail","isFocused","isRadioItem","showSwitch","type","isDestructive","String","switchValue","disabled","tabIndex","onMouseDown","onClick","onFocus","label","subtext","dot","hasRing","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":["import {\n computeAnchoredPopupPosition,\n type AnchoredPopupAlign,\n type AnchoredPopupPositionInput,\n type AnchoredPopupSide,\n} from '../../utils/anchored-popup';\n\nexport type MenuSide = AnchoredPopupSide;\nexport type MenuAlign = AnchoredPopupAlign;\nexport type MenuPositionInput = AnchoredPopupPositionInput;\n\n/** Backward-compatible menu alias for the shared anchored-popup layout math. */\nexport const computeMenuPosition = computeAnchoredPopupPosition;\n","import type { ShellGradientPreset } from '../../shell/shell-gradient-presets';\nimport type { SwatchPickerOption, SwatchPickerSection } from '../SwatchPicker/swatch-picker-types';\n\nexport type { MenuAlign, MenuSide } from './menu-position';\nexport {\n PANEL_NAV_USER_MENU_PLACEMENT,\n PANEL_TOOLS_HEADER_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 /** @deprecated Use the generic `swatch-picker` section. */\n variant: 'gradient-picker';\n value: ShellGradientPreset;\n}\n\nexport interface MenuSwatchPickerSection {\n header?: string;\n variant: 'swatch-picker';\n value: string;\n options?: SwatchPickerOption[];\n sections?: SwatchPickerSection[];\n groupLabel?: string;\n}\n\nexport type MenuSection =\n | MenuItemsSection\n | MenuGradientPickerSection\n | MenuSwatchPickerSection;\n\nexport function isMenuGradientPickerSection(\n section: MenuSection,\n): section is MenuGradientPickerSection {\n return 'variant' in section && section.variant === 'gradient-picker';\n}\n\nexport function isMenuSwatchPickerSection(\n section: MenuSection,\n): section is MenuSwatchPickerSection {\n return 'variant' in section && section.variant === 'swatch-picker';\n}\n\nexport function isMenuPickerSection(\n section: MenuSection,\n): section is MenuGradientPickerSection | MenuSwatchPickerSection {\n return isMenuGradientPickerSection(section) || isMenuSwatchPickerSection(section);\n}\n\nexport type { ShellGradientPreset };\nexport type { SwatchPickerOption, SwatchPickerSection };\n","@import '../../utils/choice-list.css';\n\n/* Inactive: `.ds-control-inactive` (50% 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/* 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\n/* ── Single-selection radio indicator ───────────────────────────────────── */\n\n.menu-item__radio-box {\n display: inline-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.menu-item__radio {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-iconography-sm);\n height: var(--dimension-iconography-sm);\n border-radius: var(--dimension-radius-half);\n box-shadow: inset 0 0 0 var(--dimension-stroke-width-015) var(--color-foreground-tertiary);\n}\n\n.menu-item__radio--checked {\n background-color: var(--color-background-bold-brand);\n box-shadow: none;\n}\n\n.menu-item__radio-dot {\n width: var(--dimension-size-100);\n height: var(--dimension-size-100);\n border-radius: var(--dimension-radius-half);\n background-color: var(--color-foreground-on-bold-background-primary);\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Watch,\n Listen,\n h,\n Host,\n} from '@stencil/core';\nimport {\n choicePopupMinWidth,\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n type ChoicePopupAnchorAlignment,\n} from '../../utils';\nimport { computeMenuPosition, type MenuAlign, type MenuSide } from './menu-position';\nimport type { MenuItemData, MenuSection } from './menu-types';\n\nexport type MenuSelectionMode = 'none' | 'single';\nimport {\n isMenuGradientPickerSection,\n isMenuPickerSection,\n isMenuSwatchPickerSection,\n} from './menu-types';\nimport {\n shellGradientPickerSections,\n type ShellGradientPreset,\n} from '../../shell/shell-gradient-presets';\n\n/** rAF retries while the popup mounts or the anchor resolves. */\nconst POSITION_RETRY_BUDGET = 8;\nconst MENU_FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nfunction snapshotMenuSections(sections: MenuSection[]): MenuSection[] {\n return sections.map(section => {\n if (isMenuGradientPickerSection(section)) return { ...section };\n if (isMenuSwatchPickerSection(section)) {\n return {\n ...section,\n options: section.options?.map(option => ({ ...option })),\n sections: section.sections?.map(swatchSection => ({\n ...swatchSection,\n options: swatchSection.options.map(option => ({ ...option })),\n })),\n };\n }\n return { ...section, items: section.items.map(item => ({ ...item })) };\n });\n}\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 /** Give ordinary rows mutually-exclusive radio-menu semantics using isSelected. */\n @Prop() selectionMode: MenuSelectionMode = 'none';\n @Prop() sections: MenuSection[] = [];\n /** Preferred side; placement flips to the opposite side when that offers a better fit. */\n @Prop() side: MenuSide = 'bottom';\n @Prop() align: MenuAlign = 'start';\n /** Align choice-row edges to the anchor by default; use `popup-frame` only for custom frame geometry. */\n @Prop() anchorAlignment: ChoicePopupAnchorAlignment = 'choice-cell';\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 /** Emitted after the popup's exit motion is complete and its rendered content is removed. */\n @Event() dsAfterClose!: EventEmitter<void>;\n @Event() dsSelect!: EventEmitter<MenuItemData>;\n /** Emitted when a `gradient-picker` section swatch is chosen. */\n @Event() dsGradientSelect!: EventEmitter<ShellGradientPreset>;\n /** Emitted when a generic `swatch-picker` section option is chosen. */\n @Event() dsSwatchSelect!: EventEmitter<string>;\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 positionRetryRaf: number | null = null;\n private livePositionRaf: number | null = null;\n /** Last content actually painted while open; retained unchanged through exit motion. */\n private lastRenderedSections: MenuSection[] = [];\n private closingSections: MenuSection[] | null = null;\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n componentDidRender() {\n if (!this.shouldRender) return;\n const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (!popup || typeof popup.showPopover !== 'function') return;\n if (!popup.matches(':popover-open')) popup.showPopover();\n }\n\n disconnectedCallback() {\n this.cancelPositionRetry();\n this.cancelLivePositionUpdate();\n this.teardownListeners();\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.teardownListeners();\n this.closingSections = null;\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.focusRingVisible = this.initialFocusVisible;\n this.setupListeners();\n this.schedulePositionUpdate(() => {\n this.focusInitialItem();\n });\n } else if (this.shouldRender) {\n this.cancelPositionRetry();\n this.captureClosingSections();\n this.closing = true;\n this.teardownListeners();\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('anchorAlignment')\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 const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.lastRenderedSections = [];\n this.closingSections = null;\n this.dsAfterClose.emit();\n }\n\n private captureClosingSections() {\n if (this.closingSections) return;\n const visibleSections = this.lastRenderedSections.length\n ? this.lastRenderedSections\n : this.activeSections;\n this.closingSections = snapshotMenuSections(visibleSections);\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 anchorFocusTarget(): HTMLElement | null {\n const anchor = this.resolvedAnchor;\n if (!anchor) return null;\n if (anchor.matches(MENU_FOCUSABLE_SELECTOR)) return anchor;\n return anchor.querySelector<HTMLElement>(MENU_FOCUSABLE_SELECTOR) ?? anchor;\n }\n\n private focusAnchor() {\n const anchor = this.resolvedAnchor as\n | (HTMLElement & { setFocus?: () => Promise<void> | void })\n | null;\n if (anchor?.setFocus) {\n anchor.setFocus();\n return;\n }\n this.anchorFocusTarget?.focus();\n }\n\n private moveFocusAfterTab(backwards: boolean) {\n const anchor = this.anchorFocusTarget;\n if (!anchor) return;\n if (backwards) {\n anchor.focus();\n return;\n }\n\n const candidates = Array.from(\n document.querySelectorAll<HTMLElement>(MENU_FOCUSABLE_SELECTOR)\n ).filter(\n element =>\n !element.closest('.menu-popup') &&\n !element.closest('[inert]') &&\n element.getClientRects().length > 0\n );\n const index = candidates.indexOf(anchor);\n (candidates[index + 1] ?? anchor).focus();\n }\n\n private compositeTabLeavesPopup(event: KeyboardEvent): boolean {\n const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (!popup) return true;\n const focusables = Array.from(\n popup.querySelectorAll<HTMLElement>(MENU_FOCUSABLE_SELECTOR)\n ).filter(element => element.getClientRects().length > 0);\n const currentIndex = focusables.indexOf(event.target as HTMLElement);\n if (currentIndex < 0) return true;\n return event.shiftKey ? currentIndex === 0 : currentIndex === focusables.length - 1;\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 isMenuPickerSection(section) ? [] : section.items\n );\n }\n\n /** Rich preference content is a non-modal dialog, not an ARIA action menu. */\n private get hasCompositeSections(): boolean {\n return this.activeSections.some(isMenuPickerSection);\n }\n\n private cancelPositionRetry() {\n if (this.positionRetryRaf !== null) {\n cancelAnimationFrame(this.positionRetryRaf);\n this.positionRetryRaf = null;\n }\n }\n\n private cancelLivePositionUpdate() {\n if (this.livePositionRaf !== null) {\n cancelAnimationFrame(this.livePositionRaf);\n this.livePositionRaf = null;\n }\n }\n\n /** Reposition after the current scroll/layout frame without hiding the open popup. */\n private scheduleLivePositionUpdate() {\n if (this.livePositionRaf !== null) return;\n this.livePositionRaf = requestAnimationFrame(() => {\n if (this.shouldRender && !this.closing) this.calculatePosition();\n // Scroll-driven owners such as ShellPage may commit their compact header\n // render in this frame. Re-read once after that render, then stop tracking.\n this.livePositionRaf = requestAnimationFrame(() => {\n this.livePositionRaf = null;\n if (this.shouldRender && !this.closing) this.calculatePosition();\n });\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 const anchorRect = anchorEl.getBoundingClientRect();\n const sectionInsetPx = this.viewportPadPx;\n if (!this.minWidth) {\n if (\n this.anchorAlignment === 'choice-cell' &&\n (this.side === 'top' || this.side === 'bottom')\n ) {\n popup.style.minWidth = `max(var(--dimension-menu-width-xs), ${choicePopupMinWidth(\n anchorRect.width,\n sectionInsetPx\n )}px)`;\n } else {\n popup.style.removeProperty('min-width');\n }\n }\n\n const next = computeMenuPosition({\n anchorRect,\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: resolveChoicePopupAlignOffset({\n align: this.align,\n alignOffsetPx: this.alignOffsetPx,\n sectionInsetPx,\n anchorAlignment: this.anchorAlignment,\n }),\n viewportPadPx: this.viewportPadPx,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n if (next.x !== this.pos.x || next.y !== this.pos.y) this.pos = next;\n return true;\n }\n\n /** Focus the selected item when present, otherwise the first enabled item. */\n private focusInitialItem() {\n if (this.hasCompositeSections) {\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>('.menu-popup [tabindex=\"0\"]')?.focus();\n });\n return;\n }\n\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 ? selectedIdx : 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 = () => this.scheduleLivePositionUpdate();\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 this.cancelLivePositionUpdate();\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(restoreFocus = true) {\n this.captureClosingSections();\n if (restoreFocus) this.focusAnchor();\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\n if (e.key === 'Escape') {\n e.preventDefault();\n this.close();\n return;\n }\n\n if (e.key === 'Tab') {\n if (this.hasCompositeSections && !this.compositeTabLeavesPopup(e)) return;\n e.preventDefault();\n this.close(false);\n this.moveFocusAfterTab(e.shiftKey);\n return;\n }\n\n if (this.hasCompositeSections) return;\n\n const flat = this.flatItems;\n const enabled = flat\n .map((it, i) => ({ it, i }))\n .filter(({ it }) => !it.isInactive)\n .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();\n 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();\n 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();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[0];\n this.focusItem(this.focusedIndex);\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[enabled.length - 1];\n this.focusItem(this.focusedIndex);\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 // Consumers commonly change the item source while handling selection.\n // Capture first so the exit animation never paints the next menu context.\n this.captureClosingSections();\n this.dsSelect.emit(item);\n }\n\n private handleGradientSelect(preset: ShellGradientPreset) {\n this.dsGradientSelect.emit(preset);\n }\n\n private handleSwatchSelect(value: string) {\n this.dsSwatchSelect.emit(value);\n }\n\n render() {\n if (!this.shouldRender) return <Host style={{ display: 'contents' }} />;\n\n const sections = this.closing\n ? (this.closingSections ?? this.lastRenderedSections)\n : this.activeSections;\n const hasCompositeSections = sections.some(isMenuPickerSection);\n if (!this.closing) {\n this.lastRenderedSections = snapshotMenuSections(sections);\n this.closingSections = null;\n }\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 popover=\"manual\"\n class={{\n 'menu-popup': true,\n 'menu-popup--closing': this.closing,\n 'ds-choice-popup': true,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={popupStyle}\n role={hasCompositeSections ? 'dialog' : 'menu'}\n aria-label={this.menuLabel}\n aria-orientation={hasCompositeSections ? undefined : 'vertical'}\n >\n <div class=\"ds-choice-list\">\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': isMenuPickerSection(section),\n 'ds-choice-section': true,\n 'ds-choice-section--divided': si < sections.length - 1,\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class=\"section-header ds-choice-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-swatch-picker\n value={section.value}\n groupLabel={section.header ?? 'Shell gradient theme'}\n sections={shellGradientPickerSections()}\n onDsChange={(e: CustomEvent<string>) => {\n e.stopPropagation();\n this.handleGradientSelect(e.detail as ShellGradientPreset);\n }}\n />\n ) : isMenuSwatchPickerSection(section) ? (\n <ds-swatch-picker\n value={section.value}\n groupLabel={section.groupLabel ?? section.header ?? 'Swatch options'}\n options={section.options ?? []}\n sections={section.sections ?? []}\n onDsChange={(e: CustomEvent<string>) => {\n e.stopPropagation();\n this.handleSwatchSelect(e.detail);\n }}\n />\n ) : (\n section.items.map(item => {\n const idx = flatIdx++;\n const isFocused = this.focusedIndex === idx;\n const isRadioItem =\n !hasCompositeSections &&\n this.selectionMode === 'single' &&\n !item.showSwitch;\n return (\n <button\n key={idx}\n type=\"button\"\n class={{\n 'menu-item': true,\n 'ds-choice-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={\n hasCompositeSections\n ? undefined\n : item.showSwitch\n ? 'menuitemcheckbox'\n : isRadioItem\n ? 'menuitemradio'\n : 'menuitem'\n }\n aria-checked={\n !hasCompositeSections && item.showSwitch\n ? String(!!item.switchValue)\n : isRadioItem\n ? String(!!item.isSelected)\n : undefined\n }\n aria-pressed={\n hasCompositeSections\n ? String(item.showSwitch ? !!item.switchValue : !!item.isSelected)\n : undefined\n }\n aria-current={\n !hasCompositeSections &&\n !item.showSwitch &&\n !isRadioItem &&\n item.isSelected\n ? 'true'\n : undefined\n }\n disabled={item.isInactive}\n tabIndex={hasCompositeSections ? 0 : isFocused ? 0 : -1}\n onMouseDown={() => {\n this.focusRingVisible = false;\n }}\n onClick={() => this.handleItemClick(item)}\n onFocus={() => {\n this.focusedIndex = idx;\n }}\n >\n {isRadioItem && (\n <span\n class=\"menu-item__radio-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <span\n class={{\n 'menu-item__radio': true,\n 'menu-item__radio--checked': !!item.isSelected,\n }}\n >\n {item.isSelected && <span class=\"menu-item__radio-dot\" />}\n </span>\n </span>\n )}\n <div class=\"menu-item__content ds-choice-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"menu-item__label ds-choice-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\n class=\"menu-item__subtext ds-choice-item__subtext\"\n as=\"span\"\n variant=\"text-body-small\"\n color=\"secondary\"\n >\n {item.subtext}\n </ds-text>\n )}\n </div>\n {item.dot && (\n <span\n class=\"menu-item__dot-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-badge\n class=\"menu-item__dot\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n />\n </span>\n )}\n {item.showSwitch && (\n <ds-switch\n class=\"menu-item__switch ds-interaction-fill__content\"\n size=\"md\"\n checked={!!item.switchValue}\n presentation\n />\n )}\n </button>\n );\n })\n )}\n </div>\n ))}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["computeMenuPosition","computeAnchoredPopupPosition","isMenuGradientPickerSection","section","variant","isMenuSwatchPickerSection","isMenuPickerSection","menuCss","POSITION_RETRY_BUDGET","MENU_FOCUSABLE_SELECTOR","join","snapshotMenuSections","sections","map","options","option","swatchSection","items","item","Menu","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","open","selectionMode","side","align","anchorAlignment","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","initialFocusVisible","menuLabel","shouldRender","closing","pos","x","y","focusedIndex","positionReady","focusRingVisible","clickOutsideHandler","scrollResizeHandler","closeTimer","positionRetryRaf","livePositionRaf","lastRenderedSections","closingSections","componentDidLoad","onOpenChange","componentDidRender","popup","el","querySelector","showPopover","matches","disconnectedCallback","cancelPositionRetry","cancelLivePositionUpdate","teardownListeners","isOpen","setupListeners","schedulePositionUpdate","focusInitialItem","captureClosingSections","closeAnimationMs","finishClose","setTimeout","onAnchorChange","onPositionPropsChange","viewportPadPx","resolveCssLengthPx","TOKEN_DEFAULTS","sideOffsetPx","alignOffsetPx","popupFallbackWidthPx","menuWidthXs","popupFallbackHeightPx","menuFallbackHeight","resolveMotionTimeMs","motionShort2","animationDurationShort3","hidePopover","dsAfterClose","emit","visibleSections","length","activeSections","resolvedAnchor","anchor","anchorId","document","getElementById","anchorFocusTarget","focusAnchor","setFocus","focus","moveFocusAfterTab","backwards","candidates","Array","from","querySelectorAll","filter","element","closest","getClientRects","index","indexOf","compositeTabLeavesPopup","event","focusables","currentIndex","target","shiftKey","flatItems","flatMap","hasCompositeSections","some","cancelAnimationFrame","scheduleLivePositionUpdate","requestAnimationFrame","calculatePosition","onReady","remaining","attempt","anchorEl","anchorRect","getBoundingClientRect","sectionInsetPx","minWidth","style","choicePopupMinWidth","width","removeProperty","next","popupWidth","offsetWidth","popupHeight","offsetHeight","resolveChoicePopupAlignOffset","viewportWidth","window","innerWidth","viewportHeight","innerHeight","flat","selectedIdx","findIndex","it","isSelected","isInactive","firstEnabledIdx","btns","e","t","contains","close","addEventListener","removeEventListener","clearTimeout","restoreFocus","dsClose","handleKeyDown","key","preventDefault","enabled","i","cur","safe","stopPropagation","focusItem","idx","handleItemClick","dsSelect","handleGradientSelect","preset","dsGradientSelect","handleSwatchSelect","value","dsSwatchSelect","render","h","Host","display","flatIdx","popupStyle","position","left","top","transform","Math","round","zIndex","visibility","menuWidth","popover","class","role","undefined","si","header","as","emphasis","color","groupLabel","shellGradientPickerSections","onDsChange","detail","isFocused","isRadioItem","showSwitch","type","isDestructive","String","switchValue","disabled","tabIndex","onMouseDown","onClick","onFocus","label","subtext","dot","hasRing","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":["import {\n computeAnchoredPopupPosition,\n type AnchoredPopupAlign,\n type AnchoredPopupPositionInput,\n type AnchoredPopupSide,\n} from '../../utils/anchored-popup';\n\nexport type MenuSide = AnchoredPopupSide;\nexport type MenuAlign = AnchoredPopupAlign;\nexport type MenuPositionInput = AnchoredPopupPositionInput;\n\n/** Backward-compatible menu alias for the shared anchored-popup layout math. */\nexport const computeMenuPosition = computeAnchoredPopupPosition;\n","import type { ShellGradientPreset } from '../../shell/shell-gradient-presets';\nimport type { SwatchPickerOption, SwatchPickerSection } from '../SwatchPicker/swatch-picker-types';\n\nexport type { MenuAlign, MenuSide } from './menu-position';\nexport {\n PANEL_NAV_USER_MENU_PLACEMENT,\n PANEL_TOOLS_HEADER_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 /** @deprecated Use the generic `swatch-picker` section. */\n variant: 'gradient-picker';\n value: ShellGradientPreset;\n}\n\nexport interface MenuSwatchPickerSection {\n header?: string;\n variant: 'swatch-picker';\n value: string;\n options?: SwatchPickerOption[];\n sections?: SwatchPickerSection[];\n groupLabel?: string;\n}\n\nexport type MenuSection =\n | MenuItemsSection\n | MenuGradientPickerSection\n | MenuSwatchPickerSection;\n\nexport function isMenuGradientPickerSection(\n section: MenuSection,\n): section is MenuGradientPickerSection {\n return 'variant' in section && section.variant === 'gradient-picker';\n}\n\nexport function isMenuSwatchPickerSection(\n section: MenuSection,\n): section is MenuSwatchPickerSection {\n return 'variant' in section && section.variant === 'swatch-picker';\n}\n\nexport function isMenuPickerSection(\n section: MenuSection,\n): section is MenuGradientPickerSection | MenuSwatchPickerSection {\n return isMenuGradientPickerSection(section) || isMenuSwatchPickerSection(section);\n}\n\nexport type { ShellGradientPreset };\nexport type { SwatchPickerOption, SwatchPickerSection };\n","@import '../../utils/choice-list.css';\n\n/* Inactive: `.ds-control-inactive` (50% 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/* 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\n/* ── Single-selection radio indicator ───────────────────────────────────── */\n\n.menu-item__radio-box {\n display: inline-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.menu-item__radio {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-iconography-sm);\n height: var(--dimension-iconography-sm);\n border-radius: var(--dimension-radius-half);\n box-shadow: inset 0 0 0 var(--dimension-stroke-width-015) var(--color-foreground-tertiary);\n}\n\n.menu-item__radio--checked {\n background-color: var(--color-background-bold-brand);\n box-shadow: none;\n}\n\n.menu-item__radio-dot {\n width: var(--dimension-size-100);\n height: var(--dimension-size-100);\n border-radius: var(--dimension-radius-half);\n background-color: var(--color-foreground-on-bold-background-primary);\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Watch,\n Listen,\n h,\n Host,\n} from '@stencil/core';\nimport {\n choicePopupMinWidth,\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n type ChoicePopupAnchorAlignment,\n} from '../../utils';\nimport { computeMenuPosition, type MenuAlign, type MenuSide } from './menu-position';\nimport type { MenuItemData, MenuSection } from './menu-types';\n\nexport type MenuSelectionMode = 'none' | 'single';\nimport {\n isMenuGradientPickerSection,\n isMenuPickerSection,\n isMenuSwatchPickerSection,\n} from './menu-types';\nimport {\n shellGradientPickerSections,\n type ShellGradientPreset,\n} from '../../shell/shell-gradient-presets';\n\n/** rAF retries while the popup mounts or the anchor resolves. */\nconst POSITION_RETRY_BUDGET = 8;\nconst MENU_FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nfunction snapshotMenuSections(sections: MenuSection[]): MenuSection[] {\n return sections.map(section => {\n if (isMenuGradientPickerSection(section)) return { ...section };\n if (isMenuSwatchPickerSection(section)) {\n return {\n ...section,\n options: section.options?.map(option => ({ ...option })),\n sections: section.sections?.map(swatchSection => ({\n ...swatchSection,\n options: swatchSection.options.map(option => ({ ...option })),\n })),\n };\n }\n return { ...section, items: section.items.map(item => ({ ...item })) };\n });\n}\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 /** Give ordinary rows mutually-exclusive radio-menu semantics using isSelected. */\n @Prop() selectionMode: MenuSelectionMode = 'none';\n @Prop() sections: MenuSection[] = [];\n /** Preferred side; placement flips to the opposite side when that offers a better fit. */\n @Prop() side: MenuSide = 'bottom';\n @Prop() align: MenuAlign = 'start';\n /** Align choice-row edges to the anchor by default; use `popup-frame` only for custom frame geometry. */\n @Prop() anchorAlignment: ChoicePopupAnchorAlignment = 'choice-cell';\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 /** Emitted after the popup's exit motion is complete and its rendered content is removed. */\n @Event() dsAfterClose!: EventEmitter<void>;\n @Event() dsSelect!: EventEmitter<MenuItemData>;\n /** Emitted when a `gradient-picker` section swatch is chosen. */\n @Event() dsGradientSelect!: EventEmitter<ShellGradientPreset>;\n /** Emitted when a generic `swatch-picker` section option is chosen. */\n @Event() dsSwatchSelect!: EventEmitter<string>;\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 positionRetryRaf: number | null = null;\n private livePositionRaf: number | null = null;\n /** Last content actually painted while open; retained unchanged through exit motion. */\n private lastRenderedSections: MenuSection[] = [];\n private closingSections: MenuSection[] | null = null;\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n componentDidRender() {\n if (!this.shouldRender) return;\n const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (!popup || typeof popup.showPopover !== 'function') return;\n if (!popup.matches(':popover-open')) popup.showPopover();\n }\n\n disconnectedCallback() {\n this.cancelPositionRetry();\n this.cancelLivePositionUpdate();\n this.teardownListeners();\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.teardownListeners();\n this.closingSections = null;\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.focusRingVisible = this.initialFocusVisible;\n this.setupListeners();\n this.schedulePositionUpdate(() => {\n this.focusInitialItem();\n });\n } else if (this.shouldRender) {\n this.cancelPositionRetry();\n this.captureClosingSections();\n this.closing = true;\n this.teardownListeners();\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('anchorAlignment')\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 const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.lastRenderedSections = [];\n this.closingSections = null;\n this.dsAfterClose.emit();\n }\n\n private captureClosingSections() {\n if (this.closingSections) return;\n const visibleSections = this.lastRenderedSections.length\n ? this.lastRenderedSections\n : this.activeSections;\n this.closingSections = snapshotMenuSections(visibleSections);\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 anchorFocusTarget(): HTMLElement | null {\n const anchor = this.resolvedAnchor;\n if (!anchor) return null;\n if (anchor.matches(MENU_FOCUSABLE_SELECTOR)) return anchor;\n return anchor.querySelector<HTMLElement>(MENU_FOCUSABLE_SELECTOR) ?? anchor;\n }\n\n private focusAnchor() {\n const anchor = this.resolvedAnchor as\n | (HTMLElement & { setFocus?: () => Promise<void> | void })\n | null;\n if (anchor?.setFocus) {\n anchor.setFocus();\n return;\n }\n this.anchorFocusTarget?.focus();\n }\n\n private moveFocusAfterTab(backwards: boolean) {\n const anchor = this.anchorFocusTarget;\n if (!anchor) return;\n if (backwards) {\n anchor.focus();\n return;\n }\n\n const candidates = Array.from(\n document.querySelectorAll<HTMLElement>(MENU_FOCUSABLE_SELECTOR)\n ).filter(\n element =>\n !element.closest('.menu-popup') &&\n !element.closest('[inert]') &&\n element.getClientRects().length > 0\n );\n const index = candidates.indexOf(anchor);\n (candidates[index + 1] ?? anchor).focus();\n }\n\n private compositeTabLeavesPopup(event: KeyboardEvent): boolean {\n const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (!popup) return true;\n const focusables = Array.from(\n popup.querySelectorAll<HTMLElement>(MENU_FOCUSABLE_SELECTOR)\n ).filter(element => element.getClientRects().length > 0);\n const currentIndex = focusables.indexOf(event.target as HTMLElement);\n if (currentIndex < 0) return true;\n return event.shiftKey ? currentIndex === 0 : currentIndex === focusables.length - 1;\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 isMenuPickerSection(section) ? [] : section.items\n );\n }\n\n /** Rich preference content is a non-modal dialog, not an ARIA action menu. */\n private get hasCompositeSections(): boolean {\n return this.activeSections.some(isMenuPickerSection);\n }\n\n private cancelPositionRetry() {\n if (this.positionRetryRaf !== null) {\n cancelAnimationFrame(this.positionRetryRaf);\n this.positionRetryRaf = null;\n }\n }\n\n private cancelLivePositionUpdate() {\n if (this.livePositionRaf !== null) {\n cancelAnimationFrame(this.livePositionRaf);\n this.livePositionRaf = null;\n }\n }\n\n /** Reposition after the current scroll/layout frame without hiding the open popup. */\n private scheduleLivePositionUpdate() {\n if (this.livePositionRaf !== null) return;\n this.livePositionRaf = requestAnimationFrame(() => {\n if (this.shouldRender && !this.closing) this.calculatePosition();\n // Scroll-driven owners such as ShellPage may commit their compact header\n // render in this frame. Re-read once after that render, then stop tracking.\n this.livePositionRaf = requestAnimationFrame(() => {\n this.livePositionRaf = null;\n if (this.shouldRender && !this.closing) this.calculatePosition();\n });\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 const anchorRect = anchorEl.getBoundingClientRect();\n const sectionInsetPx = this.viewportPadPx;\n if (!this.minWidth) {\n if (\n this.anchorAlignment === 'choice-cell' &&\n (this.side === 'top' || this.side === 'bottom')\n ) {\n popup.style.minWidth = `max(var(--dimension-menu-width-xs), ${choicePopupMinWidth(\n anchorRect.width,\n sectionInsetPx\n )}px)`;\n } else {\n popup.style.removeProperty('min-width');\n }\n }\n\n const next = computeMenuPosition({\n anchorRect,\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: resolveChoicePopupAlignOffset({\n align: this.align,\n alignOffsetPx: this.alignOffsetPx,\n sectionInsetPx,\n anchorAlignment: this.anchorAlignment,\n }),\n viewportPadPx: this.viewportPadPx,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n if (next.x !== this.pos.x || next.y !== this.pos.y) this.pos = next;\n return true;\n }\n\n /** Focus the selected item when present, otherwise the first enabled item. */\n private focusInitialItem() {\n if (this.hasCompositeSections) {\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>('.menu-popup [tabindex=\"0\"]')?.focus();\n });\n return;\n }\n\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 ? selectedIdx : 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 = () => this.scheduleLivePositionUpdate();\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 this.cancelLivePositionUpdate();\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(restoreFocus = true) {\n this.captureClosingSections();\n if (restoreFocus) this.focusAnchor();\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\n if (e.key === 'Escape') {\n e.preventDefault();\n this.close();\n return;\n }\n\n if (e.key === 'Tab') {\n if (this.hasCompositeSections && !this.compositeTabLeavesPopup(e)) return;\n e.preventDefault();\n this.close(false);\n this.moveFocusAfterTab(e.shiftKey);\n return;\n }\n\n if (this.hasCompositeSections) return;\n\n const flat = this.flatItems;\n const enabled = flat\n .map((it, i) => ({ it, i }))\n .filter(({ it }) => !it.isInactive)\n .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();\n 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();\n 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();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[0];\n this.focusItem(this.focusedIndex);\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[enabled.length - 1];\n this.focusItem(this.focusedIndex);\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 // Consumers commonly change the item source while handling selection.\n // Capture first so the exit animation never paints the next menu context.\n this.captureClosingSections();\n this.dsSelect.emit(item);\n }\n\n private handleGradientSelect(preset: ShellGradientPreset) {\n this.dsGradientSelect.emit(preset);\n }\n\n private handleSwatchSelect(value: string) {\n this.dsSwatchSelect.emit(value);\n }\n\n render() {\n if (!this.shouldRender) return <Host style={{ display: 'contents' }} />;\n\n const sections = this.closing\n ? (this.closingSections ?? this.lastRenderedSections)\n : this.activeSections;\n const hasCompositeSections = sections.some(isMenuPickerSection);\n if (!this.closing) {\n this.lastRenderedSections = snapshotMenuSections(sections);\n this.closingSections = null;\n }\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 popover=\"manual\"\n class={{\n 'menu-popup': true,\n 'menu-popup--closing': this.closing,\n 'ds-choice-popup': true,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={popupStyle}\n role={hasCompositeSections ? 'dialog' : 'menu'}\n aria-label={this.menuLabel}\n aria-orientation={hasCompositeSections ? undefined : 'vertical'}\n >\n <div class=\"ds-choice-list\">\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': isMenuPickerSection(section),\n 'ds-choice-section': true,\n 'ds-choice-section--divided': si < sections.length - 1,\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class=\"section-header ds-choice-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-swatch-picker\n value={section.value}\n groupLabel={section.header ?? 'Shell gradient theme'}\n sections={shellGradientPickerSections()}\n onDsChange={(e: CustomEvent<string>) => {\n e.stopPropagation();\n this.handleGradientSelect(e.detail as ShellGradientPreset);\n }}\n />\n ) : isMenuSwatchPickerSection(section) ? (\n <ds-swatch-picker\n value={section.value}\n groupLabel={section.groupLabel ?? section.header ?? 'Swatch options'}\n options={section.options ?? []}\n sections={section.sections ?? []}\n onDsChange={(e: CustomEvent<string>) => {\n e.stopPropagation();\n this.handleSwatchSelect(e.detail);\n }}\n />\n ) : (\n section.items.map(item => {\n const idx = flatIdx++;\n const isFocused = this.focusedIndex === idx;\n const isRadioItem =\n !hasCompositeSections &&\n this.selectionMode === 'single' &&\n !item.showSwitch;\n return (\n <button\n key={idx}\n type=\"button\"\n class={{\n 'menu-item': true,\n 'ds-choice-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={\n hasCompositeSections\n ? undefined\n : item.showSwitch\n ? 'menuitemcheckbox'\n : isRadioItem\n ? 'menuitemradio'\n : 'menuitem'\n }\n aria-checked={\n !hasCompositeSections && item.showSwitch\n ? String(!!item.switchValue)\n : isRadioItem\n ? String(!!item.isSelected)\n : undefined\n }\n aria-pressed={\n hasCompositeSections\n ? String(item.showSwitch ? !!item.switchValue : !!item.isSelected)\n : undefined\n }\n aria-current={\n !hasCompositeSections &&\n !item.showSwitch &&\n !isRadioItem &&\n item.isSelected\n ? 'true'\n : undefined\n }\n disabled={item.isInactive}\n tabIndex={hasCompositeSections ? 0 : isFocused ? 0 : -1}\n onMouseDown={() => {\n this.focusRingVisible = false;\n }}\n onClick={() => this.handleItemClick(item)}\n onFocus={() => {\n this.focusedIndex = idx;\n }}\n >\n {isRadioItem && (\n <span\n class=\"menu-item__radio-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <span\n class={{\n 'menu-item__radio': true,\n 'menu-item__radio--checked': !!item.isSelected,\n }}\n >\n {item.isSelected && <span class=\"menu-item__radio-dot\" />}\n </span>\n </span>\n )}\n <div class=\"menu-item__content ds-choice-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"menu-item__label ds-choice-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\n class=\"menu-item__subtext ds-choice-item__subtext\"\n as=\"span\"\n variant=\"text-body-small\"\n color=\"secondary\"\n >\n {item.subtext}\n </ds-text>\n )}\n </div>\n {item.dot && (\n <span\n class=\"menu-item__dot-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-badge\n class=\"menu-item__dot\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n />\n </span>\n )}\n {item.showSwitch && (\n <ds-switch\n class=\"menu-item__switch ds-interaction-fill__content\"\n size=\"md\"\n checked={!!item.switchValue}\n presentation\n />\n )}\n </button>\n );\n })\n )}\n </div>\n ))}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t}from"./p-BJMRBHKW.js";const s="--ds-scroll-overlay-block-size";const i="--ds-scroll-overlay-content-block-size";const e="--ds-scroll-overlay-fade-block-size";class o{constructor(t){this.options=t;this.overlayBlockSize=0;this.overlayContentBlockSize=0;this.fadeBlockSize=0}connect(){this.resizeObserver=new ResizeObserver((()=>{this.sync();this.options.onGeometryChange?.()}));this.resizeObserver.observe(this.options.viewport);this.resizeObserver.observe(this.options.content);this.resizeObserver.observe(this.options.overlay);this.sync()}disconnect(){this.resizeObserver?.disconnect()}sync(){this.syncOverlayGeometry();this.syncFadeWindow()}getOverlayBlockSize(){return this.overlayBlockSize}getOverlayContentBlockSize(){return this.overlayContentBlockSize}syncOverlayGeometry(){const{host:o,overlay:h}=this.options;const n=h.getBoundingClientRect();this.overlayBlockSize=Math.max(Math.ceil(n.height),0);const c=o.querySelector(this.options.overlayContentSelector??'[slot="overlay"]');if(!c){this.overlayBlockSize=0;this.overlayContentBlockSize=0;this.fadeBlockSize=0;o.style.setProperty(s,"0px");o.style.setProperty(i,"0px");o.style.setProperty(e,"0px");return}const r=c.firstElementChild instanceof HTMLElement?c.firstElementChild:c;const a=Math.max(Math.ceil(r.getBoundingClientRect().top-n.top),0);this.overlayContentBlockSize=Math.max(this.overlayBlockSize-a,0);const l=t("var(--dimension-space-100)",8);this.fadeBlockSize=this.overlayContentBlockSize+l;o.style.setProperty(s,`${this.overlayBlockSize}px`);o.style.setProperty(i,`${this.overlayContentBlockSize}px`);o.style.setProperty(e,`${this.fadeBlockSize}px`)}syncFadeWindow(){const{viewport:t,content:s}=this.options;const i=Math.max(t.scrollTop+t.clientHeight,0);const e=Math.max(i-this.fadeBlockSize,0);s.style.setProperty("--ds-scroll-edge-fade-window-start",`${e}px`);s.style.setProperty("--ds-scroll-edge-fade-window-end",`${i}px`)}}export{o as S};
|
|
2
|
+
//# sourceMappingURL=p-CY19gMiz.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function n(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function t(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function r(r){let i,u,a;if(r.length!==2){i=n;u=(t,e)=>n(r(t),e);a=(n,t)=>r(n)-t}else{i=r===n||r===t?r:e;u=r;a=r}function f(n,t,r=0,e=n.length){if(r<e){if(i(t,t)!==0)return e;do{const i=r+e>>>1;if(u(n[i],t)<0)r=i+1;else e=i}while(r<e)}return r}function o(n,t,r=0,e=n.length){if(r<e){if(i(t,t)!==0)return e;do{const i=r+e>>>1;if(u(n[i],t)<=0)r=i+1;else e=i}while(r<e)}return r}function s(n,t,r=0,e=n.length){const i=f(n,t,r,e-1);return i>r&&a(n[i-1],t)>-a(n[i],t)?i-1:i}return{left:f,center:s,right:o}}function e(){return 0}function i(n){return n===null?NaN:+n}const u=r(n);const a=u.right;r(i).center;class f extends Map{constructor(n,t=c){super();Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}});if(n!=null)for(const[t,r]of n)this.set(t,r)}get(n){return super.get(o(this,n))}has(n){return super.has(o(this,n))}set(n,t){return super.set(s(this,n),t)}delete(n){return super.delete(h(this,n))}}function o({_intern:n,_key:t},r){const e=t(r);return n.has(e)?n.get(e):r}function s({_intern:n,_key:t},r){const e=t(r);if(n.has(e))return n.get(e);n.set(e,r);return r}function h({_intern:n,_key:t},r){const e=t(r);if(n.has(e)){r=n.get(e);n.delete(e)}return r}function c(n){return n!==null&&typeof n==="object"?n.valueOf():n}const l=Math.sqrt(50),d=Math.sqrt(10),g=Math.sqrt(2);function M(n,t,r){const e=(t-n)/Math.max(0,r),i=Math.floor(Math.log10(e)),u=e/Math.pow(10,i),a=u>=l?10:u>=d?5:u>=g?2:1;let f,o,s;if(i<0){s=Math.pow(10,-i)/a;f=Math.round(n*s);o=Math.round(t*s);if(f/s<n)++f;if(o/s>t)--o;s=-s}else{s=Math.pow(10,i)*a;f=Math.round(n/s);o=Math.round(t/s);if(f*s<n)++f;if(o*s>t)--o}if(o<f&&.5<=r&&r<2)return M(n,t,r*2);return[f,o,s]}function v(n,t,r){t=+t,n=+n,r=+r;if(!(r>0))return[];if(n===t)return[n];const e=t<n,[i,u,a]=e?M(t,n,r):M(n,t,r);if(!(u>=i))return[];const f=u-i+1,o=new Array(f);if(e){if(a<0)for(let n=0;n<f;++n)o[n]=(u-n)/-a;else for(let n=0;n<f;++n)o[n]=(u-n)*a}else{if(a<0)for(let n=0;n<f;++n)o[n]=(i+n)/-a;else for(let n=0;n<f;++n)o[n]=(i+n)*a}return o}function w(n,t,r){t=+t,n=+n,r=+r;return M(n,t,r)[2]}function b(n,t,r){t=+t,n=+n,r=+r;const e=t<n,i=e?w(t,n,r):w(n,t,r);return(e?-1:1)*(i<0?1/-i:i)}function y(n,t,r){n=+n,t=+t,r=(i=arguments.length)<2?(t=n,n=0,1):i<3?1:+r;var e=-1,i=Math.max(0,Math.ceil((t-n)/r))|0,u=new Array(i);while(++e<i){u[e]=n+e*r}return u}function p(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}const m=Symbol("implicit");function N(){var n=new f,t=[],r=[],e=m;function i(i){let u=n.get(i);if(u===undefined){if(e!==m)return e;n.set(i,u=t.push(i)-1)}return r[u%r.length]}i.domain=function(r){if(!arguments.length)return t.slice();t=[],n=new f;for(const e of r){if(n.has(e))continue;n.set(e,t.push(e)-1)}return i};i.range=function(n){return arguments.length?(r=Array.from(n),i):r.slice()};i.unknown=function(n){return arguments.length?(e=n,i):e};i.copy=function(){return N(t,r).unknown(e)};p.apply(i,arguments);return i}function k(){var n=N().unknown(undefined),t=n.domain,r=n.range,e=0,i=1,u,a,f=false,o=0,s=0,h=.5;delete n.unknown;function c(){var n=t().length,c=i<e,l=c?i:e,d=c?e:i;u=(d-l)/Math.max(1,n-o+s*2);if(f)u=Math.floor(u);l+=(d-l-u*(n-o))*h;a=u*(1-o);if(f)l=Math.round(l),a=Math.round(a);var g=y(n).map((function(n){return l+u*n}));return r(c?g.reverse():g)}n.domain=function(n){return arguments.length?(t(n),c()):t()};n.range=function(n){return arguments.length?([e,i]=n,e=+e,i=+i,c()):[e,i]};n.rangeRound=function(n){return[e,i]=n,e=+e,i=+i,f=true,c()};n.bandwidth=function(){return a};n.step=function(){return u};n.round=function(n){return arguments.length?(f=!!n,c()):f};n.padding=function(n){return arguments.length?(o=Math.min(1,s=+n),c()):o};n.paddingInner=function(n){return arguments.length?(o=Math.min(1,n),c()):o};n.paddingOuter=function(n){return arguments.length?(s=+n,c()):s};n.align=function(n){return arguments.length?(h=Math.max(0,Math.min(1,n)),c()):h};n.copy=function(){return k(t(),[e,i]).round(f).paddingInner(o).paddingOuter(s).align(h)};return p.apply(c(),arguments)}function $(n){var t=n.copy;n.padding=n.paddingOuter;delete n.paddingInner;delete n.paddingOuter;n.copy=function(){return $(t())};return n}function x(){return $(k.apply(null,arguments).paddingInner(1))}function A(n,t,r){n.prototype=t.prototype=r;r.constructor=n}function E(n,t){var r=Object.create(n.prototype);for(var e in t)r[e]=t[e];return r}function q(){}var R=.7;var _=1/R;var j="\\s*([+-]?\\d+)\\s*",H="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",z="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",S=/^#([0-9a-f]{3,8})$/,D=new RegExp(`^rgb\\(${j},${j},${j}\\)$`),I=new RegExp(`^rgb\\(${z},${z},${z}\\)$`),O=new RegExp(`^rgba\\(${j},${j},${j},${H}\\)$`),P=new RegExp(`^rgba\\(${z},${z},${z},${H}\\)$`),X=new RegExp(`^hsl\\(${H},${z},${z}\\)$`),B=new RegExp(`^hsla\\(${H},${z},${z},${H}\\)$`);var F={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};A(q,Z,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:G,formatHex:G,formatHex8:T,formatHsl:V,formatRgb:Y,toString:Y});function G(){return this.rgb().formatHex()}function T(){return this.rgb().formatHex8()}function V(){return an(this).formatHsl()}function Y(){return this.rgb().formatRgb()}function Z(n){var t,r;n=(n+"").trim().toLowerCase();return(t=S.exec(n))?(r=t[1].length,t=parseInt(t[1],16),r===6?C(t):r===3?new Q(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?J(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?J(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=D.exec(n))?new Q(t[1],t[2],t[3],1):(t=I.exec(n))?new Q(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=O.exec(n))?J(t[1],t[2],t[3],t[4]):(t=P.exec(n))?J(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=X.exec(n))?un(t[1],t[2]/100,t[3]/100,1):(t=B.exec(n))?un(t[1],t[2]/100,t[3]/100,t[4]):F.hasOwnProperty(n)?C(F[n]):n==="transparent"?new Q(NaN,NaN,NaN,0):null}function C(n){return new Q(n>>16&255,n>>8&255,n&255,1)}function J(n,t,r,e){if(e<=0)n=t=r=NaN;return new Q(n,t,r,e)}function K(n){if(!(n instanceof q))n=Z(n);if(!n)return new Q;n=n.rgb();return new Q(n.r,n.g,n.b,n.opacity)}function L(n,t,r,e){return arguments.length===1?K(n):new Q(n,t,r,e==null?1:e)}function Q(n,t,r,e){this.r=+n;this.g=+t;this.b=+r;this.opacity=+e}A(Q,L,E(q,{brighter(n){n=n==null?_:Math.pow(_,n);return new Q(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){n=n==null?R:Math.pow(R,n);return new Q(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new Q(rn(this.r),rn(this.g),rn(this.b),tn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&(-.5<=this.g&&this.g<255.5)&&(-.5<=this.b&&this.b<255.5)&&(0<=this.opacity&&this.opacity<=1)},hex:U,formatHex:U,formatHex8:W,formatRgb:nn,toString:nn}));function U(){return`#${en(this.r)}${en(this.g)}${en(this.b)}`}function W(){return`#${en(this.r)}${en(this.g)}${en(this.b)}${en((isNaN(this.opacity)?1:this.opacity)*255)}`}function nn(){const n=tn(this.opacity);return`${n===1?"rgb(":"rgba("}${rn(this.r)}, ${rn(this.g)}, ${rn(this.b)}${n===1?")":`, ${n})`}`}function tn(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function rn(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function en(n){n=rn(n);return(n<16?"0":"")+n.toString(16)}function un(n,t,r,e){if(e<=0)n=t=r=NaN;else if(r<=0||r>=1)n=t=NaN;else if(t<=0)n=NaN;return new on(n,t,r,e)}function an(n){if(n instanceof on)return new on(n.h,n.s,n.l,n.opacity);if(!(n instanceof q))n=Z(n);if(!n)return new on;if(n instanceof on)return n;n=n.rgb();var t=n.r/255,r=n.g/255,e=n.b/255,i=Math.min(t,r,e),u=Math.max(t,r,e),a=NaN,f=u-i,o=(u+i)/2;if(f){if(t===u)a=(r-e)/f+(r<e)*6;else if(r===u)a=(e-t)/f+2;else a=(t-r)/f+4;f/=o<.5?u+i:2-u-i;a*=60}else{f=o>0&&o<1?0:a}return new on(a,f,o,n.opacity)}function fn(n,t,r,e){return arguments.length===1?an(n):new on(n,t,r,e==null?1:e)}function on(n,t,r,e){this.h=+n;this.s=+t;this.l=+r;this.opacity=+e}A(on,fn,E(q,{brighter(n){n=n==null?_:Math.pow(_,n);return new on(this.h,this.s,this.l*n,this.opacity)},darker(n){n=n==null?R:Math.pow(R,n);return new on(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,r=this.l,e=r+(r<.5?r:1-r)*t,i=2*r-e;return new Q(cn(n>=240?n-240:n+120,i,e),cn(n,i,e),cn(n<120?n+240:n-120,i,e),this.opacity)},clamp(){return new on(sn(this.h),hn(this.s),hn(this.l),tn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&(0<=this.l&&this.l<=1)&&(0<=this.opacity&&this.opacity<=1)},formatHsl(){const n=tn(this.opacity);return`${n===1?"hsl(":"hsla("}${sn(this.h)}, ${hn(this.s)*100}%, ${hn(this.l)*100}%${n===1?")":`, ${n})`}`}}));function sn(n){n=(n||0)%360;return n<0?n+360:n}function hn(n){return Math.max(0,Math.min(1,n||0))}function cn(n,t,r){return(n<60?t+(r-t)*n/60:n<180?r:n<240?t+(r-t)*(240-n)/60:t)*255}var ln=n=>()=>n;function dn(n,t){return function(r){return n+r*t}}function gn(n,t,r){return n=Math.pow(n,r),t=Math.pow(t,r)-n,r=1/r,function(e){return Math.pow(n+e*t,r)}}function Mn(n){return(n=+n)===1?vn:function(t,r){return r-t?gn(t,r,n):ln(isNaN(t)?r:t)}}function vn(n,t){var r=t-n;return r?dn(n,r):ln(isNaN(n)?t:n)}var wn=function n(t){var r=Mn(t);function e(n,t){var e=r((n=L(n)).r,(t=L(t)).r),i=r(n.g,t.g),u=r(n.b,t.b),a=vn(n.opacity,t.opacity);return function(t){n.r=e(t);n.g=i(t);n.b=u(t);n.opacity=a(t);return n+""}}e.gamma=n;return e}(1);function bn(n,t){if(!t)t=[];var r=n?Math.min(t.length,n.length):0,e=t.slice(),i;return function(u){for(i=0;i<r;++i)e[i]=n[i]*(1-u)+t[i]*u;return e}}function yn(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function pn(n,t){var r=t?t.length:0,e=n?Math.min(r,n.length):0,i=new Array(e),u=new Array(r),a;for(a=0;a<e;++a)i[a]=Rn(n[a],t[a]);for(;a<r;++a)u[a]=t[a];return function(n){for(a=0;a<e;++a)u[a]=i[a](n);return u}}function mn(n,t){var r=new Date;return n=+n,t=+t,function(e){return r.setTime(n*(1-e)+t*e),r}}function Nn(n,t){return n=+n,t=+t,function(r){return n*(1-r)+t*r}}function kn(n,t){var r={},e={},i;if(n===null||typeof n!=="object")n={};if(t===null||typeof t!=="object")t={};for(i in t){if(i in n){r[i]=Rn(n[i],t[i])}else{e[i]=t[i]}}return function(n){for(i in r)e[i]=r[i](n);return e}}var $n=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,xn=new RegExp($n.source,"g");function An(n){return function(){return n}}function En(n){return function(t){return n(t)+""}}function qn(n,t){var r=$n.lastIndex=xn.lastIndex=0,e,i,u,a=-1,f=[],o=[];n=n+"",t=t+"";while((e=$n.exec(n))&&(i=xn.exec(t))){if((u=i.index)>r){u=t.slice(r,u);if(f[a])f[a]+=u;else f[++a]=u}if((e=e[0])===(i=i[0])){if(f[a])f[a]+=i;else f[++a]=i}else{f[++a]=null;o.push({i:a,x:Nn(e,i)})}r=xn.lastIndex}if(r<t.length){u=t.slice(r);if(f[a])f[a]+=u;else f[++a]=u}return f.length<2?o[0]?En(o[0].x):An(t):(t=o.length,function(n){for(var r=0,e;r<t;++r)f[(e=o[r]).i]=e.x(n);return f.join("")})}function Rn(n,t){var r=typeof t,e;return t==null||r==="boolean"?ln(t):(r==="number"?Nn:r==="string"?(e=Z(t))?(t=e,wn):qn:t instanceof Z?wn:t instanceof Date?mn:yn(t)?bn:Array.isArray(t)?pn:typeof t.valueOf!=="function"&&typeof t.toString!=="function"||isNaN(t)?kn:Nn)(n,t)}function _n(n,t){return n=+n,t=+t,function(r){return Math.round(n*(1-r)+t*r)}}function jn(n){return function(){return n}}function Hn(n){return+n}var zn=[0,1];function Sn(n){return n}function Dn(n,t){return(t-=n=+n)?function(r){return(r-n)/t}:jn(isNaN(t)?NaN:.5)}function In(n,t){var r;if(n>t)r=n,n=t,t=r;return function(r){return Math.max(n,Math.min(t,r))}}function On(n,t,r){var e=n[0],i=n[1],u=t[0],a=t[1];if(i<e)e=Dn(i,e),u=r(a,u);else e=Dn(e,i),u=r(u,a);return function(n){return u(e(n))}}function Pn(n,t,r){var e=Math.min(n.length,t.length)-1,i=new Array(e),u=new Array(e),f=-1;if(n[e]<n[0]){n=n.slice().reverse();t=t.slice().reverse()}while(++f<e){i[f]=Dn(n[f],n[f+1]);u[f]=r(t[f],t[f+1])}return function(t){var r=a(n,t,1,e)-1;return u[r](i[r](t))}}function Xn(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Bn(){var n=zn,t=zn,r=Rn,e,i,u,a=Sn,f,o,s;function h(){var r=Math.min(n.length,t.length);if(a!==Sn)a=In(n[0],n[r-1]);f=r>2?Pn:On;o=s=null;return c}function c(i){return i==null||isNaN(i=+i)?u:(o||(o=f(n.map(e),t,r)))(e(a(i)))}c.invert=function(r){return a(i((s||(s=f(t,n.map(e),Nn)))(r)))};c.domain=function(t){return arguments.length?(n=Array.from(t,Hn),h()):n.slice()};c.range=function(n){return arguments.length?(t=Array.from(n),h()):t.slice()};c.rangeRound=function(n){return t=Array.from(n),r=_n,h()};c.clamp=function(n){return arguments.length?(a=n?true:Sn,h()):a!==Sn};c.interpolate=function(n){return arguments.length?(r=n,h()):r};c.unknown=function(n){return arguments.length?(u=n,c):u};return function(n,t){e=n,i=t;return h()}}function Fn(){return Bn()(Sn,Sn)}function Gn(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function Tn(n,t){if(!isFinite(n)||n===0)return null;var r=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),e=n.slice(0,r);return[e.length>1?e[0]+e.slice(2):e,+n.slice(r+1)]}function Vn(n){return n=Tn(Math.abs(n)),n?n[1]:NaN}function Yn(n,t){return function(r,e){var i=r.length,u=[],a=0,f=n[0],o=0;while(i>0&&f>0){if(o+f+1>e)f=Math.max(1,e-o);u.push(r.substring(i-=f,i+f));if((o+=f+1)>e)break;f=n[a=(a+1)%n.length]}return u.reverse().join(t)}}function Zn(n){return function(t){return t.replace(/[0-9]/g,(function(t){return n[+t]}))}}var Cn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jn(n){if(!(t=Cn.exec(n)))throw new Error("invalid format: "+n);var t;return new Kn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Jn.prototype=Kn.prototype;function Kn(n){this.fill=n.fill===undefined?" ":n.fill+"";this.align=n.align===undefined?">":n.align+"";this.sign=n.sign===undefined?"-":n.sign+"";this.symbol=n.symbol===undefined?"":n.symbol+"";this.zero=!!n.zero;this.width=n.width===undefined?undefined:+n.width;this.comma=!!n.comma;this.precision=n.precision===undefined?undefined:+n.precision;this.trim=!!n.trim;this.type=n.type===undefined?"":n.type+""}Kn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===undefined?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===undefined?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Ln(n){n:for(var t=n.length,r=1,e=-1,i;r<t;++r){switch(n[r]){case".":e=i=r;break;case"0":if(e===0)e=r;i=r;break;default:if(!+n[r])break n;if(e>0)e=0;break}}return e>0?n.slice(0,e)+n.slice(i+1):n}var Qn;function Un(n,t){var r=Tn(n,t);if(!r)return Qn=undefined,n.toPrecision(t);var e=r[0],i=r[1],u=i-(Qn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=e.length;return u===a?e:u>a?e+new Array(u-a+1).join("0"):u>0?e.slice(0,u)+"."+e.slice(u):"0."+new Array(1-u).join("0")+Tn(n,Math.max(0,t+u-1))[0]}function Wn(n,t){var r=Tn(n,t);if(!r)return n+"";var e=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+e:e.length>i+1?e.slice(0,i+1)+"."+e.slice(i+1):e+new Array(i-e.length+2).join("0")}var nt={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:Gn,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>Wn(n*100,t),r:Wn,s:Un,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function tt(n){return n}var rt=Array.prototype.map,et=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function it(n){var t=n.grouping===undefined||n.thousands===undefined?tt:Yn(rt.call(n.grouping,Number),n.thousands+""),r=n.currency===undefined?"":n.currency[0]+"",e=n.currency===undefined?"":n.currency[1]+"",i=n.decimal===undefined?".":n.decimal+"",u=n.numerals===undefined?tt:Zn(rt.call(n.numerals,String)),a=n.percent===undefined?"%":n.percent+"",f=n.minus===undefined?"−":n.minus+"",o=n.nan===undefined?"NaN":n.nan+"";function s(n,s){n=Jn(n);var h=n.fill,c=n.align,l=n.sign,d=n.symbol,g=n.zero,M=n.width,v=n.comma,w=n.precision,b=n.trim,y=n.type;if(y==="n")v=true,y="g";else if(!nt[y])w===undefined&&(w=12),b=true,y="g";if(g||h==="0"&&c==="=")g=true,h="0",c="=";var p=(s&&s.prefix!==undefined?s.prefix:"")+(d==="$"?r:d==="#"&&/[boxX]/.test(y)?"0"+y.toLowerCase():""),m=(d==="$"?e:/[%p]/.test(y)?a:"")+(s&&s.suffix!==undefined?s.suffix:"");var N=nt[y],k=/[defgprs%]/.test(y);w=w===undefined?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function $(n){var r=p,e=m,a,s,d;if(y==="c"){e=N(n)+e;n=""}else{n=+n;var $=n<0||1/n<0;n=isNaN(n)?o:N(Math.abs(n),w);if(b)n=Ln(n);if($&&+n===0&&l!=="+")$=false;r=($?l==="("?l:f:l==="-"||l==="("?"":l)+r;e=(y==="s"&&!isNaN(n)&&Qn!==undefined?et[8+Qn/3]:"")+e+($&&l==="("?")":"");if(k){a=-1,s=n.length;while(++a<s){if(d=n.charCodeAt(a),48>d||d>57){e=(d===46?i+n.slice(a+1):n.slice(a))+e;n=n.slice(0,a);break}}}}if(v&&!g)n=t(n,Infinity);var x=r.length+n.length+e.length,A=x<M?new Array(M-x+1).join(h):"";if(v&&g)n=t(A+n,A.length?M-e.length:Infinity),A="";switch(c){case"<":n=r+n+e+A;break;case"=":n=r+A+n+e;break;case"^":n=A.slice(0,x=A.length>>1)+r+n+e+A.slice(x);break;default:n=A+r+n+e;break}return u(n)}$.toString=function(){return n+""};return $}function h(n,t){var r=Math.max(-8,Math.min(8,Math.floor(Vn(t)/3)))*3,e=Math.pow(10,-r),i=s((n=Jn(n),n.type="f",n),{suffix:et[8+r/3]});return function(n){return i(e*n)}}return{format:s,formatPrefix:h}}var ut;var at;var ft;ot({thousands:",",grouping:[3],currency:["$",""]});function ot(n){ut=it(n);at=ut.format;ft=ut.formatPrefix;return ut}function st(n){return Math.max(0,-Vn(Math.abs(n)))}function ht(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Vn(t)/3)))*3-Vn(Math.abs(n)))}function ct(n,t){n=Math.abs(n),t=Math.abs(t)-n;return Math.max(0,Vn(t)-Vn(n))+1}function lt(n,t,r,e){var i=b(n,t,r),u;e=Jn(e==null?",f":e);switch(e.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(t));if(e.precision==null&&!isNaN(u=ht(i,a)))e.precision=u;return ft(e,a)}case"":case"e":case"g":case"p":case"r":{if(e.precision==null&&!isNaN(u=ct(i,Math.max(Math.abs(n),Math.abs(t)))))e.precision=u-(e.type==="e");break}case"f":case"%":{if(e.precision==null&&!isNaN(u=st(i)))e.precision=u-(e.type==="%")*2;break}}return at(e)}function dt(n){var t=n.domain;n.ticks=function(n){var r=t();return v(r[0],r[r.length-1],n==null?10:n)};n.tickFormat=function(n,r){var e=t();return lt(e[0],e[e.length-1],n==null?10:n,r)};n.nice=function(r){if(r==null)r=10;var e=t();var i=0;var u=e.length-1;var a=e[i];var f=e[u];var o;var s;var h=10;if(f<a){s=a,a=f,f=s;s=i,i=u,u=s}while(h-- >0){s=w(a,f,r);if(s===o){e[i]=a;e[u]=f;return t(e)}else if(s>0){a=Math.floor(a/s)*s;f=Math.ceil(f/s)*s}else if(s<0){a=Math.ceil(a*s)/s;f=Math.floor(f*s)/s}else{break}o=s}return n};return n}function gt(){var n=Fn();n.copy=function(){return Xn(n,gt())};p.apply(n,arguments);return dt(n)}export{k as b,gt as l,x as p};
|
|
2
|
+
//# sourceMappingURL=p-C_ewSXTT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ascending","a","b","NaN","descending","bisector","f","compare1","compare2","delta","length","d","x","zero","left","lo","hi","mid","right","center","i","number","ascendingBisect","bisectRight","InternMap","Map","constructor","entries","key","keyof","super","Object","defineProperties","this","_intern","value","_key","set","get","intern_get","has","intern_set","delete","intern_delete","valueOf","e10","Math","sqrt","e5","e2","tickSpec","start","stop","count","step","max","power","floor","log10","error","pow","factor","i1","i2","inc","round","ticks","reverse","n","Array","tickIncrement","tickStep","range","arguments","ceil","initRange","domain","implicit","Symbol","ordinal","index","unknown","scale","undefined","push","_","slice","from","copy","apply","band","ordinalRange","r0","r1","bandwidth","paddingInner","paddingOuter","align","rescale","values","sequence","map","rangeRound","padding","min","pointish","point","define","factory","prototype","extend","parent","definition","create","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color","channels","assign","displayable","rgb","hex","color_formatHex","formatHex","formatHex8","color_formatHex8","formatHsl","color_formatHsl","formatRgb","color_formatRgb","toString","hslConvert","format","m","l","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","r","g","rgbConvert","o","opacity","k","clamp","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","isNaN","h","s","Hsl","hsl","m2","m1","hsl2rgb","clamph","clampt","constant","linear","t","exponential","y","gamma","nogamma","rgbGamma","end","colorRgb","numberArray","c","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","date","Date","setTime","interpolateNumber","object","reA","reB","source","one","string","bi","lastIndex","am","bm","bs","q","join","interpolate","isArray","interpolateRound","constants","unit","identity","normalize","clamper","bimap","d0","d1","polymap","j","bisect","target","transformer","interpolateValue","transform","untransform","piecewise","output","input","invert","u","continuous","formatDecimal","abs","toLocaleString","replace","formatDecimalParts","p","isFinite","toExponential","indexOf","coefficient","exponent","formatGroup","grouping","thousands","width","substring","formatNumerals","numerals","re","formatSpecifier","specifier","match","Error","FormatSpecifier","fill","sign","symbol","comma","precision","type","formatTrim","out","i0","prefixExponent","formatPrefixAuto","toPrecision","formatRounded","formatTypes","toFixed","e","X","toUpperCase","prefixes","formatLocale","locale","group","call","Number","currencyPrefix","currency","currencySuffix","decimal","String","percent","minus","nan","newFormat","options","prefix","test","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","charCodeAt","Infinity","formatPrefix","defaultLocale","precisionFixed","precisionPrefix","precisionRound","tickFormat","linearish","nice","prestep","maxIter"],"sources":["node_modules/d3-array/src/ascending.js","node_modules/d3-array/src/descending.js","node_modules/d3-array/src/bisector.js","node_modules/d3-array/src/number.js","node_modules/d3-array/src/bisect.js","node_modules/internmap/src/index.js","node_modules/d3-array/src/ticks.js","node_modules/d3-array/src/range.js","node_modules/d3-scale/src/init.js","node_modules/d3-scale/src/ordinal.js","node_modules/d3-scale/src/band.js","node_modules/d3-color/src/define.js","node_modules/d3-color/src/color.js","node_modules/d3-interpolate/src/constant.js","node_modules/d3-interpolate/src/color.js","node_modules/d3-interpolate/src/rgb.js","node_modules/d3-interpolate/src/numberArray.js","node_modules/d3-interpolate/src/array.js","node_modules/d3-interpolate/src/date.js","node_modules/d3-interpolate/src/number.js","node_modules/d3-interpolate/src/object.js","node_modules/d3-interpolate/src/string.js","node_modules/d3-interpolate/src/value.js","node_modules/d3-interpolate/src/round.js","node_modules/d3-scale/src/constant.js","node_modules/d3-scale/src/number.js","node_modules/d3-scale/src/continuous.js","node_modules/d3-format/src/formatDecimal.js","node_modules/d3-format/src/exponent.js","node_modules/d3-format/src/formatGroup.js","node_modules/d3-format/src/formatNumerals.js","node_modules/d3-format/src/formatSpecifier.js","node_modules/d3-format/src/formatTrim.js","node_modules/d3-format/src/formatPrefixAuto.js","node_modules/d3-format/src/formatRounded.js","node_modules/d3-format/src/formatTypes.js","node_modules/d3-format/src/identity.js","node_modules/d3-format/src/locale.js","node_modules/d3-format/src/defaultLocale.js","node_modules/d3-format/src/precisionFixed.js","node_modules/d3-format/src/precisionPrefix.js","node_modules/d3-format/src/precisionRound.js","node_modules/d3-scale/src/tickFormat.js","node_modules/d3-scale/src/linear.js"],"sourcesContent":["export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if (!isFinite(x) || x === 0) return null; // NaN, ±Infinity, ±0\n var i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\"), coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return prefixExponent = undefined, x.toPrecision(p);\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier, options) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = (options && options.prefix !== undefined ? options.prefix : \"\") + (symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\"),\n suffix = (symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\") + (options && options.suffix !== undefined ? options.suffix : \"\");\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" && !isNaN(value) && prefixExponent !== undefined ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier), {suffix: prefixes[8 + e / 3]});\n return function(value) {\n return f(k * value);\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as t,t as e,H as i,h as a,a as s}from"./index.js";import{d as n}from"./p-BAfG3M8z.js";import{d as r}from"./p-Cpr3K41-.js";import{d as c}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{p as t,t as e,H as i,h as a,a as s}from"./index.js";import{d as n}from"./p-BAfG3M8z.js";import{d as r}from"./p-Cpr3K41-.js";import{d as c}from"./p-BwGnhInj.js";const d=()=>`.sc-ds-agent-activity-h{display:block}.agent-activity.sc-ds-agent-activity{margin:0}summary.sc-ds-agent-activity{align-items:center;color:var(--color-foreground-secondary);cursor:pointer;display:flex;gap:var(--dimension-space-050);list-style:none;padding:var(--dimension-space-025) 0}summary.sc-ds-agent-activity::-webkit-details-marker{display:none}details[open].sc-ds-agent-activity summary.sc-ds-agent-activity ds-icon.sc-ds-agent-activity{transform:rotate(90deg)}ds-text.agent-activity__summary-label.sc-ds-agent-activity{min-width:0}ol.sc-ds-agent-activity{display:grid;gap:var(--dimension-space-075);list-style:none;margin:0;padding:var(--dimension-space-100) 0 0 var(--dimension-space-200)}.agent-activity__item.sc-ds-agent-activity{align-items:start;display:grid;gap:var(--dimension-space-050);grid-template-columns:auto minmax(0, 1fr)}.agent-activity__marker.sc-ds-agent-activity{align-items:center;color:var(--color-foreground-faint-neutral);display:flex;padding-block-start:var(--dimension-space-025)}.agent-activity__item--active.sc-ds-agent-activity .agent-activity__marker.sc-ds-agent-activity{color:var(--color-foreground-faint-brand)}.agent-activity__item--error.sc-ds-agent-activity .agent-activity__marker.sc-ds-agent-activity{color:var(--color-foreground-bold-negative)}.agent-activity__item.sc-ds-agent-activity span.sc-ds-agent-activity:last-child{display:grid;gap:var(--dimension-space-025)}.agent-activity__pending-dot.sc-ds-agent-activity{width:var(--dimension-size-050);height:var(--dimension-size-050);border-radius:var(--dimension-radius-half);background:currentColor}.agent-activity__state.sc-ds-agent-activity{position:absolute;width:var(--dimension-size-050);height:var(--dimension-size-050);overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (prefers-reduced-motion: no-preference){summary.sc-ds-agent-activity ds-icon.sc-ds-agent-activity{transition:transform var(--effect-motion-short-2)}}`;const o=t(class t extends i{constructor(t){super();if(t!==false){this.__registerHost()}this.items=[];this.heading="Activity";this.open=false;this.expanded=false;this.handleToggle=t=>{this.expanded=t.currentTarget.open}}componentWillLoad(){this.expanded=this.open}handleOpenChange(t){this.expanded=t}get currentItem(){return this.items.find((t=>t.state==="active"))??this.items.find((t=>t.state==="error"))??[...this.items].reverse().find((t=>t.state==="complete"))??this.items.find((t=>t.state==="pending"))}stateLabel(t){if(t.state==="active")return"In progress";if(t.state==="complete")return"Complete";if(t.state==="error")return"Error";return"Pending"}render(){return a(s,{key:"d8e4786224b5156377325ad793ec7c18ec2884df"},a("details",{key:"a76b59835c3fb4e51d99cae22677e40f584f507e",class:"agent-activity",open:this.open,onToggle:this.handleToggle},a("summary",{key:"ba452d1ff1ab479bbcbec1a1dfe85db5fe4d25bc"},a("ds-icon",{key:"bc6ab5422067e2bf9126ff72668efd6258499643",name:"ChevronRight",size:"xs",color:"inherit"}),a("ds-text",{key:"c1c7a6d7ac9febfab2f610bcedaaf5fb5dbdd039",class:"agent-activity__summary-label",variant:"text-body-small",shimmer:!this.expanded&&this.currentItem?.state==="active"},this.expanded?this.heading:this.currentItem?.label??this.heading)),a("ol",{key:"637e1878c60154716e8730e2cab4d9a6c6a49c21"},this.items.map((t=>a("li",{class:`agent-activity__item agent-activity__item--${t.state}`},a("span",{class:"agent-activity__marker","aria-hidden":"true"},t.state==="active"?a("ds-loader",{size:"xs",color:"inherit"}):t.state==="pending"?a("span",{class:"agent-activity__pending-dot"}):a("ds-icon",{name:t.state==="error"?"ErrorTriangle":"Check",size:"xs",color:"inherit"})),a("span",null,a("ds-text",{variant:"text-body-small",shimmer:t.state==="active"},t.label),t.detail?a("ds-text",{variant:"text-caption",color:"secondary"},t.detail):null,a("span",{class:"agent-activity__state"},this.stateLabel(t)))))))))}static get watchers(){return{open:[{handleOpenChange:0}]}}static get style(){return d()}},[2,"ds-agent-activity",{items:[16],heading:[1],open:[4],expanded:[32]},undefined,{open:[{handleOpenChange:0}]}]);function l(){if(typeof customElements==="undefined"){return}const t=["ds-agent-activity","ds-icon","ds-loader","ds-text"];t.forEach((t=>{switch(t){case"ds-agent-activity":if(!customElements.get(e(t))){customElements.define(e(t),o)}break;case"ds-icon":if(!customElements.get(e(t))){n()}break;case"ds-loader":if(!customElements.get(e(t))){r()}break;case"ds-text":if(!customElements.get(e(t))){c()}break}}))}l();export{o as A,l as d};
|
|
2
|
+
//# sourceMappingURL=p-Ce52yVXF.js.map
|