@k2b/ui 0.1.1 → 0.2.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/dist/browser/actions/Dropdown.js +6 -3
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +44 -41
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatTimeline.js +3 -1
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/types.js.map +1 -1
- package/dist/browser/content/MarkdownView.js +14 -3
- package/dist/browser/content/MarkdownView.js.map +1 -1
- package/dist/browser/feedback/Tooltip.js +6 -2
- package/dist/browser/feedback/Tooltip.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js +22 -3
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/feedback/tooltip-position.js +15 -0
- package/dist/browser/feedback/tooltip-position.js.map +1 -1
- package/dist/browser/inputs/ChoiceInputs.js +47 -38
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
- package/dist/browser/internal/portal.js +1 -1
- package/dist/browser/internal/portal.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +194 -81
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/PanelDialog.js +14 -5
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +1 -1
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +1 -1
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatTimeline.js +3 -1
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/types.js.map +1 -1
- package/dist/ssr/content/MarkdownView.js +14 -3
- package/dist/ssr/content/MarkdownView.js.map +1 -1
- package/dist/ssr/feedback/Tooltip.js +6 -4
- package/dist/ssr/feedback/Tooltip.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js +22 -3
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/feedback/tooltip-position.js +15 -0
- package/dist/ssr/feedback/tooltip-position.js.map +1 -1
- package/dist/ssr/inputs/ChoiceInputs.js +9 -6
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
- package/dist/ssr/internal/portal.js +1 -1
- package/dist/ssr/internal/portal.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +86 -15
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/PanelDialog.js +1 -1
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/Dropdown.d.ts +3 -1
- package/dist/types/chat/types.d.ts +2 -0
- package/dist/types/content/MarkdownView.d.ts +6 -1
- package/dist/types/feedback/dialog-core.d.ts +2 -0
- package/dist/types/feedback/tooltip-position.d.ts +1 -1
- package/dist/types/inputs/ChoiceInputs.d.ts +3 -0
- package/dist/types/layout/DetailPanel.d.ts +6 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","Show","useContext","Tabs","prompts","resolveUiMessages","useUiMessages","PanelDialogSurfaceContext","usePanelDialogSurface","panelDialogBasePanelClass","panelDialogPanelClass","panelDialogOptions","panelClassName","contentClassName","panelDialogWidePanelClass","panelDialogWideOptions","panelDialogFixedPanelClass","panelDialogFixedOptions","panelDialogWorkspacePanelClass","panelDialogWorkspaceOptions","confirmDiscardIfDirty","dirty","hasChanges","Boolean","confirm","discardUnsavedChanges","title","unsavedChangesTitle","variant","confirmText","discard","PanelDialogHeader","props","messages","_el$","_$getNextElement","_tmpl$4","_el$9","firstChild","_el$0","_co$2","_$getNextMarker","nextSibling","_el$2","_el$3","_el$5","_el$6","_co$","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","_$insert","_$createComponent","when","icon","children","_el$13","_tmpl$5","_$effect","_$className","subtitle","_el$4","_tmpl$","actions","_el$7","_tmpl$2","close","_el$8","_tmpl$3","_$addEventListener","_p$","_v$","closeLabel","closeDialog","_v$2","closeDisabled","e","_$setAttribute","t","_$setProperty","undefined","_$runHydrationEvents","PanelDialogBody","_el$14","_tmpl$6","_v$3","scrollPreserveKey","_v$4","PanelDialogFooter","_el$15","_tmpl$7","PanelDialogSection","_el$16","_tmpl$8","_el$17","_el$24","_el$25","_co$6","_el$18","_el$19","_el$21","_el$22","_co$5","_el$26","_el$27","_co$7","_el$28","_el$29","_tmpl$9","_el$30","_el$20","_el$23","PanelDialogTabs","value","onValueChange","ariaLabel","label","dialogTabs","options","PanelDialog","surface","Provider","_el$31","_tmpl$0","Header","Body","Footer","Section","_$delegateEvents"],"sources":["layout/PanelDialog.tsx"],"sourcesContent":["import { createContext, type JSX, Show, useContext } from \"solid-js\";\nimport { Tabs } from \"../actions/Tabs\";\nimport type { OpenDialogOptions } from \"../feedback/dialog-core\";\nimport { prompts } from \"../feedback/prompts\";\nimport { resolveUiMessages, useUiMessages } from \"../intl/messages\";\n\nexport type PanelDialogSurface = \"contained\" | \"floating\";\n\nexport type PanelDialogProps = {\n children: JSX.Element;\n surface?: PanelDialogSurface;\n};\n\nexport type PanelDialogHeaderProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n icon?: string;\n actions?: JSX.Element;\n close?: () => void;\n closeDisabled?: boolean;\n closeLabel?: string;\n};\n\nexport type PanelDialogBodyProps = {\n children: JSX.Element;\n scrollPreserveKey?: string;\n};\n\nexport type PanelDialogFooterProps = {\n children: JSX.Element;\n};\n\nexport type PanelDialogSectionProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n icon?: string;\n actions?: JSX.Element;\n children: JSX.Element;\n};\n\nexport type PanelDialogTabOption<T extends string = string> = {\n value: T;\n label: JSX.Element;\n icon?: string;\n disabled?: boolean;\n};\n\nexport type PanelDialogTabsProps<T extends string = string> = {\n options: readonly PanelDialogTabOption<T>[];\n value: T | (() => T);\n onValueChange: (value: T) => void;\n ariaLabel?: string;\n label?: string;\n};\n\ntype PanelDialogComponent = ((props: PanelDialogProps) => JSX.Element) & {\n Header: (props: PanelDialogHeaderProps) => JSX.Element;\n Body: (props: PanelDialogBodyProps) => JSX.Element;\n Footer: (props: PanelDialogFooterProps) => JSX.Element;\n Section: (props: PanelDialogSectionProps) => JSX.Element;\n Tabs: <T extends string>(props: PanelDialogTabsProps<T>) => JSX.Element;\n};\n\nconst PanelDialogSurfaceContext = createContext<PanelDialogSurface>(\"contained\");\nconst usePanelDialogSurface = () => useContext(PanelDialogSurfaceContext);\n\nconst panelDialogBasePanelClass = \"k2b-dialog k2b-panel-dialog-frame\";\n\nexport const panelDialogPanelClass = `${panelDialogBasePanelClass} is-standard`;\nexport const panelDialogOptions = {\n panelClassName: panelDialogPanelClass,\n contentClassName: \"k2b-panel-dialog-viewport\",\n} satisfies OpenDialogOptions;\n\nexport const panelDialogWidePanelClass = `${panelDialogBasePanelClass} is-wide`;\nexport const panelDialogWideOptions = {\n panelClassName: panelDialogWidePanelClass,\n contentClassName: \"k2b-panel-dialog-viewport\",\n} satisfies OpenDialogOptions;\n\nexport const panelDialogFixedPanelClass = `${panelDialogBasePanelClass} is-fixed`;\nexport const panelDialogFixedOptions = {\n panelClassName: panelDialogFixedPanelClass,\n contentClassName: \"k2b-panel-dialog-viewport is-fixed\",\n} satisfies OpenDialogOptions;\n\nexport const panelDialogWorkspacePanelClass = `${panelDialogBasePanelClass} is-workspace`;\nexport const panelDialogWorkspaceOptions = {\n panelClassName: panelDialogWorkspacePanelClass,\n contentClassName: \"k2b-panel-dialog-viewport is-workspace\",\n} satisfies OpenDialogOptions;\n\nexport const confirmDiscardIfDirty = async (dirty: boolean | (() => boolean)): Promise<boolean> => {\n const hasChanges = typeof dirty === \"function\" ? dirty() : dirty;\n if (!hasChanges) return true;\n return Boolean(\n await prompts.confirm(resolveUiMessages().discardUnsavedChanges, {\n title: resolveUiMessages().unsavedChangesTitle,\n variant: \"danger\",\n confirmText: resolveUiMessages().discard,\n }),\n );\n};\n\nconst PanelDialogHeader = (props: PanelDialogHeaderProps): JSX.Element => {\n const messages = useUiMessages();\n return (\n <header class=\"k2b-panel-dialog__header\" data-surface={usePanelDialogSurface()}>\n <Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <div class=\"k2b-panel-dialog__heading\">\n <h2>{props.title}</h2>\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-panel-dialog__actions\">{props.actions}</div>\n </Show>\n <Show when={props.close}>\n <button\n type=\"button\"\n class=\"k2b-dialog__close\"\n aria-label={props.closeLabel ?? messages().closeDialog}\n disabled={props.closeDisabled}\n onClick={props.close}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </header>\n );\n};\n\nconst PanelDialogBody = (props: PanelDialogBodyProps): JSX.Element => (\n <div class=\"k2b-panel-dialog__body\" data-scroll-preserve={props.scrollPreserveKey} data-surface={usePanelDialogSurface()}>\n {props.children}\n </div>\n);\n\nconst PanelDialogFooter = (props: PanelDialogFooterProps): JSX.Element => (\n <footer class=\"k2b-panel-dialog__footer\" data-surface={usePanelDialogSurface()}>\n {props.children}\n </footer>\n);\n\nconst PanelDialogSection = (props: PanelDialogSectionProps): JSX.Element => (\n <section class=\"k2b-panel-dialog__section\" data-surface={usePanelDialogSurface()}>\n <header>\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-panel-dialog__section-icon\">\n <i class={icon()} aria-hidden=\"true\" />\n </span>\n )}\n </Show>\n <div>\n <h3>{props.title}</h3>\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-panel-dialog__actions\">{props.actions}</div>\n </Show>\n </header>\n <div class=\"k2b-panel-dialog__section-body\">{props.children}</div>\n </section>\n);\n\nconst PanelDialogTabs = <T extends string>(props: PanelDialogTabsProps<T>): JSX.Element => {\n const messages = useUiMessages();\n return (\n <Tabs\n class=\"k2b-panel-dialog__tabs\"\n value={props.value}\n onValueChange={props.onValueChange}\n ariaLabel={props.ariaLabel ?? props.label ?? messages().dialogTabs}\n options={props.options}\n />\n );\n};\n\nconst PanelDialog = ((props: PanelDialogProps): JSX.Element => {\n const surface = props.surface ?? \"contained\";\n return (\n <PanelDialogSurfaceContext.Provider value={surface}>\n <div class=\"k2b-panel-dialog\" data-surface={surface}>\n {props.children}\n </div>\n </PanelDialogSurfaceContext.Provider>\n );\n}) as PanelDialogComponent;\n\nPanelDialog.Header = PanelDialogHeader;\nPanelDialog.Body = PanelDialogBody;\nPanelDialog.Footer = PanelDialogFooter;\nPanelDialog.Section = PanelDialogSection;\nPanelDialog.Tabs = PanelDialogTabs;\n\nexport default PanelDialog;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createContext","Show","useContext","Tabs","prompts","resolveUiMessages","useUiMessages","PanelDialogSurfaceContext","usePanelDialogSurface","panelDialogBasePanelClass","panelDialogPanelClass","panelDialogOptions","panelClassName","contentClassName","panelDialogWidePanelClass","panelDialogWideOptions","panelDialogFixedPanelClass","panelDialogFixedOptions","panelDialogWorkspacePanelClass","panelDialogWorkspaceOptions","confirmDiscardIfDirty","dirty","hasChanges","Boolean","confirm","discardUnsavedChanges","title","unsavedChangesTitle","variant","confirmText","discard","PanelDialogHeader","props","messages","_el$","_$getNextElement","_tmpl$4","_el$9","firstChild","_el$0","_co$2","_$getNextMarker","nextSibling","_el$2","_el$3","_el$5","_el$6","_co$","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","_$insert","_$createComponent","when","icon","children","_el$13","_tmpl$5","_$effect","_$className","subtitle","_el$4","_tmpl$","actions","_el$7","_tmpl$2","close","_el$8","_tmpl$3","_$addEventListener","_p$","_v$","closeLabel","closeDialog","_v$2","closeDisabled","e","_$setAttribute","t","_$setProperty","undefined","_$runHydrationEvents","_v$3","_v$4","PanelDialogBody","_el$14","_tmpl$6","_v$5","scrollPreserveKey","_v$6","PanelDialogFooter","_el$15","_tmpl$7","PanelDialogSection","_el$16","_tmpl$8","_el$17","_el$24","_el$25","_co$6","_el$18","_el$19","_el$21","_el$22","_co$5","_el$26","_el$27","_co$7","_el$28","_el$29","_tmpl$9","_el$30","_el$20","_el$23","PanelDialogTabs","value","onValueChange","ariaLabel","label","dialogTabs","options","PanelDialog","surface","Provider","_el$31","_tmpl$0","Header","Body","Footer","Section","_$delegateEvents"],"sources":["layout/PanelDialog.tsx"],"sourcesContent":["import { createContext, type JSX, Show, useContext } from \"solid-js\";\nimport { Tabs } from \"../actions/Tabs\";\nimport type { OpenDialogOptions } from \"../feedback/dialog-core\";\nimport { prompts } from \"../feedback/prompts\";\nimport { resolveUiMessages, useUiMessages } from \"../intl/messages\";\n\nexport type PanelDialogSurface = \"contained\" | \"floating\";\n\nexport type PanelDialogProps = {\n children: JSX.Element;\n surface?: PanelDialogSurface;\n};\n\nexport type PanelDialogHeaderProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n icon?: string;\n actions?: JSX.Element;\n close?: () => void;\n closeDisabled?: boolean;\n closeLabel?: string;\n};\n\nexport type PanelDialogBodyProps = {\n children: JSX.Element;\n scrollPreserveKey?: string;\n};\n\nexport type PanelDialogFooterProps = {\n children: JSX.Element;\n};\n\nexport type PanelDialogSectionProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n icon?: string;\n actions?: JSX.Element;\n children: JSX.Element;\n};\n\nexport type PanelDialogTabOption<T extends string = string> = {\n value: T;\n label: JSX.Element;\n icon?: string;\n disabled?: boolean;\n};\n\nexport type PanelDialogTabsProps<T extends string = string> = {\n options: readonly PanelDialogTabOption<T>[];\n value: T | (() => T);\n onValueChange: (value: T) => void;\n ariaLabel?: string;\n label?: string;\n};\n\ntype PanelDialogComponent = ((props: PanelDialogProps) => JSX.Element) & {\n Header: (props: PanelDialogHeaderProps) => JSX.Element;\n Body: (props: PanelDialogBodyProps) => JSX.Element;\n Footer: (props: PanelDialogFooterProps) => JSX.Element;\n Section: (props: PanelDialogSectionProps) => JSX.Element;\n Tabs: <T extends string>(props: PanelDialogTabsProps<T>) => JSX.Element;\n};\n\nconst PanelDialogSurfaceContext = createContext<PanelDialogSurface>(\"contained\");\nconst usePanelDialogSurface = () => useContext(PanelDialogSurfaceContext);\n\nconst panelDialogBasePanelClass = \"k2b-dialog k2b-panel-dialog-frame\";\n\nexport const panelDialogPanelClass = `${panelDialogBasePanelClass} is-standard`;\nexport const panelDialogOptions = {\n panelClassName: panelDialogPanelClass,\n contentClassName: \"k2b-panel-dialog-viewport\",\n} satisfies OpenDialogOptions;\n\nexport const panelDialogWidePanelClass = `${panelDialogBasePanelClass} is-wide`;\nexport const panelDialogWideOptions = {\n panelClassName: panelDialogWidePanelClass,\n contentClassName: \"k2b-panel-dialog-viewport\",\n} satisfies OpenDialogOptions;\n\nexport const panelDialogFixedPanelClass = `${panelDialogBasePanelClass} is-fixed`;\nexport const panelDialogFixedOptions = {\n panelClassName: panelDialogFixedPanelClass,\n contentClassName: \"k2b-panel-dialog-viewport is-fixed\",\n} satisfies OpenDialogOptions;\n\nexport const panelDialogWorkspacePanelClass = `${panelDialogBasePanelClass} is-workspace`;\nexport const panelDialogWorkspaceOptions = {\n panelClassName: panelDialogWorkspacePanelClass,\n contentClassName: \"k2b-panel-dialog-viewport is-workspace\",\n} satisfies OpenDialogOptions;\n\nexport const confirmDiscardIfDirty = async (dirty: boolean | (() => boolean)): Promise<boolean> => {\n const hasChanges = typeof dirty === \"function\" ? dirty() : dirty;\n if (!hasChanges) return true;\n return Boolean(\n await prompts.confirm(resolveUiMessages().discardUnsavedChanges, {\n title: resolveUiMessages().unsavedChangesTitle,\n variant: \"danger\",\n confirmText: resolveUiMessages().discard,\n }),\n );\n};\n\nconst PanelDialogHeader = (props: PanelDialogHeaderProps): JSX.Element => {\n const messages = useUiMessages();\n return (\n <header class=\"k2b-panel-dialog__header\" data-surface={usePanelDialogSurface()} data-has-subtitle={Boolean(props.subtitle)}>\n <Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <div class=\"k2b-panel-dialog__heading\">\n <h2>{props.title}</h2>\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-panel-dialog__actions\">{props.actions}</div>\n </Show>\n <Show when={props.close}>\n <button\n type=\"button\"\n class=\"k2b-dialog__close\"\n aria-label={props.closeLabel ?? messages().closeDialog}\n disabled={props.closeDisabled}\n onClick={props.close}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </header>\n );\n};\n\nconst PanelDialogBody = (props: PanelDialogBodyProps): JSX.Element => (\n <div class=\"k2b-panel-dialog__body\" data-scroll-preserve={props.scrollPreserveKey} data-surface={usePanelDialogSurface()}>\n {props.children}\n </div>\n);\n\nconst PanelDialogFooter = (props: PanelDialogFooterProps): JSX.Element => (\n <footer class=\"k2b-panel-dialog__footer\" data-surface={usePanelDialogSurface()}>\n {props.children}\n </footer>\n);\n\nconst PanelDialogSection = (props: PanelDialogSectionProps): JSX.Element => (\n <section class=\"k2b-panel-dialog__section\" data-surface={usePanelDialogSurface()}>\n <header>\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-panel-dialog__section-icon\">\n <i class={icon()} aria-hidden=\"true\" />\n </span>\n )}\n </Show>\n <div>\n <h3>{props.title}</h3>\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-panel-dialog__actions\">{props.actions}</div>\n </Show>\n </header>\n <div class=\"k2b-panel-dialog__section-body\">{props.children}</div>\n </section>\n);\n\nconst PanelDialogTabs = <T extends string>(props: PanelDialogTabsProps<T>): JSX.Element => {\n const messages = useUiMessages();\n return (\n <Tabs\n class=\"k2b-panel-dialog__tabs\"\n value={props.value}\n onValueChange={props.onValueChange}\n ariaLabel={props.ariaLabel ?? props.label ?? messages().dialogTabs}\n options={props.options}\n />\n );\n};\n\nconst PanelDialog = ((props: PanelDialogProps): JSX.Element => {\n const surface = props.surface ?? \"contained\";\n return (\n <PanelDialogSurfaceContext.Provider value={surface}>\n <div class=\"k2b-panel-dialog\" data-surface={surface}>\n {props.children}\n </div>\n </PanelDialogSurfaceContext.Provider>\n );\n}) as PanelDialogComponent;\n\nPanelDialog.Header = PanelDialogHeader;\nPanelDialog.Body = PanelDialogBody;\nPanelDialog.Footer = PanelDialogFooter;\nPanelDialog.Section = PanelDialogSection;\nPanelDialog.Tabs = PanelDialogTabs;\n\nexport default PanelDialog;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -426,7 +426,7 @@ function DropdownRoot(props) {
|
|
|
426
426
|
get children() {
|
|
427
427
|
return _$ssr(_tmpl$12, `k2b-dropdown ${_$escape(props.class ?? "", true)}`, _$escape(props.children), _$ssrAttribute("id", _$escape(menuId, true), false), _$ssrAttribute("aria-label", _$escape(props.label ?? messages().dropdownMenu, true), false), `k2b-dropdown__menu ${_$escape(props.menuClass ?? "", true)}`, _$ssrStyle(props.width ? {
|
|
428
428
|
"--k2b-dropdown-width": props.width
|
|
429
|
-
} : undefined), _$ssrAttribute("data-position", _$escape(position(), true), false), _$escape(_$createComponent(DropdownItems, {
|
|
429
|
+
} : undefined), _$ssrAttribute("data-variant", _$escape(props.variant ?? "default", true), false) + _$ssrAttribute("data-position", _$escape(position(), true), false), _$escape(_$createComponent(DropdownItems, {
|
|
430
430
|
get items() {
|
|
431
431
|
return props.items;
|
|
432
432
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","createEffect","createSignal","createUniqueId","For","onCleanup","onMount","Show","splitProps","useContext","Tooltip","useUiMessages","Button","MenuContext","DropdownContext","actionableItems","menu","Array","from","querySelectorAll","join","focusMenuItem","index","items","length","focus","dropdownPosition","trigger","position","viewport","gap","left","top","bottom","right","width","height","Math","max","min","itemContent","props","_$createComponent","when","image","fallback","icon","children","_$ssr","_tmpl$2","_$ssrAttribute","_$escape","_tmpl$3","_tmpl$","description","_tmpl$4","DropdownItem","danger","variant","content","disabled","href","undefined","_tmpl$5","class","_tmpl$6","external","DropdownChoiceItem","checked","_tmpl$0","choice","_tmpl$8","_tmpl$7","color","_tmpl$1","_$ssrStyleProperty","label","_tmpl$9","DropdownItems","messages","renderItem","item","onSelect","action","Provider","value","close","each","_tmpl$10","sectionLabel","actions","_tmpl$11","DropdownTrigger","context","Error","local","rest","target","Boolean","register","element","registerTrigger","ref","click","event","stopPropagation","toggle","appearance","_$mergeProps","aria-controls","menuId","aria-expanded","open","aria-label","tabIndex","onClick","onKeyDown","triggerKeyDown","type","iconOnly","size","tooltip","tooltipDelay","tooltipPlacement","_$ssrElement","delay","placement","DropdownRoot","id","replace","internalOpen","setInternalOpen","triggerRef","menuRef","mounted","viewportListenersAttached","isOpen","align","place","rect","getBoundingClientRect","window","innerWidth","innerHeight","style","reposition","attachViewportListeners","addEventListener","detachViewportListeners","removeEventListener","restoreFocus","matches","hidePopover","queueMicrotask","showPopover","requestOpen","next","onOpenChange","handleMenuKeyDown","current","indexOf","document","activeElement","key","preventDefault","includes","controlled","_tmpl$12","dropdownMenu","menuClass","_$ssrStyle","Dropdown","Root","Trigger","Item"],"sources":["actions/Dropdown.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n onCleanup,\n onMount,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport { Tooltip, type TooltipPlacement } from \"../feedback/Tooltip\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from \"./Button\";\n\nexport type DropdownPosition = \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\" | \"right-start\";\n\nexport type DropdownActionBase = {\n class?: string;\n disabled?: boolean;\n icon?: string;\n image?: string;\n label: string;\n description?: string;\n variant?: \"danger\";\n};\n\nexport type DropdownAction =\n | (DropdownActionBase & {\n action: () => void;\n href?: never;\n external?: never;\n })\n | (DropdownActionBase & {\n href: string;\n external?: boolean;\n action?: never;\n })\n | (DropdownActionBase & {\n disabled: true;\n action?: never;\n href?: never;\n external?: never;\n });\n\n/** Declarative radio or checkbox row for compact action menus. */\nexport type DropdownChoice = DropdownActionBase & {\n action: () => void;\n checked: boolean | (() => boolean);\n choice: \"checkbox\" | \"radio\";\n closeOnSelect?: boolean;\n color?: string;\n};\n\nexport type DropdownSection = {\n sectionLabel?: string;\n items: readonly (DropdownAction | DropdownChoice)[];\n};\n\nexport type DropdownItem = DropdownAction | DropdownChoice | DropdownSection;\n\nexport type DropdownProps = {\n items: readonly DropdownItem[];\n children: JSX.Element;\n position?: DropdownPosition | (() => DropdownPosition);\n /** Menu width as a CSS length. Defaults to `12rem`. */\n width?: string;\n class?: string;\n menuClass?: string;\n onClose?: () => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n label?: string;\n align?: \"start\" | \"end\";\n};\n\nexport type DropdownTriggerProps = Omit<\n ButtonProps,\n \"aria-controls\" | \"aria-expanded\" | \"aria-haspopup\" | \"children\" | \"disabled\" | \"onClick\" | \"onKeyDown\"\n> & {\n children: JSX.Element;\n /** Use `plain` when a specialized component class owns the complete visual treatment. */\n appearance?: \"button\" | \"plain\";\n disabled?: boolean;\n iconOnly?: boolean;\n label?: string;\n size?: ButtonSize;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n variant?: ButtonVariant;\n};\n\nexport type DropdownItemProps = {\n children: JSX.Element;\n icon?: string;\n image?: string;\n description?: string;\n disabled?: boolean;\n danger?: boolean;\n variant?: \"danger\";\n href?: string;\n external?: boolean;\n onSelect?: () => void;\n class?: string;\n};\n\ntype MenuContextValue = {\n close: (restoreFocus?: boolean) => void;\n};\n\ntype DropdownContextValue = {\n disabled: () => boolean;\n menuId: string;\n open: () => boolean;\n registerTrigger: (element: HTMLButtonElement) => void;\n toggle: () => void;\n triggerKeyDown: JSX.EventHandlerUnion<HTMLButtonElement, KeyboardEvent>;\n};\n\nconst MenuContext = createContext<MenuContextValue>();\nconst DropdownContext = createContext<DropdownContextValue>();\n\nconst actionableItems = (menu: HTMLElement | undefined): HTMLElement[] =>\n menu\n ? Array.from(\n menu.querySelectorAll<HTMLElement>(\n [\n \"[role='menuitem']:not([aria-disabled='true'])\",\n \"[role='menuitemcheckbox']:not([aria-disabled='true'])\",\n \"[role='menuitemradio']:not([aria-disabled='true'])\",\n ].join(\", \"),\n ),\n )\n : [];\n\nconst focusMenuItem = (menu: HTMLElement | undefined, index: number): void => {\n const items = actionableItems(menu);\n if (items.length === 0) return;\n items[(index + items.length) % items.length]?.focus();\n};\n\nexport const dropdownPosition = (\n trigger: DOMRect,\n menu: Pick<DOMRect, \"width\" | \"height\">,\n position: DropdownPosition,\n viewport: { width: number; height: number },\n gap = 4,\n): { left: number; top: number } => {\n let left = trigger.left;\n let top = trigger.bottom + gap;\n\n if (position === \"bottom-left\" || position === \"top-left\") left = trigger.right - menu.width;\n if (position === \"top-right\" || position === \"top-left\") top = trigger.top - menu.height - gap;\n if (position === \"right-start\") {\n left = trigger.right + gap;\n top = trigger.top;\n }\n\n return {\n left: Math.max(8, Math.min(left, viewport.width - menu.width - 8)),\n top: Math.max(8, Math.min(top, viewport.height - menu.height - 8)),\n };\n};\n\nconst itemContent = (props: { description?: string; icon?: string; image?: string; children: JSX.Element }): JSX.Element => (\n <>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.children}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </>\n);\n\nexport function DropdownItem(props: DropdownItemProps): JSX.Element {\n const menu = useContext(MenuContext);\n const danger = () => props.danger || props.variant === \"danger\";\n const content = itemContent(props);\n\n return (\n <Show\n when={!props.disabled ? props.href : undefined}\n fallback={\n <button\n type=\"button\"\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n disabled={props.disabled}\n aria-disabled={props.disabled ? \"true\" : undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n menu?.close();\n props.onSelect?.();\n }}\n >\n {content}\n </button>\n }\n >\n {(href) => (\n <a\n href={href()}\n target={props.external ? \"_blank\" : undefined}\n rel={props.external ? \"noopener noreferrer\" : undefined}\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n onClick={() => {\n menu?.close(false);\n props.onSelect?.();\n }}\n >\n {content}\n </a>\n )}\n </Show>\n );\n}\n\nfunction DropdownChoiceItem(props: DropdownChoice): JSX.Element {\n const menu = useContext(MenuContext);\n const checked = () => (typeof props.checked === \"function\" ? props.checked() : props.checked);\n return (\n // biome-ignore lint/a11y/useAriaPropsSupportedByRole: the runtime role is always menuitemcheckbox or menuitemradio, both of which support aria-checked.\n <button\n type=\"button\"\n role={props.choice === \"checkbox\" ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={checked()}\n aria-disabled={props.disabled ? \"true\" : undefined}\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-selected={checked() ? \"true\" : undefined}\n disabled={props.disabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n if (props.closeOnSelect !== false) menu?.close();\n props.action();\n }}\n >\n <Show when={props.choice === \"checkbox\"}>\n <span class=\"k2b-dropdown__checkbox\" aria-hidden=\"true\">\n <Show when={checked()}>\n <i class=\"ti ti-check\" />\n </Show>\n </span>\n </Show>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <Show when={props.color}>\n {(color) => <span class=\"k2b-dropdown__color\" style={{ \"--k2b-dropdown-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.label}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.choice === \"radio\" && checked()}>\n <i class=\"ti ti-check k2b-dropdown__check\" aria-hidden=\"true\" />\n </Show>\n </button>\n );\n}\n\nexport function DropdownItems(props: { items: readonly DropdownItem[]; close: (restoreFocus?: boolean) => void }): JSX.Element {\n const messages = useUiMessages();\n const renderItem = (item: DropdownAction | DropdownChoice): JSX.Element =>\n \"choice\" in item ? (\n <DropdownChoiceItem {...item} />\n ) : (\n <DropdownItem\n icon={item.icon}\n image={item.image}\n description={item.description}\n variant={item.variant}\n disabled={item.disabled}\n class={item.class}\n href={\"href\" in item ? item.href : undefined}\n external={\"external\" in item ? item.external : undefined}\n onSelect={\"action\" in item ? item.action : undefined}\n >\n {item.label}\n </DropdownItem>\n );\n\n return (\n <MenuContext.Provider value={{ close: props.close }}>\n <For each={props.items}>\n {(item, index) => (\n <Show when={\"items\" in item} fallback={renderItem(item as DropdownAction | DropdownChoice)}>\n <div\n class=\"k2b-dropdown__section\"\n data-divided={index() > 0 ? \"true\" : undefined}\n role=\"group\"\n aria-label={(item as DropdownSection).sectionLabel ?? messages().actions}\n >\n <Show when={(item as DropdownSection).sectionLabel}>{(label) => <div class=\"k2b-dropdown__label\">{label()}</div>}</Show>\n <For each={(item as DropdownSection).items}>{renderItem}</For>\n </div>\n </Show>\n )}\n </For>\n </MenuContext.Provider>\n );\n}\n\nfunction DropdownTrigger(props: DropdownTriggerProps): JSX.Element {\n const context = useContext(DropdownContext);\n if (!context) throw new Error(\"Dropdown.Trigger must be used inside Dropdown.Root\");\n const [local, rest] = splitProps(props, [\n \"appearance\",\n \"children\",\n \"class\",\n \"disabled\",\n \"iconOnly\",\n \"label\",\n \"ref\",\n \"size\",\n \"tabIndex\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"type\",\n \"variant\",\n ]);\n let target: HTMLButtonElement | undefined;\n const disabled = () => Boolean(context.disabled() || local.disabled);\n const register = (element: HTMLButtonElement) => {\n target = element;\n context.registerTrigger(element);\n if (typeof local.ref === \"function\") local.ref(element);\n };\n const click: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> = (event) => {\n event.stopPropagation();\n context.toggle();\n };\n\n if (local.appearance !== \"plain\") {\n return (\n <Button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`${local.iconOnly ? \"k2b-icon-button\" : \"\"} k2b-dropdown__trigger ${local.class ?? \"\"}`}\n size={local.size}\n variant={local.variant ?? (local.iconOnly ? \"ghost\" : undefined)}\n tooltip={local.tooltip}\n tooltipDelay={local.tooltipDelay}\n tooltipPlacement={local.tooltipPlacement}\n >\n {local.children}\n </Button>\n );\n }\n\n return (\n <>\n <button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`k2b-dropdown__trigger ${local.class ?? \"\"}`}\n >\n {local.children}\n </button>\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip\n content={local.tooltip as JSX.Element}\n target={() => target}\n delay={local.tooltipDelay}\n disabled={disabled()}\n placement={local.tooltipPlacement}\n />\n </Show>\n </>\n );\n}\n\n/** Accessible top-layer menu with explicit trigger ownership. */\nfunction DropdownRoot(props: DropdownProps): JSX.Element {\n const messages = useUiMessages();\n const id = createUniqueId().replace(/[^a-zA-Z0-9_-]/g, \"-\");\n const menuId = `k2b-dropdown-${id}`;\n const [internalOpen, setInternalOpen] = createSignal(false);\n let triggerRef: HTMLButtonElement | undefined;\n let menuRef: HTMLDivElement | undefined;\n let mounted = false;\n let viewportListenersAttached = false;\n\n const isOpen = () => props.open ?? internalOpen();\n const position = (): DropdownPosition =>\n typeof props.position === \"function\" ? props.position() : (props.position ?? (props.align === \"end\" ? \"bottom-left\" : \"bottom-right\"));\n\n const place = () => {\n if (!triggerRef || !menuRef) return;\n const rect = dropdownPosition(triggerRef.getBoundingClientRect(), menuRef.getBoundingClientRect(), position(), {\n width: window.innerWidth,\n height: window.innerHeight,\n });\n menuRef.style.left = `${rect.left}px`;\n menuRef.style.top = `${rect.top}px`;\n };\n const reposition = () => {\n if (isOpen()) place();\n };\n const attachViewportListeners = () => {\n if (viewportListenersAttached) return;\n viewportListenersAttached = true;\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n };\n const detachViewportListeners = () => {\n if (!viewportListenersAttached) return;\n viewportListenersAttached = false;\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n };\n const close = (restoreFocus = true) => {\n if (menuRef?.matches(\":popover-open\")) menuRef.hidePopover();\n detachViewportListeners();\n if (restoreFocus) queueMicrotask(() => triggerRef?.focus());\n };\n const open = (focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled || !menuRef || menuRef.matches(\":popover-open\")) return;\n menuRef.showPopover();\n attachViewportListeners();\n place();\n queueMicrotask(() => {\n if (focus) focusMenuItem(menuRef, focus === \"first\" ? 0 : -1);\n });\n };\n const requestOpen = (next: boolean, focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled && next) return;\n if (props.open !== undefined) {\n props.onOpenChange?.(next);\n return;\n }\n if (next) open(focus);\n else close(false);\n };\n const handleMenuKeyDown = (event: KeyboardEvent) => {\n const items = actionableItems(menuRef);\n const current = items.indexOf(document.activeElement as HTMLElement);\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n focusMenuItem(menuRef, current + (event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focusMenuItem(menuRef, event.key === \"Home\" ? 0 : -1);\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n requestOpen(false);\n queueMicrotask(() => triggerRef?.focus());\n } else if (event.key === \"Tab\") {\n requestOpen(false);\n }\n };\n\n const context: DropdownContextValue = {\n disabled: () => Boolean(props.disabled),\n menuId,\n open: isOpen,\n registerTrigger: (element) => {\n triggerRef = element;\n },\n toggle: () => requestOpen(!isOpen()),\n triggerKeyDown: (event) => {\n if (![\"Enter\", \" \", \"ArrowDown\", \"ArrowUp\"].includes(event.key)) return;\n event.preventDefault();\n event.stopPropagation();\n if (isOpen()) {\n focusMenuItem(menuRef, event.key === \"ArrowUp\" ? -1 : 0);\n return;\n }\n requestOpen(true, event.key === \"ArrowUp\" ? \"last\" : \"first\");\n },\n };\n\n createEffect(() => {\n const controlled = props.open;\n if (!mounted || controlled === undefined || !menuRef) return;\n if (controlled && !menuRef.matches(\":popover-open\")) open(false);\n if (!controlled && menuRef.matches(\":popover-open\")) close(false);\n });\n createEffect(() => {\n if (mounted && props.disabled) close(false);\n });\n onMount(() => {\n mounted = true;\n if (props.open) open(false);\n onCleanup(detachViewportListeners);\n });\n\n return (\n <DropdownContext.Provider value={context}>\n <span class={`k2b-dropdown ${props.class ?? \"\"}`}>\n {props.children}\n <div\n ref={menuRef}\n id={menuId}\n popover=\"auto\"\n role=\"menu\"\n aria-label={props.label ?? messages().dropdownMenu}\n class={`k2b-dropdown__menu ${props.menuClass ?? \"\"}`}\n style={props.width ? { \"--k2b-dropdown-width\": props.width } : undefined}\n data-position={position()}\n onKeyDown={handleMenuKeyDown}\n onToggle={(event) => {\n const nextOpen = (event as ToggleEvent).newState === \"open\";\n const wasOpen = internalOpen();\n setInternalOpen(nextOpen);\n if (nextOpen) attachViewportListeners();\n else detachViewportListeners();\n if (props.open === undefined || props.open !== nextOpen) props.onOpenChange?.(nextOpen);\n if (wasOpen && !nextOpen) props.onClose?.();\n if (!nextOpen && props.open === true) queueMicrotask(() => props.open === true && open(false));\n }}\n >\n <DropdownItems items={props.items} close={close} />\n </div>\n </span>\n </DropdownContext.Provider>\n );\n}\n\ntype DropdownComponent = ((props: DropdownProps) => JSX.Element) & {\n Root: (props: DropdownProps) => JSX.Element;\n Trigger: (props: DropdownTriggerProps) => JSX.Element;\n Item: (props: DropdownItemProps) => JSX.Element;\n};\n\nexport const Dropdown = DropdownRoot as DropdownComponent;\nDropdown.Root = DropdownRoot;\nDropdown.Trigger = DropdownTrigger;\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SACEA,aAAa,EACbC,YAAY,EACZC,YAAY,EACZC,cAAc,EACdC,GAAG,EAEHC,SAAS,EACTC,OAAO,EACPC,IAAI,EACJC,UAAU,EACVC,UAAU,QACL,UAAU;AACjB,SAASC,OAAO,QAA+B,qBAAqB;AACpE,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,MAAM,QAA+D,UAAU;;AAgCxF;;AA4EA,MAAMC,WAAW,GAAGb,aAAa,CAAmB,CAAC;AACrD,MAAMc,eAAe,GAAGd,aAAa,CAAuB,CAAC;AAE7D,MAAMe,eAAe,GAAIC,IAA6B,IACpDA,IAAI,GACAC,KAAK,CAACC,IAAI,CACRF,IAAI,CAACG,gBAAgB,CACnB,CACE,+CAA+C,EAC/C,uDAAuD,EACvD,oDAAoD,CACrD,CAACC,IAAI,CAAC,IAAI,CACb,CACF,CAAC,GACD,EAAE;AAER,MAAMC,aAAa,GAAGA,CAACL,IAA6B,EAAEM,KAAa,KAAW;EAC5E,MAAMC,KAAK,GAAGR,eAAe,CAACC,IAAI,CAAC;EACnC,IAAIO,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;EACxBD,KAAK,CAAC,CAACD,KAAK,GAAGC,KAAK,CAACC,MAAM,IAAID,KAAK,CAACC,MAAM,CAAC,EAAEC,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGA,CAC9BC,OAAgB,EAChBX,IAAuC,EACvCY,QAA0B,EAC1BC,QAA2C,EAC3CC,GAAG,GAAG,CAAC,KAC2B;EAClC,IAAIC,IAAI,GAAGJ,OAAO,CAACI,IAAI;EACvB,IAAIC,GAAG,GAAGL,OAAO,CAACM,MAAM,GAAGH,GAAG;EAE9B,IAAIF,QAAQ,KAAK,aAAa,IAAIA,QAAQ,KAAK,UAAU,EAAEG,IAAI,GAAGJ,OAAO,CAACO,KAAK,GAAGlB,IAAI,CAACmB,KAAK;EAC5F,IAAIP,QAAQ,KAAK,WAAW,IAAIA,QAAQ,KAAK,UAAU,EAAEI,GAAG,GAAGL,OAAO,CAACK,GAAG,GAAGhB,IAAI,CAACoB,MAAM,GAAGN,GAAG;EAC9F,IAAIF,QAAQ,KAAK,aAAa,EAAE;IAC9BG,IAAI,GAAGJ,OAAO,CAACO,KAAK,GAAGJ,GAAG;IAC1BE,GAAG,GAAGL,OAAO,CAACK,GAAG;EACnB;EAEA,OAAO;IACLD,IAAI,EAAEM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACR,IAAI,EAAEF,QAAQ,CAACM,KAAK,GAAGnB,IAAI,CAACmB,KAAK,GAAG,CAAC,CAAC,CAAC;IAClEH,GAAG,EAAEK,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACP,GAAG,EAAEH,QAAQ,CAACO,MAAM,GAAGpB,IAAI,CAACoB,MAAM,GAAG,CAAC,CAAC;EACnE,CAAC;AACH,CAAC;AAED,MAAMI,WAAW,GAAIC,KAAqF,KAAAC,iBAAA,CAErGnC,IAAI;EAAA,IAACoC,IAAIA,CAAA;IAAA,OAAEF,KAAK,CAACG,KAAK;EAAA;EAAA,IAAEC,QAAQA,CAAA;IAAA,OAAAH,iBAAA,CAAGnC,IAAI;MAAA,IAACoC,IAAIA,CAAA;QAAA,OAAEF,KAAK,CAACK,IAAI;MAAA;MAAAC,QAAA,EAAID,IAAI,IAAAE,KAAA,CAAAC,OAAA,EAAAC,cAAA,UAAAC,QAAA,CAAeL,IAAI,CAAC,CAAC;IAAuB;EAAA;EAAAC,QAAA,EACzGH,KAAK,IAAAI,KAAA,CAAAI,OAAA,EAAAF,cAAA,QAAAC,QAAA,CAA2CP,KAAK,CAAC,CAAC;AAAW,IAAAI,KAAA,CAAAK,MAAA,EAAAF,QAAA,CAG7DV,KAAK,CAACM,QAAQ,GAAAI,QAAA,CAAAT,iBAAA,CACpBnC,IAAI;EAAA,IAACoC,IAAIA,CAAA;IAAA,OAAEF,KAAK,CAACa,WAAW;EAAA;EAAAP,QAAA,EAAIO,WAAW,IAAAN,KAAA,CAAAO,OAAA,EAAAJ,QAAA,CAAaG,WAAW,CAAC,CAAC;AAAS,KAGpF;AAED,OAAO,SAASE,YAAYA,CAACf,KAAwB,EAAe;EAClE,MAAMzB,IAAI,GAAGP,UAAU,CAACI,WAAW,CAAC;EACpC,MAAM4C,MAAM,GAAGA,CAAA,KAAMhB,KAAK,CAACgB,MAAM,IAAIhB,KAAK,CAACiB,OAAO,KAAK,QAAQ;EAC/D,MAAMC,OAAO,GAAGnB,WAAW,CAACC,KAAK,CAAC;EAElC,OAAAC,iBAAA,CACGnC,IAAI;IAAA,IACHoC,IAAIA,CAAA;MAAA,OAAE,CAACF,KAAK,CAACmB,QAAQ,GAAGnB,KAAK,CAACoB,IAAI,GAAGC,SAAS;IAAA;IAAA,IAC9CjB,QAAQA,CAAA;MAAA,OAAAG,KAAA,CAAAe,OAAA,EAKG,sBAAAZ,QAAA,CAAsBV,KAAK,CAACuB,KAAK,IAAI,EAAE,SAAE,EAAAd,cAAA,gBACnCO,MAAM,CAAC,CAAC,GAAG,MAAM,GAAAN,QAAA,CAAGW,SAAS,iBAAAZ,cAAA,aAChCT,KAAK,CAACmB,QAAQ,UAAAV,cAAA,kBACTT,KAAK,CAACmB,QAAQ,GAAG,MAAM,GAAAT,QAAA,CAAGW,SAAS,iBAAAX,QAAA,CAQjDQ,OAAO;IAAA;IAAAZ,QAAA,EAIVc,IAAI,IAAAb,KAAA,CAAAiB,OAAA,EAAAf,cAAA,SAAAC,QAAA,CAEIU,IAAI,CAAC,CAAC,kBAAAX,cAAA,WACJT,KAAK,CAACyB,QAAQ,GAAG,QAAQ,GAAAf,QAAA,CAAGW,SAAS,kBAAAZ,cAAA,QACxCT,KAAK,CAACyB,QAAQ,GAAG,qBAAqB,GAAAf,QAAA,CAAGW,SAAS,iBAGhD,sBAAAX,QAAA,CAAsBV,KAAK,CAACuB,KAAK,IAAI,EAAE,SAAE,EAAAd,cAAA,gBACnCO,MAAM,CAAC,CAAC,GAAG,MAAM,GAAAN,QAAA,CAAGW,SAAS,iBAAAX,QAAA,CAMzCQ,OAAO;EAEX;AAGP;AAEA,SAASQ,kBAAkBA,CAAC1B,KAAqB,EAAe;EAC9D,MAAMzB,IAAI,GAAGP,UAAU,CAACI,WAAW,CAAC;EACpC,MAAMuD,OAAO,GAAGA,CAAA,KAAO,OAAO3B,KAAK,CAAC2B,OAAO,KAAK,UAAU,GAAG3B,KAAK,CAAC2B,OAAO,CAAC,CAAC,GAAG3B,KAAK,CAAC2B,OAAQ;EAC7F,QACE;IAAApB,KAAA,CAAAqB,OAAA,EAAAnB,cAAA,SAGQT,KAAK,CAAC6B,MAAM,KAAK,UAAU,GAAG,kBAAkB,GAAG,eAAe,WAAApB,cAAA,iBAAAC,QAAA,CAC1DiB,OAAO,CAAC,CAAC,kBAAAlB,cAAA,kBACRT,KAAK,CAACmB,QAAQ,GAAG,MAAM,GAAAT,QAAA,CAAGW,SAAS,iBAE3C,sBAAAX,QAAA,CAAsBV,KAAK,CAACuB,KAAK,IAAI,EAAE,SAAE,EAAAd,cAAA,kBACjCkB,OAAO,CAAC,CAAC,GAAG,MAAM,GAAAjB,QAAA,CAAGW,SAAS,iBAAAZ,cAAA,aACnCT,KAAK,CAACmB,QAAQ,SAAAT,QAAA,CAAAT,iBAAA,CAQvBnC,IAAI;MAAA,IAACoC,IAAIA,CAAA;QAAA,OAAEF,KAAK,CAAC6B,MAAM,KAAK,UAAU;MAAA;MAAA,IAAAvB,SAAA;QAAA,OAAAC,KAAA,CAAAuB,OAAA,EAAApB,QAAA,CAAAT,iBAAA,CAElCnC,IAAI;UAAA,IAACoC,IAAIA,CAAA;YAAA,OAAEyB,OAAO,CAAC,CAAC;UAAA;UAAA,IAAArB,SAAA;YAAA,OAAAC,KAAA,CAAAwB,OAAA;UAAA;QAAA;MAAA;IAAA,KAAArB,QAAA,CAAAT,iBAAA,CAKxBnC,IAAI;MAAA,IAACoC,IAAIA,CAAA;QAAA,OAAEF,KAAK,CAACG,KAAK;MAAA;MAAA,IAAEC,QAAQA,CAAA;QAAA,OAAAH,iBAAA,CAAGnC,IAAI;UAAA,IAACoC,IAAIA,CAAA;YAAA,OAAEF,KAAK,CAACK,IAAI;UAAA;UAAAC,QAAA,EAAID,IAAI,IAAAE,KAAA,CAAAC,OAAA,EAAAC,cAAA,UAAAC,QAAA,CAAeL,IAAI,CAAC,CAAC;QAAuB;MAAA;MAAAC,QAAA,EACzGH,KAAK,IAAAI,KAAA,CAAAI,OAAA,EAAAF,cAAA,QAAAC,QAAA,CAA2CP,KAAK,CAAC,CAAC;IAAW,KAAAO,QAAA,CAAAT,iBAAA,CAErEnC,IAAI;MAAA,IAACoC,IAAIA,CAAA;QAAA,OAAEF,KAAK,CAACgC,KAAK;MAAA;MAAA1B,QAAA,EACnB0B,KAAK,IAAAzB,KAAA,CAAA0B,OAAA,EAAAC,kBAAA,0BAAAxB,QAAA,CAAwEsB,KAAK,CAAC,CAAC;IAAyB,KAAAtB,QAAA,CAGxGV,KAAK,CAACmC,KAAK,GAAAzB,QAAA,CAAAT,iBAAA,CACjBnC,IAAI;MAAA,IAACoC,IAAIA,CAAA;QAAA,OAAEF,KAAK,CAACa,WAAW;MAAA;MAAAP,QAAA,EAAIO,WAAW,IAAAN,KAAA,CAAAO,OAAA,EAAAJ,QAAA,CAAaG,WAAW,CAAC,CAAC;IAAS,KAAAH,QAAA,CAAAT,iBAAA,CAEhFnC,IAAI;MAAA,IAACoC,IAAIA,CAAA;QAAA,OAAEF,KAAK,CAAC6B,MAAM,KAAK,OAAO,IAAIF,OAAO,CAAC,CAAC;MAAA;MAAA,IAAArB,SAAA;QAAA,OAAAC,KAAA,CAAA6B,OAAA;MAAA;IAAA;EAAA;AAKvD;AAEA,OAAO,SAASC,aAAaA,CAACrC,KAAkF,EAAe;EAC7H,MAAMsC,QAAQ,GAAGpE,aAAa,CAAC,CAAC;EAChC,MAAMqE,UAAU,GAAIC,IAAqC,IACvD,QAAQ,IAAIA,IAAI,GAAAvC,iBAAA,CACbyB,kBAAkB,EAAKc,IAAI,IAAAvC,iBAAA,CAE3Bc,YAAY;IAAA,IACXV,IAAIA,CAAA;MAAA,OAAEmC,IAAI,CAACnC,IAAI;IAAA;IAAA,IACfF,KAAKA,CAAA;MAAA,OAAEqC,IAAI,CAACrC,KAAK;IAAA;IAAA,IACjBU,WAAWA,CAAA;MAAA,OAAE2B,IAAI,CAAC3B,WAAW;IAAA;IAAA,IAC7BI,OAAOA,CAAA;MAAA,OAAEuB,IAAI,CAACvB,OAAO;IAAA;IAAA,IACrBE,QAAQA,CAAA;MAAA,OAAEqB,IAAI,CAACrB,QAAQ;IAAA;IAAA,aAAAI,CAAA;MAAA,OAChBiB,IAAI,CAACjB,KAAK;IAAA;IAAA,IACjBH,IAAIA,CAAA;MAAA,OAAE,MAAM,IAAIoB,IAAI,GAAGA,IAAI,CAACpB,IAAI,GAAGC,SAAS;IAAA;IAAA,IAC5CI,QAAQA,CAAA;MAAA,OAAE,UAAU,IAAIe,IAAI,GAAGA,IAAI,CAACf,QAAQ,GAAGJ,SAAS;IAAA;IAAA,IACxDoB,QAAQA,CAAA;MAAA,OAAE,QAAQ,IAAID,IAAI,GAAGA,IAAI,CAACE,MAAM,GAAGrB,SAAS;IAAA;IAAA,IAAAf,SAAA;MAAA,OAEnDkC,IAAI,CAACL,KAAK;IAAA;EAAA,EAEd;EAEH,OAAAlC,iBAAA,CACG7B,WAAW,CAACuE,QAAQ;IAAA,IAACC,KAAKA,CAAA;MAAA,OAAE;QAAEC,KAAK,EAAE7C,KAAK,CAAC6C;MAAM,CAAC;IAAA;IAAA,IAAAvC,SAAA;MAAA,OAAAL,iBAAA,CAChDtC,GAAG;QAAA,IAACmF,IAAIA,CAAA;UAAA,OAAE9C,KAAK,CAAClB,KAAK;QAAA;QAAAwB,QAAA,EACnBA,CAACkC,IAAI,EAAE3D,KAAK,KAAAoB,iBAAA,CACVnC,IAAI;UAAA,IAACoC,IAAIA,CAAA;YAAA,OAAE,OAAO,IAAIsC,IAAI;UAAA;UAAA,IAAEpC,QAAQA,CAAA;YAAA,OAAEmC,UAAU,CAACC,IAAuC,CAAC;UAAA;UAAA,IAAAlC,SAAA;YAAA,OAAAC,KAAA,CAAAwC,QAAA,EAAAtC,cAAA,iBAGxE5B,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAA6B,QAAA,CAAGW,SAAS,iBAAAZ,cAAA,eAAAC,QAAA,CAEjC8B,IAAI,CAAqBQ,YAAY,IAAIV,QAAQ,CAAC,CAAC,CAACW,OAAO,iBAAAvC,QAAA,CAAAT,iBAAA,CAEvEnC,IAAI;cAAA,IAACoC,IAAIA,CAAA;gBAAA,OAAGsC,IAAI,CAAqBQ,YAAY;cAAA;cAAA1C,QAAA,EAAI6B,KAAK,IAAA5B,KAAA,CAAA2C,QAAA,EAAAxC,QAAA,CAAuCyB,KAAK,CAAC,CAAC;YAAO,KAAAzB,QAAA,CAAAT,iBAAA,CAC/GtC,GAAG;cAAA,IAACmF,IAAIA,CAAA;gBAAA,OAAGN,IAAI,CAAqB1D,KAAK;cAAA;cAAAwB,QAAA,EAAGiC;YAAU;UAAA;QAAA;MAG5D;IAAA;EAAA;AAIT;AAEA,SAASY,eAAeA,CAACnD,KAA2B,EAAe;EACjE,MAAMoD,OAAO,GAAGpF,UAAU,CAACK,eAAe,CAAC;EAC3C,IAAI,CAAC+E,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,oDAAoD,CAAC;EACnF,MAAM,CAACC,KAAK,EAAEC,IAAI,CAAC,GAAGxF,UAAU,CAACiC,KAAK,EAAE,CACtC,YAAY,EACZ,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,OAAO,EACP,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,MAAM,EACN,SAAS,CACV,CAAC;EACF,IAAIwD,MAAqC;EACzC,MAAMrC,QAAQ,GAAGA,CAAA,KAAMsC,OAAO,CAACL,OAAO,CAACjC,QAAQ,CAAC,CAAC,IAAImC,KAAK,CAACnC,QAAQ,CAAC;EACpE,MAAMuC,QAAQ,GAAIC,OAA0B,IAAK;IAC/CH,MAAM,GAAGG,OAAO;IAChBP,OAAO,CAACQ,eAAe,CAACD,OAAO,CAAC;IAChC,IAAI,OAAOL,KAAK,CAACO,GAAG,KAAK,UAAU,EAAEP,KAAK,CAACO,GAAG,CAACF,OAAO,CAAC;EACzD,CAAC;EACD,MAAMG,KAA2D,GAAIC,KAAK,IAAK;IAC7EA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvBZ,OAAO,CAACa,MAAM,CAAC,CAAC;EAClB,CAAC;EAED,IAAIX,KAAK,CAACY,UAAU,KAAK,OAAO,EAAE;IAChC,OAAAjE,iBAAA,CACG9B,MAAM,EAAAgG,YAAA,CACDZ,IAAI;MAAA,qBAAAa,CAAA;QAAA,OAEOhB,OAAO,CAACiB,MAAM;MAAA;MAAA,qBAAAC,CAAA;QAAA,OACdlB,OAAO,CAACmB,IAAI,CAAC,CAAC;MAAA;MAAA;MAAA,kBAAAC,CAAA;QAAA,OAEjBlB,KAAK,CAACnB,KAAK;MAAA;MAAA,IACvBhB,QAAQA,CAAA;QAAA,OAAEA,QAAQ,CAAC,CAAC;MAAA;MAAA,IACpBsD,QAAQA,CAAA;QAAA,OAAEtD,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGmC,KAAK,CAACmB,QAAQ;MAAA;MAC1CC,OAAO,EAAEZ,KAAK;MAAA,IACda,SAASA,CAAA;QAAA,OAAEvB,OAAO,CAACwB,cAAc;MAAA;MAAA,IACjCC,IAAIA,CAAA;QAAA,OAAEvB,KAAK,CAACuB,IAAI,IAAI,QAAQ;MAAA;MAAA,aAAAtD,CAAA;QAAA,OACrB,GAAG+B,KAAK,CAACwB,QAAQ,GAAG,iBAAiB,GAAG,EAAE,0BAA0BxB,KAAK,CAAC/B,KAAK,IAAI,EAAE,EAAE;MAAA;MAAA,IAC9FwD,IAAIA,CAAA;QAAA,OAAEzB,KAAK,CAACyB,IAAI;MAAA;MAAA,IAChB9D,OAAOA,CAAA;QAAA,OAAEqC,KAAK,CAACrC,OAAO,KAAKqC,KAAK,CAACwB,QAAQ,GAAG,OAAO,GAAGzD,SAAS,CAAC;MAAA;MAAA,IAChE2D,OAAOA,CAAA;QAAA,OAAE1B,KAAK,CAAC0B,OAAO;MAAA;MAAA,IACtBC,YAAYA,CAAA;QAAA,OAAE3B,KAAK,CAAC2B,YAAY;MAAA;MAAA,IAChCC,gBAAgBA,CAAA;QAAA,OAAE5B,KAAK,CAAC4B,gBAAgB;MAAA;MAAA,IAAA5E,SAAA;QAAA,OAEvCgD,KAAK,CAAChD,QAAQ;MAAA;IAAA;EAGrB;EAEA,QAAA6E,YAAA,WAAAhB,YAAA,CAGUZ,IAAI;IAAA,qBAAAa,CAAA;MAAA,OAEOhB,OAAO,CAACiB,MAAM;IAAA;IAAA,qBAAAC,CAAA;MAAA,OACdlB,OAAO,CAACmB,IAAI,CAAC,CAAC;IAAA;IAAA,iBACf,MAAM;IAAA,kBAAAC,CAAA;MAAA,OACRlB,KAAK,CAACnB,KAAK;IAAA;IAAA,IACvBhB,QAAQA,CAAA;MAAA,OAAEA,QAAQ,CAAC,CAAC;IAAA;IAAA,IACpBsD,QAAQA,CAAA;MAAA,OAAEtD,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGmC,KAAK,CAACmB,QAAQ;IAAA;IAAA,IAG1CI,IAAIA,CAAA;MAAA,OAAEvB,KAAK,CAACuB,IAAI,IAAI,QAAQ;IAAA;IAAA,aAAAtD,CAAA;MAAA,OACrB,yBAAyB+B,KAAK,CAAC/B,KAAK,IAAI,EAAE,EAAE;IAAA;EAAA,IAAAb,QAAA,CAElD4C,KAAK,CAAChD,QAAQ,WAAAL,iBAAA,CAEhBnC,IAAI;IAAA,IAACoC,IAAIA,CAAA;MAAA,OAAEoD,KAAK,CAAC0B,OAAO,KAAK,KAAK,IAAI1B,KAAK,CAAC0B,OAAO,KAAK3D,SAAS;IAAA;IAAA,IAAAf,SAAA;MAAA,OAAAL,iBAAA,CAC/DhC,OAAO;QAAA,IACNiD,OAAOA,CAAA;UAAA,OAAEoC,KAAK,CAAC0B,OAAO;QAAA;QACtBxB,MAAM,EAAEA,CAAA,KAAMA,MAAM;QAAA,IACpB4B,KAAKA,CAAA;UAAA,OAAE9B,KAAK,CAAC2B,YAAY;QAAA;QAAA,IACzB9D,QAAQA,CAAA;UAAA,OAAEA,QAAQ,CAAC,CAAC;QAAA;QAAA,IACpBkE,SAASA,CAAA;UAAA,OAAE/B,KAAK,CAAC4B,gBAAgB;QAAA;MAAA;IAAA;EAAA;AAK3C;;AAEA;AACA,SAASI,YAAYA,CAACtF,KAAoB,EAAe;EACvD,MAAMsC,QAAQ,GAAGpE,aAAa,CAAC,CAAC;EAChC,MAAMqH,EAAE,GAAG7H,cAAc,CAAC,CAAC,CAAC8H,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;EAC3D,MAAMnB,MAAM,GAAG,gBAAgBkB,EAAE,EAAE;EACnC,MAAM,CAACE,YAAY,EAAEC,eAAe,CAAC,GAAGjI,YAAY,CAAC,KAAK,CAAC;EAC3D,IAAIkI,UAAyC;EAC7C,IAAIC,OAAmC;EACvC,IAAIC,OAAO,GAAG,KAAK;EACnB,IAAIC,yBAAyB,GAAG,KAAK;EAErC,MAAMC,MAAM,GAAGA,CAAA,KAAM/F,KAAK,CAACuE,IAAI,IAAIkB,YAAY,CAAC,CAAC;EACjD,MAAMtG,QAAQ,GAAGA,CAAA,KACf,OAAOa,KAAK,CAACb,QAAQ,KAAK,UAAU,GAAGa,KAAK,CAACb,QAAQ,CAAC,CAAC,GAAIa,KAAK,CAACb,QAAQ,KAAKa,KAAK,CAACgG,KAAK,KAAK,KAAK,GAAG,aAAa,GAAG,cAAc,CAAE;EAExI,MAAMC,KAAK,GAAGA,CAAA,KAAM;IAClB,IAAI,CAACN,UAAU,IAAI,CAACC,OAAO,EAAE;IAC7B,MAAMM,IAAI,GAAGjH,gBAAgB,CAAC0G,UAAU,CAACQ,qBAAqB,CAAC,CAAC,EAAEP,OAAO,CAACO,qBAAqB,CAAC,CAAC,EAAEhH,QAAQ,CAAC,CAAC,EAAE;MAC7GO,KAAK,EAAE0G,MAAM,CAACC,UAAU;MACxB1G,MAAM,EAAEyG,MAAM,CAACE;IACjB,CAAC,CAAC;IACFV,OAAO,CAACW,KAAK,CAACjH,IAAI,GAAG,GAAG4G,IAAI,CAAC5G,IAAI,IAAI;IACrCsG,OAAO,CAACW,KAAK,CAAChH,GAAG,GAAG,GAAG2G,IAAI,CAAC3G,GAAG,IAAI;EACrC,CAAC;EACD,MAAMiH,UAAU,GAAGA,CAAA,KAAM;IACvB,IAAIT,MAAM,CAAC,CAAC,EAAEE,KAAK,CAAC,CAAC;EACvB,CAAC;EACD,MAAMQ,uBAAuB,GAAGA,CAAA,KAAM;IACpC,IAAIX,yBAAyB,EAAE;IAC/BA,yBAAyB,GAAG,IAAI;IAChCM,MAAM,CAACM,gBAAgB,CAAC,QAAQ,EAAEF,UAAU,CAAC;IAC7CJ,MAAM,CAACM,gBAAgB,CAAC,QAAQ,EAAEF,UAAU,EAAE,IAAI,CAAC;EACrD,CAAC;EACD,MAAMG,uBAAuB,GAAGA,CAAA,KAAM;IACpC,IAAI,CAACb,yBAAyB,EAAE;IAChCA,yBAAyB,GAAG,KAAK;IACjCM,MAAM,CAACQ,mBAAmB,CAAC,QAAQ,EAAEJ,UAAU,CAAC;IAChDJ,MAAM,CAACQ,mBAAmB,CAAC,QAAQ,EAAEJ,UAAU,EAAE,IAAI,CAAC;EACxD,CAAC;EACD,MAAM3D,KAAK,GAAGA,CAACgE,YAAY,GAAG,IAAI,KAAK;IACrC,IAAIjB,OAAO,EAAEkB,OAAO,CAAC,eAAe,CAAC,EAAElB,OAAO,CAACmB,WAAW,CAAC,CAAC;IAC5DJ,uBAAuB,CAAC,CAAC;IACzB,IAAIE,YAAY,EAAEG,cAAc,CAAC,MAAMrB,UAAU,EAAE3G,KAAK,CAAC,CAAC,CAAC;EAC7D,CAAC;EACD,MAAMuF,IAAI,GAAGA,CAACvF,KAA+B,GAAG,OAAO,KAAK;IAC1D,IAAIgB,KAAK,CAACmB,QAAQ,IAAI,CAACyE,OAAO,IAAIA,OAAO,CAACkB,OAAO,CAAC,eAAe,CAAC,EAAE;IACpElB,OAAO,CAACqB,WAAW,CAAC,CAAC;IACrBR,uBAAuB,CAAC,CAAC;IACzBR,KAAK,CAAC,CAAC;IACPe,cAAc,CAAC,MAAM;MACnB,IAAIhI,KAAK,EAAEJ,aAAa,CAACgH,OAAO,EAAE5G,KAAK,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;EACJ,CAAC;EACD,MAAMkI,WAAW,GAAGA,CAACC,IAAa,EAAEnI,KAA+B,GAAG,OAAO,KAAK;IAChF,IAAIgB,KAAK,CAACmB,QAAQ,IAAIgG,IAAI,EAAE;IAC5B,IAAInH,KAAK,CAACuE,IAAI,KAAKlD,SAAS,EAAE;MAC5BrB,KAAK,CAACoH,YAAY,GAAGD,IAAI,CAAC;MAC1B;IACF;IACA,IAAIA,IAAI,EAAE5C,IAAI,CAACvF,KAAK,CAAC,CAAC,KACjB6D,KAAK,CAAC,KAAK,CAAC;EACnB,CAAC;EACD,MAAMwE,iBAAiB,GAAItD,KAAoB,IAAK;IAClD,MAAMjF,KAAK,GAAGR,eAAe,CAACsH,OAAO,CAAC;IACtC,MAAM0B,OAAO,GAAGxI,KAAK,CAACyI,OAAO,CAACC,QAAQ,CAACC,aAA4B,CAAC;IACpE,IAAI1D,KAAK,CAAC2D,GAAG,KAAK,WAAW,IAAI3D,KAAK,CAAC2D,GAAG,KAAK,SAAS,EAAE;MACxD3D,KAAK,CAAC4D,cAAc,CAAC,CAAC;MACtB/I,aAAa,CAACgH,OAAO,EAAE0B,OAAO,IAAIvD,KAAK,CAAC2D,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,MAAM,IAAI3D,KAAK,CAAC2D,GAAG,KAAK,MAAM,IAAI3D,KAAK,CAAC2D,GAAG,KAAK,KAAK,EAAE;MACtD3D,KAAK,CAAC4D,cAAc,CAAC,CAAC;MACtB/I,aAAa,CAACgH,OAAO,EAAE7B,KAAK,CAAC2D,GAAG,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC,MAAM,IAAI3D,KAAK,CAAC2D,GAAG,KAAK,QAAQ,EAAE;MACjC3D,KAAK,CAAC4D,cAAc,CAAC,CAAC;MACtBT,WAAW,CAAC,KAAK,CAAC;MAClBF,cAAc,CAAC,MAAMrB,UAAU,EAAE3G,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC,MAAM,IAAI+E,KAAK,CAAC2D,GAAG,KAAK,KAAK,EAAE;MAC9BR,WAAW,CAAC,KAAK,CAAC;IACpB;EACF,CAAC;EAED,MAAM9D,OAA6B,GAAG;IACpCjC,QAAQ,EAAEA,CAAA,KAAMsC,OAAO,CAACzD,KAAK,CAACmB,QAAQ,CAAC;IACvCkD,MAAM;IACNE,IAAI,EAAEwB,MAAM;IACZnC,eAAe,EAAGD,OAAO,IAAK;MAC5BgC,UAAU,GAAGhC,OAAO;IACtB,CAAC;IACDM,MAAM,EAAEA,CAAA,KAAMiD,WAAW,CAAC,CAACnB,MAAM,CAAC,CAAC,CAAC;IACpCnB,cAAc,EAAGb,KAAK,IAAK;MACzB,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC6D,QAAQ,CAAC7D,KAAK,CAAC2D,GAAG,CAAC,EAAE;MACjE3D,KAAK,CAAC4D,cAAc,CAAC,CAAC;MACtB5D,KAAK,CAACC,eAAe,CAAC,CAAC;MACvB,IAAI+B,MAAM,CAAC,CAAC,EAAE;QACZnH,aAAa,CAACgH,OAAO,EAAE7B,KAAK,CAAC2D,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD;MACF;MACAR,WAAW,CAAC,IAAI,EAAEnD,KAAK,CAAC2D,GAAG,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/D;EACF,CAAC;EAEDlK,YAAY,CAAC,MAAM;IACjB,MAAMqK,UAAU,GAAG7H,KAAK,CAACuE,IAAI;IAC7B,IAAI,CAACsB,OAAO,IAAIgC,UAAU,KAAKxG,SAAS,IAAI,CAACuE,OAAO,EAAE;IACtD,IAAIiC,UAAU,IAAI,CAACjC,OAAO,CAACkB,OAAO,CAAC,eAAe,CAAC,EAAEvC,IAAI,CAAC,KAAK,CAAC;IAChE,IAAI,CAACsD,UAAU,IAAIjC,OAAO,CAACkB,OAAO,CAAC,eAAe,CAAC,EAAEjE,KAAK,CAAC,KAAK,CAAC;EACnE,CAAC,CAAC;EACFrF,YAAY,CAAC,MAAM;IACjB,IAAIqI,OAAO,IAAI7F,KAAK,CAACmB,QAAQ,EAAE0B,KAAK,CAAC,KAAK,CAAC;EAC7C,CAAC,CAAC;EACFhF,OAAO,CAAC,MAAM;IACZgI,OAAO,GAAG,IAAI;IACd,IAAI7F,KAAK,CAACuE,IAAI,EAAEA,IAAI,CAAC,KAAK,CAAC;IAC3B3G,SAAS,CAAC+I,uBAAuB,CAAC;EACpC,CAAC,CAAC;EAEF,OAAA1G,iBAAA,CACG5B,eAAe,CAACsE,QAAQ;IAACC,KAAK,EAAEQ,OAAO;IAAA,IAAA9C,SAAA;MAAA,OAAAC,KAAA,CAAAuH,QAAA,EACzB,gBAAApH,QAAA,CAAgBV,KAAK,CAACuB,KAAK,IAAI,EAAE,SAAE,EAAAb,QAAA,CAC7CV,KAAK,CAACM,QAAQ,GAAAG,cAAA,OAAAC,QAAA,CAGT2D,MAAM,iBAAA5D,cAAA,eAAAC,QAAA,CAGEV,KAAK,CAACmC,KAAK,IAAIG,QAAQ,CAAC,CAAC,CAACyF,YAAY,iBAC3C,sBAAArH,QAAA,CAAsBV,KAAK,CAACgI,SAAS,IAAI,EAAE,SAAE,EAAAC,UAAA,CAC7CjI,KAAK,CAACN,KAAK,GAAG;QAAE,sBAAsB,EAAEM,KAAK,CAACN;MAAM,CAAC,GAAG2B,SAAS,GAAAZ,cAAA,kBAAAC,QAAA,CACzDvB,QAAQ,CAAC,CAAC,iBAAAuB,QAAA,CAAAT,iBAAA,CAaxBoC,aAAa;QAAA,IAACvD,KAAKA,CAAA;UAAA,OAAEkB,KAAK,CAAClB,KAAK;QAAA;QAAE+D,KAAK,EAAEA;MAAK;IAAA;EAAA;AAKzD;AAQA,OAAO,MAAMqF,QAAQ,GAAG5C,YAAiC;AACzD4C,QAAQ,CAACC,IAAI,GAAG7C,YAAY;AAC5B4C,QAAQ,CAACE,OAAO,GAAGjF,eAAe;AAClC+E,QAAQ,CAACG,IAAI,GAAGtH,YAAY;AAE5B,eAAemH,QAAQ","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createContext","createEffect","createSignal","createUniqueId","For","onCleanup","onMount","Show","splitProps","useContext","Tooltip","useUiMessages","Button","MenuContext","DropdownContext","actionableItems","menu","Array","from","querySelectorAll","join","focusMenuItem","index","items","length","focus","dropdownPosition","trigger","position","viewport","gap","left","top","bottom","right","width","height","Math","max","min","itemContent","props","_$createComponent","when","image","fallback","icon","children","_$ssr","_tmpl$2","_$ssrAttribute","_$escape","_tmpl$3","_tmpl$","description","_tmpl$4","DropdownItem","danger","variant","content","disabled","href","undefined","_tmpl$5","class","_tmpl$6","external","DropdownChoiceItem","checked","_tmpl$0","choice","_tmpl$8","_tmpl$7","color","_tmpl$1","_$ssrStyleProperty","label","_tmpl$9","DropdownItems","messages","renderItem","item","onSelect","action","Provider","value","close","each","_tmpl$10","sectionLabel","actions","_tmpl$11","DropdownTrigger","context","Error","local","rest","target","Boolean","register","element","registerTrigger","ref","click","event","stopPropagation","toggle","appearance","_$mergeProps","aria-controls","menuId","aria-expanded","open","aria-label","tabIndex","onClick","onKeyDown","triggerKeyDown","type","iconOnly","size","tooltip","tooltipDelay","tooltipPlacement","_$ssrElement","delay","placement","DropdownRoot","id","replace","internalOpen","setInternalOpen","triggerRef","menuRef","mounted","viewportListenersAttached","isOpen","align","place","rect","getBoundingClientRect","window","innerWidth","innerHeight","style","reposition","attachViewportListeners","addEventListener","detachViewportListeners","removeEventListener","restoreFocus","matches","hidePopover","queueMicrotask","showPopover","requestOpen","next","onOpenChange","handleMenuKeyDown","current","indexOf","document","activeElement","key","preventDefault","includes","controlled","_tmpl$12","dropdownMenu","menuClass","_$ssrStyle","Dropdown","Root","Trigger","Item"],"sources":["actions/Dropdown.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n onCleanup,\n onMount,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport { Tooltip, type TooltipPlacement } from \"../feedback/Tooltip\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from \"./Button\";\n\nexport type DropdownPosition = \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\" | \"right-start\";\n\nexport type DropdownActionBase = {\n class?: string;\n disabled?: boolean;\n icon?: string;\n image?: string;\n label: string;\n description?: string;\n variant?: \"danger\";\n};\n\nexport type DropdownAction =\n | (DropdownActionBase & {\n action: () => void;\n href?: never;\n external?: never;\n })\n | (DropdownActionBase & {\n href: string;\n external?: boolean;\n action?: never;\n })\n | (DropdownActionBase & {\n disabled: true;\n action?: never;\n href?: never;\n external?: never;\n });\n\n/** Declarative radio or checkbox row for compact action menus. */\nexport type DropdownChoice = DropdownActionBase & {\n action: () => void;\n checked: boolean | (() => boolean);\n choice: \"checkbox\" | \"radio\";\n closeOnSelect?: boolean;\n color?: string;\n};\n\nexport type DropdownSection = {\n sectionLabel?: string;\n items: readonly (DropdownAction | DropdownChoice)[];\n};\n\nexport type DropdownItem = DropdownAction | DropdownChoice | DropdownSection;\n\nexport type DropdownProps = {\n items: readonly DropdownItem[];\n children: JSX.Element;\n position?: DropdownPosition | (() => DropdownPosition);\n /** Larger menu rows and typography for touch. Defaults to `default`. */\n variant?: \"default\" | \"touch\";\n /** Menu width as a CSS length. Defaults to `12rem`, or `18rem` for touch. */\n width?: string;\n class?: string;\n menuClass?: string;\n onClose?: () => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n label?: string;\n align?: \"start\" | \"end\";\n};\n\nexport type DropdownTriggerProps = Omit<\n ButtonProps,\n \"aria-controls\" | \"aria-expanded\" | \"aria-haspopup\" | \"children\" | \"disabled\" | \"onClick\" | \"onKeyDown\"\n> & {\n children: JSX.Element;\n /** Use `plain` when a specialized component class owns the complete visual treatment. */\n appearance?: \"button\" | \"plain\";\n disabled?: boolean;\n iconOnly?: boolean;\n label?: string;\n size?: ButtonSize;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n variant?: ButtonVariant;\n};\n\nexport type DropdownItemProps = {\n children: JSX.Element;\n icon?: string;\n image?: string;\n description?: string;\n disabled?: boolean;\n danger?: boolean;\n variant?: \"danger\";\n href?: string;\n external?: boolean;\n onSelect?: () => void;\n class?: string;\n};\n\ntype MenuContextValue = {\n close: (restoreFocus?: boolean) => void;\n};\n\ntype DropdownContextValue = {\n disabled: () => boolean;\n menuId: string;\n open: () => boolean;\n registerTrigger: (element: HTMLButtonElement) => void;\n toggle: () => void;\n triggerKeyDown: JSX.EventHandlerUnion<HTMLButtonElement, KeyboardEvent>;\n};\n\nconst MenuContext = createContext<MenuContextValue>();\nconst DropdownContext = createContext<DropdownContextValue>();\n\nconst actionableItems = (menu: HTMLElement | undefined): HTMLElement[] =>\n menu\n ? Array.from(\n menu.querySelectorAll<HTMLElement>(\n [\n \"[role='menuitem']:not([aria-disabled='true'])\",\n \"[role='menuitemcheckbox']:not([aria-disabled='true'])\",\n \"[role='menuitemradio']:not([aria-disabled='true'])\",\n ].join(\", \"),\n ),\n )\n : [];\n\nconst focusMenuItem = (menu: HTMLElement | undefined, index: number): void => {\n const items = actionableItems(menu);\n if (items.length === 0) return;\n items[(index + items.length) % items.length]?.focus();\n};\n\nexport const dropdownPosition = (\n trigger: DOMRect,\n menu: Pick<DOMRect, \"width\" | \"height\">,\n position: DropdownPosition,\n viewport: { width: number; height: number },\n gap = 4,\n): { left: number; top: number } => {\n let left = trigger.left;\n let top = trigger.bottom + gap;\n\n if (position === \"bottom-left\" || position === \"top-left\") left = trigger.right - menu.width;\n if (position === \"top-right\" || position === \"top-left\") top = trigger.top - menu.height - gap;\n if (position === \"right-start\") {\n left = trigger.right + gap;\n top = trigger.top;\n }\n\n return {\n left: Math.max(8, Math.min(left, viewport.width - menu.width - 8)),\n top: Math.max(8, Math.min(top, viewport.height - menu.height - 8)),\n };\n};\n\nconst itemContent = (props: { description?: string; icon?: string; image?: string; children: JSX.Element }): JSX.Element => (\n <>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.children}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </>\n);\n\nexport function DropdownItem(props: DropdownItemProps): JSX.Element {\n const menu = useContext(MenuContext);\n const danger = () => props.danger || props.variant === \"danger\";\n const content = itemContent(props);\n\n return (\n <Show\n when={!props.disabled ? props.href : undefined}\n fallback={\n <button\n type=\"button\"\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n disabled={props.disabled}\n aria-disabled={props.disabled ? \"true\" : undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n menu?.close();\n props.onSelect?.();\n }}\n >\n {content}\n </button>\n }\n >\n {(href) => (\n <a\n href={href()}\n target={props.external ? \"_blank\" : undefined}\n rel={props.external ? \"noopener noreferrer\" : undefined}\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n onClick={() => {\n menu?.close(false);\n props.onSelect?.();\n }}\n >\n {content}\n </a>\n )}\n </Show>\n );\n}\n\nfunction DropdownChoiceItem(props: DropdownChoice): JSX.Element {\n const menu = useContext(MenuContext);\n const checked = () => (typeof props.checked === \"function\" ? props.checked() : props.checked);\n return (\n // biome-ignore lint/a11y/useAriaPropsSupportedByRole: the runtime role is always menuitemcheckbox or menuitemradio, both of which support aria-checked.\n <button\n type=\"button\"\n role={props.choice === \"checkbox\" ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={checked()}\n aria-disabled={props.disabled ? \"true\" : undefined}\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-selected={checked() ? \"true\" : undefined}\n disabled={props.disabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n if (props.closeOnSelect !== false) menu?.close();\n props.action();\n }}\n >\n <Show when={props.choice === \"checkbox\"}>\n <span class=\"k2b-dropdown__checkbox\" aria-hidden=\"true\">\n <Show when={checked()}>\n <i class=\"ti ti-check\" />\n </Show>\n </span>\n </Show>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <Show when={props.color}>\n {(color) => <span class=\"k2b-dropdown__color\" style={{ \"--k2b-dropdown-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.label}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.choice === \"radio\" && checked()}>\n <i class=\"ti ti-check k2b-dropdown__check\" aria-hidden=\"true\" />\n </Show>\n </button>\n );\n}\n\nexport function DropdownItems(props: { items: readonly DropdownItem[]; close: (restoreFocus?: boolean) => void }): JSX.Element {\n const messages = useUiMessages();\n const renderItem = (item: DropdownAction | DropdownChoice): JSX.Element =>\n \"choice\" in item ? (\n <DropdownChoiceItem {...item} />\n ) : (\n <DropdownItem\n icon={item.icon}\n image={item.image}\n description={item.description}\n variant={item.variant}\n disabled={item.disabled}\n class={item.class}\n href={\"href\" in item ? item.href : undefined}\n external={\"external\" in item ? item.external : undefined}\n onSelect={\"action\" in item ? item.action : undefined}\n >\n {item.label}\n </DropdownItem>\n );\n\n return (\n <MenuContext.Provider value={{ close: props.close }}>\n <For each={props.items}>\n {(item, index) => (\n <Show when={\"items\" in item} fallback={renderItem(item as DropdownAction | DropdownChoice)}>\n <div\n class=\"k2b-dropdown__section\"\n data-divided={index() > 0 ? \"true\" : undefined}\n role=\"group\"\n aria-label={(item as DropdownSection).sectionLabel ?? messages().actions}\n >\n <Show when={(item as DropdownSection).sectionLabel}>{(label) => <div class=\"k2b-dropdown__label\">{label()}</div>}</Show>\n <For each={(item as DropdownSection).items}>{renderItem}</For>\n </div>\n </Show>\n )}\n </For>\n </MenuContext.Provider>\n );\n}\n\nfunction DropdownTrigger(props: DropdownTriggerProps): JSX.Element {\n const context = useContext(DropdownContext);\n if (!context) throw new Error(\"Dropdown.Trigger must be used inside Dropdown.Root\");\n const [local, rest] = splitProps(props, [\n \"appearance\",\n \"children\",\n \"class\",\n \"disabled\",\n \"iconOnly\",\n \"label\",\n \"ref\",\n \"size\",\n \"tabIndex\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"type\",\n \"variant\",\n ]);\n let target: HTMLButtonElement | undefined;\n const disabled = () => Boolean(context.disabled() || local.disabled);\n const register = (element: HTMLButtonElement) => {\n target = element;\n context.registerTrigger(element);\n if (typeof local.ref === \"function\") local.ref(element);\n };\n const click: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> = (event) => {\n event.stopPropagation();\n context.toggle();\n };\n\n if (local.appearance !== \"plain\") {\n return (\n <Button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`${local.iconOnly ? \"k2b-icon-button\" : \"\"} k2b-dropdown__trigger ${local.class ?? \"\"}`}\n size={local.size}\n variant={local.variant ?? (local.iconOnly ? \"ghost\" : undefined)}\n tooltip={local.tooltip}\n tooltipDelay={local.tooltipDelay}\n tooltipPlacement={local.tooltipPlacement}\n >\n {local.children}\n </Button>\n );\n }\n\n return (\n <>\n <button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`k2b-dropdown__trigger ${local.class ?? \"\"}`}\n >\n {local.children}\n </button>\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip\n content={local.tooltip as JSX.Element}\n target={() => target}\n delay={local.tooltipDelay}\n disabled={disabled()}\n placement={local.tooltipPlacement}\n />\n </Show>\n </>\n );\n}\n\n/** Accessible top-layer menu with explicit trigger ownership. */\nfunction DropdownRoot(props: DropdownProps): JSX.Element {\n const messages = useUiMessages();\n const id = createUniqueId().replace(/[^a-zA-Z0-9_-]/g, \"-\");\n const menuId = `k2b-dropdown-${id}`;\n const [internalOpen, setInternalOpen] = createSignal(false);\n let triggerRef: HTMLButtonElement | undefined;\n let menuRef: HTMLDivElement | undefined;\n let mounted = false;\n let viewportListenersAttached = false;\n\n const isOpen = () => props.open ?? internalOpen();\n const position = (): DropdownPosition =>\n typeof props.position === \"function\" ? props.position() : (props.position ?? (props.align === \"end\" ? \"bottom-left\" : \"bottom-right\"));\n\n const place = () => {\n if (!triggerRef || !menuRef) return;\n const rect = dropdownPosition(triggerRef.getBoundingClientRect(), menuRef.getBoundingClientRect(), position(), {\n width: window.innerWidth,\n height: window.innerHeight,\n });\n menuRef.style.left = `${rect.left}px`;\n menuRef.style.top = `${rect.top}px`;\n };\n const reposition = () => {\n if (isOpen()) place();\n };\n const attachViewportListeners = () => {\n if (viewportListenersAttached) return;\n viewportListenersAttached = true;\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n };\n const detachViewportListeners = () => {\n if (!viewportListenersAttached) return;\n viewportListenersAttached = false;\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n };\n const close = (restoreFocus = true) => {\n if (menuRef?.matches(\":popover-open\")) menuRef.hidePopover();\n detachViewportListeners();\n if (restoreFocus) queueMicrotask(() => triggerRef?.focus());\n };\n const open = (focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled || !menuRef || menuRef.matches(\":popover-open\")) return;\n menuRef.showPopover();\n attachViewportListeners();\n place();\n queueMicrotask(() => {\n if (focus) focusMenuItem(menuRef, focus === \"first\" ? 0 : -1);\n });\n };\n const requestOpen = (next: boolean, focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled && next) return;\n if (props.open !== undefined) {\n props.onOpenChange?.(next);\n return;\n }\n if (next) open(focus);\n else close(false);\n };\n const handleMenuKeyDown = (event: KeyboardEvent) => {\n const items = actionableItems(menuRef);\n const current = items.indexOf(document.activeElement as HTMLElement);\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n focusMenuItem(menuRef, current + (event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focusMenuItem(menuRef, event.key === \"Home\" ? 0 : -1);\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n requestOpen(false);\n queueMicrotask(() => triggerRef?.focus());\n } else if (event.key === \"Tab\") {\n requestOpen(false);\n }\n };\n\n const context: DropdownContextValue = {\n disabled: () => Boolean(props.disabled),\n menuId,\n open: isOpen,\n registerTrigger: (element) => {\n triggerRef = element;\n },\n toggle: () => requestOpen(!isOpen()),\n triggerKeyDown: (event) => {\n if (![\"Enter\", \" \", \"ArrowDown\", \"ArrowUp\"].includes(event.key)) return;\n event.preventDefault();\n event.stopPropagation();\n if (isOpen()) {\n focusMenuItem(menuRef, event.key === \"ArrowUp\" ? -1 : 0);\n return;\n }\n requestOpen(true, event.key === \"ArrowUp\" ? \"last\" : \"first\");\n },\n };\n\n createEffect(() => {\n const controlled = props.open;\n if (!mounted || controlled === undefined || !menuRef) return;\n if (controlled && !menuRef.matches(\":popover-open\")) open(false);\n if (!controlled && menuRef.matches(\":popover-open\")) close(false);\n });\n createEffect(() => {\n if (mounted && props.disabled) close(false);\n });\n onMount(() => {\n mounted = true;\n if (props.open) open(false);\n onCleanup(detachViewportListeners);\n });\n\n return (\n <DropdownContext.Provider value={context}>\n <span class={`k2b-dropdown ${props.class ?? \"\"}`}>\n {props.children}\n <div\n ref={menuRef}\n id={menuId}\n popover=\"auto\"\n role=\"menu\"\n aria-label={props.label ?? messages().dropdownMenu}\n class={`k2b-dropdown__menu ${props.menuClass ?? \"\"}`}\n style={props.width ? { \"--k2b-dropdown-width\": props.width } : undefined}\n data-variant={props.variant ?? \"default\"}\n data-position={position()}\n onKeyDown={handleMenuKeyDown}\n onToggle={(event) => {\n const nextOpen = (event as ToggleEvent).newState === \"open\";\n const wasOpen = internalOpen();\n setInternalOpen(nextOpen);\n if (nextOpen) attachViewportListeners();\n else detachViewportListeners();\n if (props.open === undefined || props.open !== nextOpen) props.onOpenChange?.(nextOpen);\n if (wasOpen && !nextOpen) props.onClose?.();\n if (!nextOpen && props.open === true) queueMicrotask(() => props.open === true && open(false));\n }}\n >\n <DropdownItems items={props.items} close={close} />\n </div>\n </span>\n </DropdownContext.Provider>\n );\n}\n\ntype DropdownComponent = ((props: DropdownProps) => JSX.Element) & {\n Root: (props: DropdownProps) => JSX.Element;\n Trigger: (props: DropdownTriggerProps) => JSX.Element;\n Item: (props: DropdownItemProps) => JSX.Element;\n};\n\nexport const Dropdown = DropdownRoot as DropdownComponent;\nDropdown.Root = DropdownRoot;\nDropdown.Trigger = DropdownTrigger;\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -206,7 +206,7 @@ export function ChatMessage(props) {
|
|
|
206
206
|
get each() {
|
|
207
207
|
return actions();
|
|
208
208
|
},
|
|
209
|
-
children: action => _$ssr(_tmpl$14, _$ssrAttribute("aria-label", _$escape(action.label, true), false) + _$ssrAttribute("aria-pressed", _$escape(action.pressed, true), false) + _$ssrAttribute("title", _$escape(action.label, true), false) + _$ssrAttribute("data-danger", action.variant === "danger" ? "true" : _$escape(undefined, true), false), _$ssrAttribute("disabled", action.disabled || Boolean(busyActionId()), true), _$ssrAttribute("class", _$escape(actionIcon(action), true), false))
|
|
209
|
+
children: action => _$ssr(_tmpl$14, _$ssrAttribute("aria-label", _$escape(action.label, true), false) + _$ssrAttribute("aria-pressed", _$escape(action.pressed, true), false) + _$ssrAttribute("data-pressed-tone", _$escape(action.pressedTone, true), false) + _$ssrAttribute("title", _$escape(action.label, true), false) + _$ssrAttribute("data-danger", action.variant === "danger" ? "true" : _$escape(undefined, true), false), _$ssrAttribute("disabled", action.disabled || Boolean(busyActionId()), true), _$ssrAttribute("class", _$escape(actionIcon(action), true), false))
|
|
210
210
|
})));
|
|
211
211
|
}
|
|
212
212
|
})), _$escape(_$createComponent(Show, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSignal","For","onCleanup","Show","Dropdown","Tooltip","useUiMessages","ProgressBar","executeChatAction","roleLabel","role","messages","assistant","user","tool","system","statusLabel","status","waiting","generating","failed","statusIcon","ChatProgressDots","_$ssr","_tmpl$","attachmentIcon","attachment","icon","kind","finiteNonNegative","value","Number","isFinite","Math","max","finiteUsageValue","normalizedUsage","usage","input","output","explicitTotal","total","reported","formatStableInteger","digits","String","round","replace","formatChatTokens","tokens","toFixed","dateTime","date","Date","getTime","toISOString","ChatMessage","props","busyActionId","setBusyActionId","completedActionId","setCompletedActionId","completedTimer","timestamp","createdAt","time","timeLabel","actions","actionDisplay","hasMeta","Boolean","length","runAction","action","disabled","id","clearTimeout","setTimeout","error","onActionError","actionIcon","menuItems","map","label","variant","_tmpl$8","_$escape","class","_$ssrAttribute","anchorId","undefined","_$createComponent","when","attachments","children","_tmpl$2","each","content","previewUrl","fallback","_tmpl$1","_tmpl$9","alt","name","_tmpl$0","href","_tmpl$10","_tmpl$11","openInNewTab","_tmpl$3","_tmpl$7","_tmpl$12","_tmpl$4","_tmpl$13","_tmpl$5","messageActions","_tmpl$14","pressed","Root","position","width","items","Trigger","appearance","title","_tmpl$6","ActivityContent","_tmpl$15","leading","_tmpl$19","_tmpl$16","description","_tmpl$20","trailing","_tmpl$17","disclosure","_tmpl$18","ChatActivity","tone","style","accent","_tmpl$22","busy","_$ssrStyle","_tmpl$21","bodyInset","open","defaultOpen","_$mergeProps","ChatContextUsage","formatNumber","formattedUsageValue","unknown","loopUsage","windowSize","contextWindow","percent","min","remaining","accessibleLabel","contextUsageUnavailableWithWindow","window","contextUsageUnavailable","tokensUsed","tokensUsedPercent","placement","_tmpl$25","lastRequestContext","size","contextWindowUsed","modelLabel","model","_tmpl$24","loopTotal","notConfigured","type","data-warning","aria-label","_tmpl$23"],"sources":["chat/ChatPrimitives.tsx"],"sourcesContent":["import { createSignal, For, type JSX, onCleanup, Show } from \"solid-js\";\nimport { Dropdown, type DropdownItem } from \"../actions/Dropdown\";\nimport { Tooltip } from \"../feedback/Tooltip\";\nimport { type UiMessages, useUiMessages } from \"../intl/messages\";\nimport { ProgressBar } from \"../surfaces/ProgressBar\";\nimport { executeChatAction } from \"./chat-behavior\";\nimport type { ChatAction, ChatActivityTone, ChatAttachment, ChatContextUsageData, ChatMessageStatus, ChatRole } from \"./types\";\n\nexport type ChatMessageProps = {\n role: ChatRole;\n children?: JSX.Element;\n label?: string;\n createdAt?: string | Date;\n timeLabel?: string;\n status?: ChatMessageStatus;\n attachments?: readonly ChatAttachment[];\n actions?: readonly ChatAction[];\n actionDisplay?: \"auto\" | \"inline\" | \"menu\";\n anchorId?: string | number;\n onActionError?: (error: unknown) => void;\n class?: string;\n};\n\nexport type ChatActivityProps = {\n label: string;\n description?: string;\n icon?: string;\n /** Optional host-owned leading visual rendered instead of the icon. */\n leading?: JSX.Element;\n /** Optional identity accent for the leading visual. Semantic tones still take precedence. */\n accent?: string;\n tone?: ChatActivityTone;\n /** Marks the activity as running with the shared accent sweep. */\n busy?: boolean;\n trailing?: JSX.Element;\n /** Controlled disclosure state. Omit to keep native details behavior. */\n open?: boolean;\n /** Reports disclosure changes when `open` is controlled by the host. */\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n /** Set to false when the body is a peer list that should align with the activity row. */\n bodyInset?: boolean;\n anchorId?: string | number;\n children?: JSX.Element;\n class?: string;\n};\n\nexport type ChatContextUsageProps = ChatContextUsageData & {\n /** Host-owned number formatting. The default is locale-independent and SSR-stable. */\n formatNumber?: (value: number) => string;\n class?: string;\n};\n\nconst roleLabel = (role: ChatRole, messages: UiMessages): string => {\n if (role === \"assistant\") return messages.assistant;\n if (role === \"user\") return messages.user;\n if (role === \"tool\") return messages.tool;\n return messages.system;\n};\n\nconst statusLabel = (status: ChatMessageStatus | undefined, messages: UiMessages): string | null => {\n if (status === \"pending\") return messages.waiting;\n if (status === \"streaming\") return messages.generating;\n if (status === \"error\") return messages.failed;\n return null;\n};\n\nconst statusIcon = (status: ChatMessageStatus | undefined): string => {\n if (status === \"pending\") return \"ti ti-clock\";\n return \"ti ti-alert-circle\";\n};\n\nconst ChatProgressDots = () => (\n <span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\">\n <span />\n <span />\n <span />\n </span>\n);\n\nconst attachmentIcon = (attachment: ChatAttachment): string =>\n attachment.icon ?? (attachment.kind === \"image\" ? \"ti ti-photo\" : attachment.kind === \"resource\" ? \"ti ti-link\" : \"ti ti-file\");\n\nconst finiteNonNegative = (value: number | undefined): number =>\n typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n\nconst finiteUsageValue = (value: number | undefined): number | null =>\n typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? value : null;\n\nconst normalizedUsage = (usage: ChatContextUsageData[\"usage\"]) => {\n const input = finiteUsageValue(usage?.input);\n const output = finiteUsageValue(usage?.output);\n const explicitTotal = finiteUsageValue(usage?.total);\n const total = explicitTotal ?? (input !== null || output !== null ? (input ?? 0) + (output ?? 0) : null);\n return { input, output, total, reported: total !== null };\n};\n\nconst formatStableInteger = (value: number): string => {\n const digits = String(Math.round(finiteNonNegative(value)));\n return digits.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n};\n\nexport const formatChatTokens = (tokens: number): string => {\n const value = finiteNonNegative(tokens);\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`;\n return String(Math.round(value));\n};\n\nconst dateTime = (value: string | Date | undefined): string | null => {\n if (!value) return null;\n const date = value instanceof Date ? value : new Date(value);\n return Number.isFinite(date.getTime()) ? date.toISOString() : null;\n};\n\nexport function ChatMessage(props: ChatMessageProps): JSX.Element {\n const messages = useUiMessages();\n const [busyActionId, setBusyActionId] = createSignal<string | null>(null);\n const [completedActionId, setCompletedActionId] = createSignal<string | null>(null);\n let completedTimer: ReturnType<typeof setTimeout> | undefined;\n const status = () => statusLabel(props.status, messages());\n const timestamp = () => dateTime(props.createdAt);\n // Locale and timezone are application policy. Requiring an explicit visible\n // label keeps SSR and hydration byte-stable while `createdAt` still supplies\n // the semantic machine-readable timestamp.\n const time = () => props.timeLabel ?? null;\n const actions = () => props.actions ?? [];\n const actionDisplay = () =>\n props.actionDisplay === \"auto\" || !props.actionDisplay ? (props.role === \"user\" ? \"menu\" : \"inline\") : props.actionDisplay;\n const hasMeta = () => props.status === \"streaming\" || status() !== null || Boolean(time()) || actions().length > 0;\n\n const runAction = async (action: ChatAction) => {\n if (action.disabled || busyActionId()) return;\n setBusyActionId(action.id);\n try {\n await executeChatAction(action);\n setCompletedActionId(action.id);\n if (completedTimer) clearTimeout(completedTimer);\n completedTimer = setTimeout(() => setCompletedActionId(null), 1400);\n } catch (error) {\n props.onActionError?.(error);\n } finally {\n setBusyActionId(null);\n }\n };\n\n const actionIcon = (action: ChatAction) =>\n busyActionId() === action.id\n ? \"ti ti-loader-2 k2b-spin\"\n : completedActionId() === action.id\n ? \"ti ti-check\"\n : (action.icon ?? \"ti ti-dots\");\n\n onCleanup(() => {\n if (completedTimer) clearTimeout(completedTimer);\n });\n\n const menuItems = (): readonly DropdownItem[] =>\n actions().map((action) => ({\n icon: actionIcon(action),\n label: action.label,\n variant: action.variant,\n disabled: action.disabled || Boolean(busyActionId()),\n action: () => void runAction(action),\n }));\n\n return (\n <article\n class={`k2b-chat-message ${props.class ?? \"\"}`}\n data-role={props.role}\n data-status={props.status ?? \"complete\"}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n aria-busy={props.status === \"pending\" || props.status === \"streaming\" ? \"true\" : undefined}\n >\n <span class=\"k2b-sr-only\">{props.label ?? roleLabel(props.role, messages())}: </span>\n <Show when={(props.attachments?.length ?? 0) > 0}>\n <div class=\"k2b-chat-message__attachments\" role=\"list\" aria-label={messages().attachments}>\n <For each={props.attachments}>\n {(attachment) => {\n const content = () => (\n <>\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? attachment.name} />\n </Show>\n <Show when={attachment.kind !== \"image\"}>\n <span>{attachment.name}</span>\n </Show>\n </>\n );\n return (\n <Show\n when={attachment.href}\n fallback={\n <div class=\"k2b-chat-message__attachment\" role=\"listitem\" title={attachment.name}>\n {content()}\n </div>\n }\n >\n {(href) => (\n <a\n class=\"k2b-chat-message__attachment\"\n role=\"listitem\"\n title={attachment.name}\n href={href()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={messages().openInNewTab({ name: attachment.name })}\n >\n {content()}\n </a>\n )}\n </Show>\n );\n }}\n </For>\n </div>\n </Show>\n\n <Show when={props.children !== undefined && props.children !== null && props.children !== \"\"}>\n <div class=\"k2b-chat-message__bubble\">\n <div class=\"k2b-chat-message__content\">{props.children}</div>\n </div>\n </Show>\n\n <Show when={hasMeta()}>\n <footer class=\"k2b-chat-message__meta\">\n <Show\n when={props.status === \"streaming\"}\n fallback={\n <Show when={status()}>\n {(label) => (\n <span class=\"k2b-chat-message__status\" role={props.status === \"error\" ? \"alert\" : \"status\"}>\n <i class={statusIcon(props.status)} aria-hidden=\"true\" />\n {label()}\n </span>\n )}\n </Show>\n }\n >\n <span class=\"k2b-chat-message__status k2b-chat-message__status--streaming\" role=\"status\" aria-label={messages().generating}>\n <ChatProgressDots />\n </span>\n </Show>\n <Show when={time()}>{(label) => <time dateTime={timestamp() ?? undefined}>{label()}</time>}</Show>\n <Show when={actions().length > 0 && actionDisplay() === \"inline\"}>\n <span class=\"k2b-chat-message__actions\" role=\"group\" aria-label={messages().messageActions}>\n <For each={actions()}>\n {(action) => (\n <button\n type=\"button\"\n aria-label={action.label}\n aria-pressed={action.pressed}\n title={action.label}\n data-danger={action.variant === \"danger\" ? \"true\" : undefined}\n disabled={action.disabled || Boolean(busyActionId())}\n onClick={() => void runAction(action)}\n >\n <i class={actionIcon(action)} aria-hidden=\"true\" />\n </button>\n )}\n </For>\n </span>\n </Show>\n <Show when={actions().length > 0 && actionDisplay() === \"menu\"}>\n <Dropdown.Root position=\"bottom-left\" width=\"12rem\" label={messages().messageActions} items={menuItems()}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-chat-message__menu\"\n label={messages().messageActions}\n title={messages().messageActions}\n >\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </footer>\n </Show>\n </article>\n );\n}\n\nconst ActivityContent = (props: ChatActivityProps & { disclosure?: boolean }) => (\n <>\n <span class=\"k2b-chat-activity__leading\" aria-hidden=\"true\">\n <Show when={props.leading} fallback={<i class={props.icon ?? \"ti ti-sparkles\"} />}>\n {props.leading}\n </Show>\n </span>\n <span class=\"k2b-chat-activity__copy\">\n <strong>{props.label}</strong>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.trailing}>\n <span class=\"k2b-chat-activity__trailing\">{props.trailing}</span>\n </Show>\n <Show when={props.disclosure}>\n <i class=\"ti ti-chevron-right k2b-chat-activity__chevron\" aria-hidden=\"true\" />\n </Show>\n </>\n);\n\nexport function ChatActivity(props: ChatActivityProps): JSX.Element {\n const tone = () => props.tone ?? \"neutral\";\n const style = () => (props.accent ? { \"--k2b-chat-activity-accent\": props.accent } : undefined);\n return (\n <Show\n when={props.children}\n fallback={\n <div\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <div class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} />\n </div>\n </div>\n }\n >\n <details\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-body-inset={props.bodyInset === false ? \"false\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n open={props.open ?? props.defaultOpen}\n onToggle={(event) => props.onOpenChange?.(event.currentTarget.open)}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <summary class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} disclosure />\n </summary>\n <div class=\"k2b-chat-activity__body\">{props.children}</div>\n </details>\n </Show>\n );\n}\n\nexport function ChatContextUsage(props: ChatContextUsageProps): JSX.Element {\n const messages = useUiMessages();\n const formatNumber = (value: number) => (props.formatNumber ?? formatStableInteger)(value);\n const formattedUsageValue = (value: number | null): string => (value === null ? messages().unknown : formatNumber(value));\n const usage = () => normalizedUsage(props.usage);\n const loopUsage = () => normalizedUsage(props.loopUsage);\n const total = () => usage().total ?? 0;\n const windowSize = () => finiteNonNegative(props.contextWindow);\n const reported = () => usage().reported;\n const percent = () => (reported() && windowSize() > 0 ? Math.min(100, Math.round((total() / windowSize()) * 100)) : null);\n const remaining = () => (reported() && windowSize() > 0 ? Math.max(0, windowSize() - total()) : null);\n const accessibleLabel = () => {\n if (!reported()) {\n return windowSize() > 0\n ? messages().contextUsageUnavailableWithWindow({ window: formatNumber(windowSize()) })\n : messages().contextUsageUnavailable;\n }\n return percent() === null\n ? messages().tokensUsed({ total: formatNumber(total()) })\n : messages().tokensUsedPercent({ total: formatNumber(total()), percent: percent()! });\n };\n\n return (\n <Tooltip.Trigger\n placement=\"top\"\n content={\n <div class=\"k2b-chat-context__tooltip\">\n <strong>{messages().lastRequestContext}</strong>\n <Show when={percent() !== null}>\n <ProgressBar\n value={percent() ?? 0}\n size=\"xs\"\n tone={(percent() ?? 0) >= 85 ? \"danger\" : \"info\"}\n label={messages().contextWindowUsed}\n />\n </Show>\n <dl>\n <Show when={props.modelLabel}>\n {(model) => (\n <div>\n <dt>{messages().model}</dt>\n <dd>{model()}</dd>\n </div>\n )}\n </Show>\n <div>\n <dt>{messages().input}</dt>\n <dd>{formattedUsageValue(usage().input)}</dd>\n </div>\n <div>\n <dt>{messages().output}</dt>\n <dd>{formattedUsageValue(usage().output)}</dd>\n </div>\n <Show when={loopUsage().reported}>\n <div>\n <dt>{messages().loopTotal}</dt>\n <dd>{formattedUsageValue(loopUsage().total)}</dd>\n </div>\n </Show>\n <div>\n <dt>{messages().window}</dt>\n <dd>{windowSize() > 0 ? formatNumber(windowSize()) : messages().notConfigured}</dd>\n </div>\n <Show when={remaining() !== null}>\n <div>\n <dt>{messages().remaining}</dt>\n <dd>{remaining() === null ? messages().unknown : formatNumber(remaining()!)}</dd>\n </div>\n </Show>\n </dl>\n </div>\n }\n type=\"button\"\n class={`k2b-chat-context ${props.class ?? \"\"}`}\n data-warning={reported() && (percent() ?? 0) >= 85 ? \"true\" : undefined}\n aria-label={accessibleLabel()}\n >\n <i class=\"ti ti-brain\" aria-hidden=\"true\" />\n <span>{percent() === null ? \"–\" : `${percent()}%`}</span>\n </Tooltip.Trigger>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createSignal","For","onCleanup","Show","Dropdown","Tooltip","useUiMessages","ProgressBar","executeChatAction","roleLabel","role","messages","assistant","user","tool","system","statusLabel","status","waiting","generating","failed","statusIcon","ChatProgressDots","_$ssr","_tmpl$","attachmentIcon","attachment","icon","kind","finiteNonNegative","value","Number","isFinite","Math","max","finiteUsageValue","normalizedUsage","usage","input","output","explicitTotal","total","reported","formatStableInteger","digits","String","round","replace","formatChatTokens","tokens","toFixed","dateTime","date","Date","getTime","toISOString","ChatMessage","props","busyActionId","setBusyActionId","completedActionId","setCompletedActionId","completedTimer","timestamp","createdAt","time","timeLabel","actions","actionDisplay","hasMeta","Boolean","length","runAction","action","disabled","id","clearTimeout","setTimeout","error","onActionError","actionIcon","menuItems","map","label","variant","_tmpl$8","_$escape","class","_$ssrAttribute","anchorId","undefined","_$createComponent","when","attachments","children","_tmpl$2","each","content","previewUrl","fallback","_tmpl$1","_tmpl$9","alt","name","_tmpl$0","href","_tmpl$10","_tmpl$11","openInNewTab","_tmpl$3","_tmpl$7","_tmpl$12","_tmpl$4","_tmpl$13","_tmpl$5","messageActions","_tmpl$14","pressed","pressedTone","Root","position","width","items","Trigger","appearance","title","_tmpl$6","ActivityContent","_tmpl$15","leading","_tmpl$19","_tmpl$16","description","_tmpl$20","trailing","_tmpl$17","disclosure","_tmpl$18","ChatActivity","tone","style","accent","_tmpl$22","busy","_$ssrStyle","_tmpl$21","bodyInset","open","defaultOpen","_$mergeProps","ChatContextUsage","formatNumber","formattedUsageValue","unknown","loopUsage","windowSize","contextWindow","percent","min","remaining","accessibleLabel","contextUsageUnavailableWithWindow","window","contextUsageUnavailable","tokensUsed","tokensUsedPercent","placement","_tmpl$25","lastRequestContext","size","contextWindowUsed","modelLabel","model","_tmpl$24","loopTotal","notConfigured","type","data-warning","aria-label","_tmpl$23"],"sources":["chat/ChatPrimitives.tsx"],"sourcesContent":["import { createSignal, For, type JSX, onCleanup, Show } from \"solid-js\";\nimport { Dropdown, type DropdownItem } from \"../actions/Dropdown\";\nimport { Tooltip } from \"../feedback/Tooltip\";\nimport { type UiMessages, useUiMessages } from \"../intl/messages\";\nimport { ProgressBar } from \"../surfaces/ProgressBar\";\nimport { executeChatAction } from \"./chat-behavior\";\nimport type { ChatAction, ChatActivityTone, ChatAttachment, ChatContextUsageData, ChatMessageStatus, ChatRole } from \"./types\";\n\nexport type ChatMessageProps = {\n role: ChatRole;\n children?: JSX.Element;\n label?: string;\n createdAt?: string | Date;\n timeLabel?: string;\n status?: ChatMessageStatus;\n attachments?: readonly ChatAttachment[];\n actions?: readonly ChatAction[];\n actionDisplay?: \"auto\" | \"inline\" | \"menu\";\n anchorId?: string | number;\n onActionError?: (error: unknown) => void;\n class?: string;\n};\n\nexport type ChatActivityProps = {\n label: string;\n description?: string;\n icon?: string;\n /** Optional host-owned leading visual rendered instead of the icon. */\n leading?: JSX.Element;\n /** Optional identity accent for the leading visual. Semantic tones still take precedence. */\n accent?: string;\n tone?: ChatActivityTone;\n /** Marks the activity as running with the shared accent sweep. */\n busy?: boolean;\n trailing?: JSX.Element;\n /** Controlled disclosure state. Omit to keep native details behavior. */\n open?: boolean;\n /** Reports disclosure changes when `open` is controlled by the host. */\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n /** Set to false when the body is a peer list that should align with the activity row. */\n bodyInset?: boolean;\n anchorId?: string | number;\n children?: JSX.Element;\n class?: string;\n};\n\nexport type ChatContextUsageProps = ChatContextUsageData & {\n /** Host-owned number formatting. The default is locale-independent and SSR-stable. */\n formatNumber?: (value: number) => string;\n class?: string;\n};\n\nconst roleLabel = (role: ChatRole, messages: UiMessages): string => {\n if (role === \"assistant\") return messages.assistant;\n if (role === \"user\") return messages.user;\n if (role === \"tool\") return messages.tool;\n return messages.system;\n};\n\nconst statusLabel = (status: ChatMessageStatus | undefined, messages: UiMessages): string | null => {\n if (status === \"pending\") return messages.waiting;\n if (status === \"streaming\") return messages.generating;\n if (status === \"error\") return messages.failed;\n return null;\n};\n\nconst statusIcon = (status: ChatMessageStatus | undefined): string => {\n if (status === \"pending\") return \"ti ti-clock\";\n return \"ti ti-alert-circle\";\n};\n\nconst ChatProgressDots = () => (\n <span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\">\n <span />\n <span />\n <span />\n </span>\n);\n\nconst attachmentIcon = (attachment: ChatAttachment): string =>\n attachment.icon ?? (attachment.kind === \"image\" ? \"ti ti-photo\" : attachment.kind === \"resource\" ? \"ti ti-link\" : \"ti ti-file\");\n\nconst finiteNonNegative = (value: number | undefined): number =>\n typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n\nconst finiteUsageValue = (value: number | undefined): number | null =>\n typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? value : null;\n\nconst normalizedUsage = (usage: ChatContextUsageData[\"usage\"]) => {\n const input = finiteUsageValue(usage?.input);\n const output = finiteUsageValue(usage?.output);\n const explicitTotal = finiteUsageValue(usage?.total);\n const total = explicitTotal ?? (input !== null || output !== null ? (input ?? 0) + (output ?? 0) : null);\n return { input, output, total, reported: total !== null };\n};\n\nconst formatStableInteger = (value: number): string => {\n const digits = String(Math.round(finiteNonNegative(value)));\n return digits.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n};\n\nexport const formatChatTokens = (tokens: number): string => {\n const value = finiteNonNegative(tokens);\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`;\n return String(Math.round(value));\n};\n\nconst dateTime = (value: string | Date | undefined): string | null => {\n if (!value) return null;\n const date = value instanceof Date ? value : new Date(value);\n return Number.isFinite(date.getTime()) ? date.toISOString() : null;\n};\n\nexport function ChatMessage(props: ChatMessageProps): JSX.Element {\n const messages = useUiMessages();\n const [busyActionId, setBusyActionId] = createSignal<string | null>(null);\n const [completedActionId, setCompletedActionId] = createSignal<string | null>(null);\n let completedTimer: ReturnType<typeof setTimeout> | undefined;\n const status = () => statusLabel(props.status, messages());\n const timestamp = () => dateTime(props.createdAt);\n // Locale and timezone are application policy. Requiring an explicit visible\n // label keeps SSR and hydration byte-stable while `createdAt` still supplies\n // the semantic machine-readable timestamp.\n const time = () => props.timeLabel ?? null;\n const actions = () => props.actions ?? [];\n const actionDisplay = () =>\n props.actionDisplay === \"auto\" || !props.actionDisplay ? (props.role === \"user\" ? \"menu\" : \"inline\") : props.actionDisplay;\n const hasMeta = () => props.status === \"streaming\" || status() !== null || Boolean(time()) || actions().length > 0;\n\n const runAction = async (action: ChatAction) => {\n if (action.disabled || busyActionId()) return;\n setBusyActionId(action.id);\n try {\n await executeChatAction(action);\n setCompletedActionId(action.id);\n if (completedTimer) clearTimeout(completedTimer);\n completedTimer = setTimeout(() => setCompletedActionId(null), 1400);\n } catch (error) {\n props.onActionError?.(error);\n } finally {\n setBusyActionId(null);\n }\n };\n\n const actionIcon = (action: ChatAction) =>\n busyActionId() === action.id\n ? \"ti ti-loader-2 k2b-spin\"\n : completedActionId() === action.id\n ? \"ti ti-check\"\n : (action.icon ?? \"ti ti-dots\");\n\n onCleanup(() => {\n if (completedTimer) clearTimeout(completedTimer);\n });\n\n const menuItems = (): readonly DropdownItem[] =>\n actions().map((action) => ({\n icon: actionIcon(action),\n label: action.label,\n variant: action.variant,\n disabled: action.disabled || Boolean(busyActionId()),\n action: () => void runAction(action),\n }));\n\n return (\n <article\n class={`k2b-chat-message ${props.class ?? \"\"}`}\n data-role={props.role}\n data-status={props.status ?? \"complete\"}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n aria-busy={props.status === \"pending\" || props.status === \"streaming\" ? \"true\" : undefined}\n >\n <span class=\"k2b-sr-only\">{props.label ?? roleLabel(props.role, messages())}: </span>\n <Show when={(props.attachments?.length ?? 0) > 0}>\n <div class=\"k2b-chat-message__attachments\" role=\"list\" aria-label={messages().attachments}>\n <For each={props.attachments}>\n {(attachment) => {\n const content = () => (\n <>\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? attachment.name} />\n </Show>\n <Show when={attachment.kind !== \"image\"}>\n <span>{attachment.name}</span>\n </Show>\n </>\n );\n return (\n <Show\n when={attachment.href}\n fallback={\n <div class=\"k2b-chat-message__attachment\" role=\"listitem\" title={attachment.name}>\n {content()}\n </div>\n }\n >\n {(href) => (\n <a\n class=\"k2b-chat-message__attachment\"\n role=\"listitem\"\n title={attachment.name}\n href={href()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={messages().openInNewTab({ name: attachment.name })}\n >\n {content()}\n </a>\n )}\n </Show>\n );\n }}\n </For>\n </div>\n </Show>\n\n <Show when={props.children !== undefined && props.children !== null && props.children !== \"\"}>\n <div class=\"k2b-chat-message__bubble\">\n <div class=\"k2b-chat-message__content\">{props.children}</div>\n </div>\n </Show>\n\n <Show when={hasMeta()}>\n <footer class=\"k2b-chat-message__meta\">\n <Show\n when={props.status === \"streaming\"}\n fallback={\n <Show when={status()}>\n {(label) => (\n <span class=\"k2b-chat-message__status\" role={props.status === \"error\" ? \"alert\" : \"status\"}>\n <i class={statusIcon(props.status)} aria-hidden=\"true\" />\n {label()}\n </span>\n )}\n </Show>\n }\n >\n <span class=\"k2b-chat-message__status k2b-chat-message__status--streaming\" role=\"status\" aria-label={messages().generating}>\n <ChatProgressDots />\n </span>\n </Show>\n <Show when={time()}>{(label) => <time dateTime={timestamp() ?? undefined}>{label()}</time>}</Show>\n <Show when={actions().length > 0 && actionDisplay() === \"inline\"}>\n <span class=\"k2b-chat-message__actions\" role=\"group\" aria-label={messages().messageActions}>\n <For each={actions()}>\n {(action) => (\n <button\n type=\"button\"\n aria-label={action.label}\n aria-pressed={action.pressed}\n data-pressed-tone={action.pressedTone}\n title={action.label}\n data-danger={action.variant === \"danger\" ? \"true\" : undefined}\n disabled={action.disabled || Boolean(busyActionId())}\n onClick={() => void runAction(action)}\n >\n <i class={actionIcon(action)} aria-hidden=\"true\" />\n </button>\n )}\n </For>\n </span>\n </Show>\n <Show when={actions().length > 0 && actionDisplay() === \"menu\"}>\n <Dropdown.Root position=\"bottom-left\" width=\"12rem\" label={messages().messageActions} items={menuItems()}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-chat-message__menu\"\n label={messages().messageActions}\n title={messages().messageActions}\n >\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </footer>\n </Show>\n </article>\n );\n}\n\nconst ActivityContent = (props: ChatActivityProps & { disclosure?: boolean }) => (\n <>\n <span class=\"k2b-chat-activity__leading\" aria-hidden=\"true\">\n <Show when={props.leading} fallback={<i class={props.icon ?? \"ti ti-sparkles\"} />}>\n {props.leading}\n </Show>\n </span>\n <span class=\"k2b-chat-activity__copy\">\n <strong>{props.label}</strong>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.trailing}>\n <span class=\"k2b-chat-activity__trailing\">{props.trailing}</span>\n </Show>\n <Show when={props.disclosure}>\n <i class=\"ti ti-chevron-right k2b-chat-activity__chevron\" aria-hidden=\"true\" />\n </Show>\n </>\n);\n\nexport function ChatActivity(props: ChatActivityProps): JSX.Element {\n const tone = () => props.tone ?? \"neutral\";\n const style = () => (props.accent ? { \"--k2b-chat-activity-accent\": props.accent } : undefined);\n return (\n <Show\n when={props.children}\n fallback={\n <div\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <div class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} />\n </div>\n </div>\n }\n >\n <details\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-body-inset={props.bodyInset === false ? \"false\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n open={props.open ?? props.defaultOpen}\n onToggle={(event) => props.onOpenChange?.(event.currentTarget.open)}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <summary class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} disclosure />\n </summary>\n <div class=\"k2b-chat-activity__body\">{props.children}</div>\n </details>\n </Show>\n );\n}\n\nexport function ChatContextUsage(props: ChatContextUsageProps): JSX.Element {\n const messages = useUiMessages();\n const formatNumber = (value: number) => (props.formatNumber ?? formatStableInteger)(value);\n const formattedUsageValue = (value: number | null): string => (value === null ? messages().unknown : formatNumber(value));\n const usage = () => normalizedUsage(props.usage);\n const loopUsage = () => normalizedUsage(props.loopUsage);\n const total = () => usage().total ?? 0;\n const windowSize = () => finiteNonNegative(props.contextWindow);\n const reported = () => usage().reported;\n const percent = () => (reported() && windowSize() > 0 ? Math.min(100, Math.round((total() / windowSize()) * 100)) : null);\n const remaining = () => (reported() && windowSize() > 0 ? Math.max(0, windowSize() - total()) : null);\n const accessibleLabel = () => {\n if (!reported()) {\n return windowSize() > 0\n ? messages().contextUsageUnavailableWithWindow({ window: formatNumber(windowSize()) })\n : messages().contextUsageUnavailable;\n }\n return percent() === null\n ? messages().tokensUsed({ total: formatNumber(total()) })\n : messages().tokensUsedPercent({ total: formatNumber(total()), percent: percent()! });\n };\n\n return (\n <Tooltip.Trigger\n placement=\"top\"\n content={\n <div class=\"k2b-chat-context__tooltip\">\n <strong>{messages().lastRequestContext}</strong>\n <Show when={percent() !== null}>\n <ProgressBar\n value={percent() ?? 0}\n size=\"xs\"\n tone={(percent() ?? 0) >= 85 ? \"danger\" : \"info\"}\n label={messages().contextWindowUsed}\n />\n </Show>\n <dl>\n <Show when={props.modelLabel}>\n {(model) => (\n <div>\n <dt>{messages().model}</dt>\n <dd>{model()}</dd>\n </div>\n )}\n </Show>\n <div>\n <dt>{messages().input}</dt>\n <dd>{formattedUsageValue(usage().input)}</dd>\n </div>\n <div>\n <dt>{messages().output}</dt>\n <dd>{formattedUsageValue(usage().output)}</dd>\n </div>\n <Show when={loopUsage().reported}>\n <div>\n <dt>{messages().loopTotal}</dt>\n <dd>{formattedUsageValue(loopUsage().total)}</dd>\n </div>\n </Show>\n <div>\n <dt>{messages().window}</dt>\n <dd>{windowSize() > 0 ? formatNumber(windowSize()) : messages().notConfigured}</dd>\n </div>\n <Show when={remaining() !== null}>\n <div>\n <dt>{messages().remaining}</dt>\n <dd>{remaining() === null ? messages().unknown : formatNumber(remaining()!)}</dd>\n </div>\n </Show>\n </dl>\n </div>\n }\n type=\"button\"\n class={`k2b-chat-context ${props.class ?? \"\"}`}\n data-warning={reported() && (percent() ?? 0) >= 85 ? \"true\" : undefined}\n aria-label={accessibleLabel()}\n >\n <i class=\"ti ti-brain\" aria-hidden=\"true\" />\n <span>{percent() === null ? \"–\" : `${percent()}%`}</span>\n </Tooltip.Trigger>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ var _tmpl$ = ["<div class=\"k2b-chat-timeline__navigation\" aria-live=\"off\">",
|
|
|
6
6
|
_tmpl$2 = ["<button type=\"button\" class=\"k2b-chat-timeline__older\"><i class=\"ti ti-history\" aria-hidden=\"true\"></i>", "</button>"],
|
|
7
7
|
_tmpl$3 = ["<div class=\"k2b-chat-timeline__history\" aria-live=\"off\">", "", "", "</div>"],
|
|
8
8
|
_tmpl$4 = "<button type=\"button\" class=\"k2b-chat-timeline__latest\"><i class=\"ti ti-arrow-down\" aria-hidden=\"true\"></i>Jump to latest</button>",
|
|
9
|
-
_tmpl$5 = ["<section class=\"", "\"", "><div class=\"k2b-chat-timeline__viewport\" role=\"region\"", " tabindex=\"0\">", "<div class=\"k2b-chat-timeline__content\" role=\"log\" aria-live=\"polite\" aria-relevant=\"additions text\"", "><div class=\"k2b-chat-timeline__sentinel\" aria-hidden=\"true\"></div>", "", "</div></div>", "</section>"],
|
|
9
|
+
_tmpl$5 = ["<section class=\"", "\"", "><div class=\"k2b-chat-timeline__viewport\" data-initializing role=\"region\"", " tabindex=\"0\">", "<div class=\"k2b-chat-timeline__content\" role=\"log\" aria-live=\"polite\" aria-relevant=\"additions text\"", "><div class=\"k2b-chat-timeline__sentinel\" aria-hidden=\"true\"></div>", "", "</div></div>", "</section>"],
|
|
10
10
|
_tmpl$6 = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
|
|
11
11
|
_tmpl$7 = ["<button type=\"button\" class=\"k2b-chat-timeline__retry\"", "><i class=\"ti ti-refresh\" aria-hidden=\"true\"></i></button>"];
|
|
12
12
|
import { createEffect, createSignal, For, onCleanup, onMount, Show, untrack } from "solid-js";
|
|
@@ -90,6 +90,8 @@ export function ChatTimeline(props) {
|
|
|
90
90
|
if (viewportRef.scrollTop <= threshold()) void loadOlder();
|
|
91
91
|
};
|
|
92
92
|
onMount(() => {
|
|
93
|
+
// Switch from CSS-only SSR anchoring to normal scroll coordinates before paint.
|
|
94
|
+
viewportRef?.removeAttribute("data-initializing");
|
|
93
95
|
scrollToLatest();
|
|
94
96
|
const resizeObserver = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(() => scheduleFollow());
|
|
95
97
|
if (contentRef) resizeObserver?.observe(contentRef);
|