@k2b/ui 0.3.0 → 0.4.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/index.js +2 -2
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/chat/ChatComposer.js +1 -1
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatContextPopup.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +2 -2
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatTasks.js +1 -1
- package/dist/browser/chat/ChatTasks.js.map +1 -1
- package/dist/browser/chat/ChatTimeline.js +1 -1
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/composer-document.js.map +1 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/content/Chart.js +3 -3
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +4 -4
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/ChartExplorerControls.js +1 -1
- package/dist/browser/content/ChartExplorerControls.js.map +1 -1
- package/dist/browser/content/ChartFilterControls.js +2 -2
- package/dist/browser/content/ChartFilterControls.js.map +1 -1
- package/dist/browser/content/ChartSnapshotView.js +2 -1
- package/dist/browser/content/ChartSnapshotView.js.map +1 -1
- package/dist/browser/content/FileView.js +7 -3
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/MarkdownView.js.map +1 -1
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/chart-explorer.js.map +1 -1
- package/dist/browser/content/chart-inspection.js.map +1 -1
- package/dist/browser/content/chart-line-gaps.js.map +1 -1
- package/dist/browser/content/chart-snapshot.js.map +1 -1
- package/dist/browser/content/file-view-preview.js.map +1 -1
- package/dist/browser/content/index.js +9 -9
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/markdown/behaviors.js +1 -1
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +3 -3
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +1 -1
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/ScrollArea.js.map +1 -1
- package/dist/browser/layout/SidebarItemPreview.js +1 -1
- package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +1 -1
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/index.js +3 -3
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/ssr/actions/index.js +2 -2
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/chat/ChatComposer.js +1 -1
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatContextPopup.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +2 -2
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatTasks.js +1 -1
- package/dist/ssr/chat/ChatTasks.js.map +1 -1
- package/dist/ssr/chat/ChatTimeline.js +1 -1
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/composer-document.js.map +1 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/content/Chart.js +3 -3
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +4 -4
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/ChartExplorerControls.js +1 -1
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
- package/dist/ssr/content/ChartFilterControls.js +2 -2
- package/dist/ssr/content/ChartFilterControls.js.map +1 -1
- package/dist/ssr/content/ChartSnapshotView.js +2 -1
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
- package/dist/ssr/content/FileView.js +7 -3
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/MarkdownView.js.map +1 -1
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/chart-explorer.js.map +1 -1
- package/dist/ssr/content/chart-inspection.js.map +1 -1
- package/dist/ssr/content/chart-line-gaps.js.map +1 -1
- package/dist/ssr/content/chart-snapshot.js.map +1 -1
- package/dist/ssr/content/file-view-preview.js.map +1 -1
- package/dist/ssr/content/index.js +9 -9
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/markdown/behaviors.js +1 -1
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +3 -3
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +1 -1
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/ScrollArea.js.map +1 -1
- package/dist/ssr/layout/SidebarItemPreview.js +1 -1
- package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +1 -1
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/index.js +3 -3
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/types/actions/index.d.ts +4 -4
- package/dist/types/chat/ChatComposer.d.ts +1 -1
- package/dist/types/chat/index.d.ts +1 -1
- package/dist/types/content/Chart.d.ts +2 -2
- package/dist/types/content/ChartExplorer.d.ts +2 -2
- package/dist/types/content/ChartExplorerControls.d.ts +1 -1
- package/dist/types/content/ChartSnapshotView.d.ts +1 -1
- package/dist/types/content/chart-inspection.d.ts +1 -1
- package/dist/types/content/index.d.ts +15 -15
- package/dist/types/layout/AppWorkspace.d.ts +1 -1
- package/dist/types/layout/SidebarItemPreview.d.ts +1 -1
- package/dist/types/layout/index.d.ts +3 -3
- package/package.json +1 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createScrollFade","children","createEffect","createSignal","createUniqueId","Show","splitProps","Button","ButtonLink","Dropdown","classNames","base","extra","DetailPanelHeader","props","_$ssr","_tmpl$7","_$ssrAttribute","_$escape","class","_$createComponent","when","icon","_tmpl$8","leading","_tmpl$","title","subtitle","meta","_tmpl$4","_tmpl$2","_tmpl$3","actions","_tmpl$5","primaryActions","_tmpl$6","DetailPanelBody","body","scrollFade","_tmpl$9","undefined","scrollPreserveKey","DetailPanelSummary","headingId","_tmpl$1","_tmpl$0","DetailPanelGroup","_tmpl$10","label","DetailPanelSectionIcon","_tmpl$11","tone","DetailPanelActionContent","_tmpl$12","_tmpl$14","description","_tmpl$13","trailing","_tmpl$15","DetailPanelAction","local","rest","className","content","action","href","fallback","_$mergeProps","variant","size","menuItems","length","_tmpl$17","Root","items","align","menuLabel","Trigger","iconOnly","_tmpl$16","DetailPanelSection","bodyId","internalOpen","setInternalOpen","defaultOpen","open","expand","collapse","toggle","next","disabled","onOpenChange","expanded","queueMicrotask","active","ownerDocument","activeElement","focus","contains","resolved","collapsible","_tmpl$27","_tmpl$22","_tmpl$25","_tmpl$26","_tmpl$24","onClick","_tmpl$19","_tmpl$18","_tmpl$20","_tmpl$21","_tmpl$23","DetailPanel","Header","Body","Summary","Group","Section","Action"],"sources":["layout/DetailPanel.tsx"],"sourcesContent":["import { createScrollFade } from \"./scroll-fade\";\nimport { children, createEffect, createSignal, createUniqueId, type JSX, Show, splitProps } from \"solid-js\";\nimport { Button, ButtonLink, type ButtonLinkProps, type ButtonProps } from \"../actions/Button\";\nimport { Dropdown, type DropdownItem } from \"../actions/Dropdown\";\n\nexport type DetailPanelProps = {\n children: JSX.Element;\n class?: string;\n};\n\ntype DetailPanelHeaderBaseProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n meta?: JSX.Element;\n actions?: JSX.Element;\n primaryActions?: JSX.Element;\n class?: string;\n};\n\nexport type DetailPanelHeaderProps = DetailPanelHeaderBaseProps &\n (\n | {\n leading?: JSX.Element;\n icon?: never;\n }\n | {\n leading?: never;\n icon?: string;\n }\n );\n\nexport type DetailPanelBodyProps = {\n scrollFade?: boolean;\n children: JSX.Element;\n scrollPreserveKey?: string;\n class?: string;\n};\n\nexport type DetailPanelSummaryProps = {\n title: JSX.Element;\n children: JSX.Element;\n actions?: JSX.Element;\n class?: string;\n};\n\nexport type DetailPanelGroupProps = {\n children: JSX.Element;\n label?: string;\n class?: string;\n};\n\nexport type DetailPanelTone = \"accent\" | \"neutral\" | \"success\" | \"warning\" | \"danger\";\n\ntype DetailPanelSectionBaseProps = {\n title: JSX.Element;\n icon?: string;\n tone?: DetailPanelTone;\n description?: JSX.Element;\n meta?: JSX.Element;\n class?: string;\n};\n\ntype DetailPanelActionBaseProps = {\n title: JSX.Element;\n description?: JSX.Element;\n leading?: JSX.Element;\n trailing?: JSX.Element;\n class?: string;\n};\n\ntype DetailPanelActionMenuProps =\n | {\n menuItems?: never;\n menuLabel?: never;\n }\n | {\n menuItems: readonly DropdownItem[];\n menuLabel: string;\n };\n\nexport type DetailPanelActionLinkProps = DetailPanelActionBaseProps &\n DetailPanelActionMenuProps &\n Omit<ButtonLinkProps, \"children\" | \"class\" | \"size\" | \"title\" | \"variant\"> & {\n href: string;\n };\n\nexport type DetailPanelActionButtonProps = DetailPanelActionBaseProps &\n DetailPanelActionMenuProps &\n Omit<ButtonProps, \"children\" | \"class\" | \"size\" | \"title\" | \"variant\"> & {\n href?: never;\n };\n\nexport type DetailPanelActionProps = DetailPanelActionLinkProps | DetailPanelActionButtonProps;\n\nexport type DetailPanelSectionProps = DetailPanelSectionBaseProps &\n (\n | {\n children?: JSX.Element;\n actions?: JSX.Element;\n collapsible?: false;\n defaultOpen?: never;\n open?: never;\n onOpenChange?: never;\n disabled?: never;\n }\n | {\n children: JSX.Element;\n actions?: never;\n collapsible: true;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n }\n );\n\ntype DetailPanelComponent = ((props: DetailPanelProps) => JSX.Element) & {\n Header: (props: DetailPanelHeaderProps) => JSX.Element;\n Body: (props: DetailPanelBodyProps) => JSX.Element;\n Summary: (props: DetailPanelSummaryProps) => JSX.Element;\n Group: (props: DetailPanelGroupProps) => JSX.Element;\n Section: (props: DetailPanelSectionProps) => JSX.Element;\n Action: (props: DetailPanelActionProps) => JSX.Element;\n};\n\nconst classNames = (base: string, extra?: string): string => (extra ? `${base} ${extra}` : base);\n\nconst DetailPanelHeader = (props: DetailPanelHeaderProps): JSX.Element => (\n <header class={classNames(\"k2b-detail-panel__header\", props.class)}>\n <div class=\"k2b-detail-panel__header-main\">\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-detail-panel__header-icon\" aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Show>\n <Show when={props.leading}>\n <div class=\"k2b-detail-panel__header-leading\">{props.leading}</div>\n </Show>\n <div class=\"k2b-detail-panel__heading\">\n <h2>{props.title}</h2>\n <Show when={props.subtitle || props.meta}>\n <div class=\"k2b-detail-panel__supporting\">\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n <Show when={props.meta}>\n <div class=\"k2b-detail-panel__meta\">{props.meta}</div>\n </Show>\n </div>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-detail-panel__actions\">{props.actions}</div>\n </Show>\n </div>\n <Show when={props.primaryActions}>\n <div class=\"k2b-detail-panel__primary-actions\">{props.primaryActions}</div>\n </Show>\n </header>\n);\n\nconst DetailPanelBody = (props: DetailPanelBodyProps): JSX.Element => {\n let body!: HTMLDivElement;\n createScrollFade(() => body, () => props.scrollFade !== false);\n return <div ref={body} class={classNames(\"k2b-detail-panel__body\", props.class)} data-scroll-fade-mode={props.scrollFade !== false ? \"both\" : undefined} data-scroll-preserve={props.scrollPreserveKey}>\n {props.children}\n </div>;\n};\n\nconst DetailPanelSummary = (props: DetailPanelSummaryProps): JSX.Element => {\n const headingId = `k2b-detail-panel-summary-${createUniqueId()}`;\n\n return (\n <section class={classNames(\"k2b-detail-panel__summary\", props.class)} aria-labelledby={headingId}>\n <header class=\"k2b-detail-panel__summary-header\">\n <h3 id={headingId}>{props.title}</h3>\n <Show when={props.actions}>\n <div class=\"k2b-detail-panel__summary-actions\">{props.actions}</div>\n </Show>\n </header>\n <div class=\"k2b-detail-panel__summary-body\">{props.children}</div>\n </section>\n );\n};\n\nconst DetailPanelGroup = (props: DetailPanelGroupProps): JSX.Element => (\n <div class={classNames(\"k2b-detail-panel__group\", props.class)} role=\"group\" aria-label={props.label}>\n {props.children}\n </div>\n);\n\nconst DetailPanelSectionIcon = (props: Pick<DetailPanelSectionBaseProps, \"icon\" | \"tone\">): JSX.Element => (\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-detail-panel__section-icon\" data-tone={props.tone ?? \"neutral\"} aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Show>\n);\n\nconst DetailPanelActionContent = (props: DetailPanelActionBaseProps): JSX.Element => (\n <>\n <Show when={props.leading}>\n <span class=\"k2b-detail-panel__action-leading\">{props.leading}</span>\n </Show>\n <span class=\"k2b-detail-panel__action-copy\">\n <span class=\"k2b-detail-panel__action-title\">{props.title}</span>\n <Show when={props.description}>\n <span class=\"k2b-detail-panel__action-description\">{props.description}</span>\n </Show>\n </span>\n <Show when={props.trailing}>\n <span class=\"k2b-detail-panel__action-trailing\">{props.trailing}</span>\n </Show>\n </>\n);\n\nconst DetailPanelAction = (props: DetailPanelActionProps): JSX.Element => {\n const [local, rest] = splitProps(props, [\"class\", \"description\", \"href\", \"leading\", \"menuItems\", \"menuLabel\", \"title\", \"trailing\"]);\n const className = classNames(\"k2b-detail-panel__action\", local.class);\n const content = () => (\n <DetailPanelActionContent title={local.title} description={local.description} leading={local.leading} trailing={local.trailing} />\n );\n\n const action = () => (\n <Show\n when={local.href !== undefined}\n fallback={\n <Button\n {...(rest as Omit<DetailPanelActionButtonProps, keyof DetailPanelActionBaseProps>)}\n class={className}\n variant=\"ghost\"\n size=\"sm\"\n >\n {content()}\n </Button>\n }\n >\n <ButtonLink\n {...(rest as Omit<DetailPanelActionLinkProps, keyof DetailPanelActionBaseProps | \"href\">)}\n href={local.href as string}\n class={className}\n variant=\"ghost\"\n size=\"sm\"\n >\n {content()}\n </ButtonLink>\n </Show>\n );\n\n return (\n <Show when={local.menuItems?.length} fallback={action()}>\n <div class=\"k2b-detail-panel__action-row\">\n {action()}\n <Dropdown.Root items={local.menuItems ?? []} align=\"end\" label={local.menuLabel} class=\"k2b-detail-panel__action-menu\">\n <Dropdown.Trigger iconOnly size=\"sm\" variant=\"ghost\" label={local.menuLabel} class=\"k2b-detail-panel__action-menu-trigger\">\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </div>\n </Show>\n );\n};\n\nconst DetailPanelSection = (props: DetailPanelSectionProps): JSX.Element => {\n const headingId = `k2b-detail-panel-section-${createUniqueId()}`;\n const bodyId = `${headingId}-body`;\n const [internalOpen, setInternalOpen] = createSignal(props.defaultOpen ?? false);\n const open = () => props.open ?? internalOpen();\n let expand: HTMLButtonElement | undefined;\n let collapse: HTMLButtonElement | undefined;\n let body: HTMLDivElement | undefined;\n const toggle = (next: boolean) => {\n if (props.disabled) return;\n if (props.open === undefined) setInternalOpen(next);\n props.onOpenChange?.(next);\n };\n createEffect(() => {\n const expanded = open();\n // Restore focus only when its current control becomes hidden, including\n // a parent-controlled collapse while focus is inside an editor.\n queueMicrotask(() => {\n if (expanded !== open()) return;\n const active = expand?.ownerDocument.activeElement;\n if (expanded && active === expand) collapse?.focus();\n if (!expanded && (active === collapse || (active && body?.contains(active)))) expand?.focus();\n });\n });\n const className = () => classNames(\"k2b-detail-panel__section\", props.class);\n // Resolve once: reading `props.children` twice would instantiate the section body twice.\n const resolved = children(() => props.children);\n\n return (\n <Show\n when={props.collapsible}\n fallback={\n <section class={className()} aria-labelledby={headingId}>\n <header class=\"k2b-detail-panel__section-header\">\n <DetailPanelSectionIcon icon={props.icon} tone={props.tone} />\n <div class=\"k2b-detail-panel__section-copy\">\n <h3 id={headingId}>{props.title}</h3>\n <Show when={props.description}>\n <p>{props.description}</p>\n </Show>\n </div>\n <Show when={props.meta}>\n <div class=\"k2b-detail-panel__section-meta\">{props.meta}</div>\n </Show>\n <Show when={props.actions}>\n <div class=\"k2b-detail-panel__section-actions\">{props.actions}</div>\n </Show>\n </header>\n <Show when={resolved()}>\n <div class=\"k2b-detail-panel__section-body\">{resolved()}</div>\n </Show>\n </section>\n }\n >\n <section class={className()} aria-labelledby={open() ? headingId : `${headingId}-closed`} data-open={open()}>\n <div hidden={open()}>\n <Button\n ref={expand}\n variant=\"ghost\"\n class=\"k2b-detail-panel__section-summary\"\n disabled={props.disabled}\n aria-expanded={false}\n aria-controls={bodyId}\n onClick={() => toggle(true)}\n >\n <DetailPanelSectionIcon icon={props.icon} tone={props.tone} />\n <span class=\"k2b-detail-panel__section-copy\">\n <span id={`${headingId}-closed`} class=\"k2b-detail-panel__section-title\">\n {props.title}\n </span>\n <Show when={props.description}>\n <span class=\"k2b-detail-panel__section-description\">{props.description}</span>\n </Show>\n </span>\n <Show when={props.meta}>\n <span class=\"k2b-detail-panel__section-meta\">{props.meta}</span>\n </Show>\n <i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />\n </Button>\n </div>\n <div hidden={!open()}>\n <header class=\"k2b-detail-panel__section-header\">\n <DetailPanelSectionIcon icon={props.icon} tone={props.tone} />\n <div class=\"k2b-detail-panel__section-copy\">\n <h3 id={headingId}>{props.title}</h3>\n <Show when={props.description}>\n <p>{props.description}</p>\n </Show>\n </div>\n <Show when={props.meta}>\n <div class=\"k2b-detail-panel__section-meta\">{props.meta}</div>\n </Show>\n <Button\n ref={collapse}\n variant=\"ghost\"\n size=\"sm\"\n disabled={props.disabled}\n aria-labelledby={headingId}\n aria-expanded={true}\n aria-controls={bodyId}\n onClick={() => toggle(false)}\n >\n <i class=\"ti ti-chevron-up\" aria-hidden=\"true\" />\n </Button>\n </header>\n </div>\n <div ref={body} id={bodyId} hidden={!open()} class=\"k2b-detail-panel__section-body\">\n {props.children}\n </div>\n </section>\n </Show>\n );\n};\n\nconst DetailPanel = ((props: DetailPanelProps): JSX.Element => (\n <div class={classNames(\"k2b-detail-panel\", props.class)}>{props.children}</div>\n)) as DetailPanelComponent;\n\nDetailPanel.Header = DetailPanelHeader;\nDetailPanel.Body = DetailPanelBody;\nDetailPanel.Summary = DetailPanelSummary;\nDetailPanel.Group = DetailPanelGroup;\nDetailPanel.Section = DetailPanelSection;\nDetailPanel.Action = DetailPanelAction;\n\nexport default DetailPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["children","createEffect","createSignal","createUniqueId","Show","splitProps","Button","ButtonLink","Dropdown","createScrollFade","classNames","base","extra","DetailPanelHeader","props","_$ssr","_tmpl$7","_$ssrAttribute","_$escape","class","_$createComponent","when","icon","_tmpl$8","leading","_tmpl$","title","subtitle","meta","_tmpl$4","_tmpl$2","_tmpl$3","actions","_tmpl$5","primaryActions","_tmpl$6","DetailPanelBody","body","scrollFade","_tmpl$9","undefined","scrollPreserveKey","DetailPanelSummary","headingId","_tmpl$1","_tmpl$0","DetailPanelGroup","_tmpl$10","label","DetailPanelSectionIcon","_tmpl$11","tone","DetailPanelActionContent","_tmpl$12","_tmpl$14","description","_tmpl$13","trailing","_tmpl$15","DetailPanelAction","local","rest","className","content","action","href","fallback","_$mergeProps","variant","size","menuItems","length","_tmpl$17","Root","items","align","menuLabel","Trigger","iconOnly","_tmpl$16","DetailPanelSection","bodyId","internalOpen","setInternalOpen","defaultOpen","open","expand","collapse","toggle","next","disabled","onOpenChange","expanded","queueMicrotask","active","ownerDocument","activeElement","focus","contains","resolved","collapsible","_tmpl$27","_tmpl$22","_tmpl$25","_tmpl$26","_tmpl$24","onClick","_tmpl$19","_tmpl$18","_tmpl$20","_tmpl$21","_tmpl$23","DetailPanel","Header","Body","Summary","Group","Section","Action"],"sources":["layout/DetailPanel.tsx"],"sourcesContent":["import { children, createEffect, createSignal, createUniqueId, type JSX, Show, splitProps } from \"solid-js\";\nimport { Button, ButtonLink, type ButtonLinkProps, type ButtonProps } from \"../actions/Button\";\nimport { Dropdown, type DropdownItem } from \"../actions/Dropdown\";\nimport { createScrollFade } from \"./scroll-fade\";\n\nexport type DetailPanelProps = {\n children: JSX.Element;\n class?: string;\n};\n\ntype DetailPanelHeaderBaseProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n meta?: JSX.Element;\n actions?: JSX.Element;\n primaryActions?: JSX.Element;\n class?: string;\n};\n\nexport type DetailPanelHeaderProps = DetailPanelHeaderBaseProps &\n (\n | {\n leading?: JSX.Element;\n icon?: never;\n }\n | {\n leading?: never;\n icon?: string;\n }\n );\n\nexport type DetailPanelBodyProps = {\n scrollFade?: boolean;\n children: JSX.Element;\n scrollPreserveKey?: string;\n class?: string;\n};\n\nexport type DetailPanelSummaryProps = {\n title: JSX.Element;\n children: JSX.Element;\n actions?: JSX.Element;\n class?: string;\n};\n\nexport type DetailPanelGroupProps = {\n children: JSX.Element;\n label?: string;\n class?: string;\n};\n\nexport type DetailPanelTone = \"accent\" | \"neutral\" | \"success\" | \"warning\" | \"danger\";\n\ntype DetailPanelSectionBaseProps = {\n title: JSX.Element;\n icon?: string;\n tone?: DetailPanelTone;\n description?: JSX.Element;\n meta?: JSX.Element;\n class?: string;\n};\n\ntype DetailPanelActionBaseProps = {\n title: JSX.Element;\n description?: JSX.Element;\n leading?: JSX.Element;\n trailing?: JSX.Element;\n class?: string;\n};\n\ntype DetailPanelActionMenuProps =\n | {\n menuItems?: never;\n menuLabel?: never;\n }\n | {\n menuItems: readonly DropdownItem[];\n menuLabel: string;\n };\n\nexport type DetailPanelActionLinkProps = DetailPanelActionBaseProps &\n DetailPanelActionMenuProps &\n Omit<ButtonLinkProps, \"children\" | \"class\" | \"size\" | \"title\" | \"variant\"> & {\n href: string;\n };\n\nexport type DetailPanelActionButtonProps = DetailPanelActionBaseProps &\n DetailPanelActionMenuProps &\n Omit<ButtonProps, \"children\" | \"class\" | \"size\" | \"title\" | \"variant\"> & {\n href?: never;\n };\n\nexport type DetailPanelActionProps = DetailPanelActionLinkProps | DetailPanelActionButtonProps;\n\nexport type DetailPanelSectionProps = DetailPanelSectionBaseProps &\n (\n | {\n children?: JSX.Element;\n actions?: JSX.Element;\n collapsible?: false;\n defaultOpen?: never;\n open?: never;\n onOpenChange?: never;\n disabled?: never;\n }\n | {\n children: JSX.Element;\n actions?: never;\n collapsible: true;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n }\n );\n\ntype DetailPanelComponent = ((props: DetailPanelProps) => JSX.Element) & {\n Header: (props: DetailPanelHeaderProps) => JSX.Element;\n Body: (props: DetailPanelBodyProps) => JSX.Element;\n Summary: (props: DetailPanelSummaryProps) => JSX.Element;\n Group: (props: DetailPanelGroupProps) => JSX.Element;\n Section: (props: DetailPanelSectionProps) => JSX.Element;\n Action: (props: DetailPanelActionProps) => JSX.Element;\n};\n\nconst classNames = (base: string, extra?: string): string => (extra ? `${base} ${extra}` : base);\n\nconst DetailPanelHeader = (props: DetailPanelHeaderProps): JSX.Element => (\n <header class={classNames(\"k2b-detail-panel__header\", props.class)}>\n <div class=\"k2b-detail-panel__header-main\">\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-detail-panel__header-icon\" aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Show>\n <Show when={props.leading}>\n <div class=\"k2b-detail-panel__header-leading\">{props.leading}</div>\n </Show>\n <div class=\"k2b-detail-panel__heading\">\n <h2>{props.title}</h2>\n <Show when={props.subtitle || props.meta}>\n <div class=\"k2b-detail-panel__supporting\">\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n <Show when={props.meta}>\n <div class=\"k2b-detail-panel__meta\">{props.meta}</div>\n </Show>\n </div>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-detail-panel__actions\">{props.actions}</div>\n </Show>\n </div>\n <Show when={props.primaryActions}>\n <div class=\"k2b-detail-panel__primary-actions\">{props.primaryActions}</div>\n </Show>\n </header>\n);\n\nconst DetailPanelBody = (props: DetailPanelBodyProps): JSX.Element => {\n let body!: HTMLDivElement;\n createScrollFade(\n () => body,\n () => props.scrollFade !== false,\n );\n return (\n <div\n ref={body}\n class={classNames(\"k2b-detail-panel__body\", props.class)}\n data-scroll-fade-mode={props.scrollFade !== false ? \"both\" : undefined}\n data-scroll-preserve={props.scrollPreserveKey}\n >\n {props.children}\n </div>\n );\n};\n\nconst DetailPanelSummary = (props: DetailPanelSummaryProps): JSX.Element => {\n const headingId = `k2b-detail-panel-summary-${createUniqueId()}`;\n\n return (\n <section class={classNames(\"k2b-detail-panel__summary\", props.class)} aria-labelledby={headingId}>\n <header class=\"k2b-detail-panel__summary-header\">\n <h3 id={headingId}>{props.title}</h3>\n <Show when={props.actions}>\n <div class=\"k2b-detail-panel__summary-actions\">{props.actions}</div>\n </Show>\n </header>\n <div class=\"k2b-detail-panel__summary-body\">{props.children}</div>\n </section>\n );\n};\n\nconst DetailPanelGroup = (props: DetailPanelGroupProps): JSX.Element => (\n <div class={classNames(\"k2b-detail-panel__group\", props.class)} role=\"group\" aria-label={props.label}>\n {props.children}\n </div>\n);\n\nconst DetailPanelSectionIcon = (props: Pick<DetailPanelSectionBaseProps, \"icon\" | \"tone\">): JSX.Element => (\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-detail-panel__section-icon\" data-tone={props.tone ?? \"neutral\"} aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Show>\n);\n\nconst DetailPanelActionContent = (props: DetailPanelActionBaseProps): JSX.Element => (\n <>\n <Show when={props.leading}>\n <span class=\"k2b-detail-panel__action-leading\">{props.leading}</span>\n </Show>\n <span class=\"k2b-detail-panel__action-copy\">\n <span class=\"k2b-detail-panel__action-title\">{props.title}</span>\n <Show when={props.description}>\n <span class=\"k2b-detail-panel__action-description\">{props.description}</span>\n </Show>\n </span>\n <Show when={props.trailing}>\n <span class=\"k2b-detail-panel__action-trailing\">{props.trailing}</span>\n </Show>\n </>\n);\n\nconst DetailPanelAction = (props: DetailPanelActionProps): JSX.Element => {\n const [local, rest] = splitProps(props, [\"class\", \"description\", \"href\", \"leading\", \"menuItems\", \"menuLabel\", \"title\", \"trailing\"]);\n const className = classNames(\"k2b-detail-panel__action\", local.class);\n const content = () => (\n <DetailPanelActionContent title={local.title} description={local.description} leading={local.leading} trailing={local.trailing} />\n );\n\n const action = () => (\n <Show\n when={local.href !== undefined}\n fallback={\n <Button\n {...(rest as Omit<DetailPanelActionButtonProps, keyof DetailPanelActionBaseProps>)}\n class={className}\n variant=\"ghost\"\n size=\"sm\"\n >\n {content()}\n </Button>\n }\n >\n <ButtonLink\n {...(rest as Omit<DetailPanelActionLinkProps, keyof DetailPanelActionBaseProps | \"href\">)}\n href={local.href as string}\n class={className}\n variant=\"ghost\"\n size=\"sm\"\n >\n {content()}\n </ButtonLink>\n </Show>\n );\n\n return (\n <Show when={local.menuItems?.length} fallback={action()}>\n <div class=\"k2b-detail-panel__action-row\">\n {action()}\n <Dropdown.Root items={local.menuItems ?? []} align=\"end\" label={local.menuLabel} class=\"k2b-detail-panel__action-menu\">\n <Dropdown.Trigger iconOnly size=\"sm\" variant=\"ghost\" label={local.menuLabel} class=\"k2b-detail-panel__action-menu-trigger\">\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </div>\n </Show>\n );\n};\n\nconst DetailPanelSection = (props: DetailPanelSectionProps): JSX.Element => {\n const headingId = `k2b-detail-panel-section-${createUniqueId()}`;\n const bodyId = `${headingId}-body`;\n const [internalOpen, setInternalOpen] = createSignal(props.defaultOpen ?? false);\n const open = () => props.open ?? internalOpen();\n let expand: HTMLButtonElement | undefined;\n let collapse: HTMLButtonElement | undefined;\n let body: HTMLDivElement | undefined;\n const toggle = (next: boolean) => {\n if (props.disabled) return;\n if (props.open === undefined) setInternalOpen(next);\n props.onOpenChange?.(next);\n };\n createEffect(() => {\n const expanded = open();\n // Restore focus only when its current control becomes hidden, including\n // a parent-controlled collapse while focus is inside an editor.\n queueMicrotask(() => {\n if (expanded !== open()) return;\n const active = expand?.ownerDocument.activeElement;\n if (expanded && active === expand) collapse?.focus();\n if (!expanded && (active === collapse || (active && body?.contains(active)))) expand?.focus();\n });\n });\n const className = () => classNames(\"k2b-detail-panel__section\", props.class);\n // Resolve once: reading `props.children` twice would instantiate the section body twice.\n const resolved = children(() => props.children);\n\n return (\n <Show\n when={props.collapsible}\n fallback={\n <section class={className()} aria-labelledby={headingId}>\n <header class=\"k2b-detail-panel__section-header\">\n <DetailPanelSectionIcon icon={props.icon} tone={props.tone} />\n <div class=\"k2b-detail-panel__section-copy\">\n <h3 id={headingId}>{props.title}</h3>\n <Show when={props.description}>\n <p>{props.description}</p>\n </Show>\n </div>\n <Show when={props.meta}>\n <div class=\"k2b-detail-panel__section-meta\">{props.meta}</div>\n </Show>\n <Show when={props.actions}>\n <div class=\"k2b-detail-panel__section-actions\">{props.actions}</div>\n </Show>\n </header>\n <Show when={resolved()}>\n <div class=\"k2b-detail-panel__section-body\">{resolved()}</div>\n </Show>\n </section>\n }\n >\n <section class={className()} aria-labelledby={open() ? headingId : `${headingId}-closed`} data-open={open()}>\n <div hidden={open()}>\n <Button\n ref={expand}\n variant=\"ghost\"\n class=\"k2b-detail-panel__section-summary\"\n disabled={props.disabled}\n aria-expanded={false}\n aria-controls={bodyId}\n onClick={() => toggle(true)}\n >\n <DetailPanelSectionIcon icon={props.icon} tone={props.tone} />\n <span class=\"k2b-detail-panel__section-copy\">\n <span id={`${headingId}-closed`} class=\"k2b-detail-panel__section-title\">\n {props.title}\n </span>\n <Show when={props.description}>\n <span class=\"k2b-detail-panel__section-description\">{props.description}</span>\n </Show>\n </span>\n <Show when={props.meta}>\n <span class=\"k2b-detail-panel__section-meta\">{props.meta}</span>\n </Show>\n <i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />\n </Button>\n </div>\n <div hidden={!open()}>\n <header class=\"k2b-detail-panel__section-header\">\n <DetailPanelSectionIcon icon={props.icon} tone={props.tone} />\n <div class=\"k2b-detail-panel__section-copy\">\n <h3 id={headingId}>{props.title}</h3>\n <Show when={props.description}>\n <p>{props.description}</p>\n </Show>\n </div>\n <Show when={props.meta}>\n <div class=\"k2b-detail-panel__section-meta\">{props.meta}</div>\n </Show>\n <Button\n ref={collapse}\n variant=\"ghost\"\n size=\"sm\"\n disabled={props.disabled}\n aria-labelledby={headingId}\n aria-expanded={true}\n aria-controls={bodyId}\n onClick={() => toggle(false)}\n >\n <i class=\"ti ti-chevron-up\" aria-hidden=\"true\" />\n </Button>\n </header>\n </div>\n <div ref={body} id={bodyId} hidden={!open()} class=\"k2b-detail-panel__section-body\">\n {props.children}\n </div>\n </section>\n </Show>\n );\n};\n\nconst DetailPanel = ((props: DetailPanelProps): JSX.Element => (\n <div class={classNames(\"k2b-detail-panel\", props.class)}>{props.children}</div>\n)) as DetailPanelComponent;\n\nDetailPanel.Header = DetailPanelHeader;\nDetailPanel.Body = DetailPanelBody;\nDetailPanel.Summary = DetailPanelSummary;\nDetailPanel.Group = DetailPanelGroup;\nDetailPanel.Section = DetailPanelSection;\nDetailPanel.Action = DetailPanelAction;\n\nexport default DetailPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["splitProps","createScrollFade","ScrollArea","props","local","elementProps","body","scrollFade","className","class","trim","_$ssrElement","_$mergeProps","data-scroll-fade-axis","orientation","data-viewport-size","viewportSize","data-orientation","data-scroll-fade-mode","undefined","data-scroll-preserve","scrollPreserveKey","_$escape","children"],"sources":["layout/ScrollArea.tsx"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\nimport { createScrollFade } from \"./scroll-fade\";\n\nexport type ScrollAreaProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"children\" | \"class\"> & {\n children: JSX.Element;\n scrollFade?: boolean;\n /** Stable compact catalog height, clamped to 60% of the dynamic viewport. */\n viewportSize?: \"compact\";\n orientation?: \"vertical\" | \"horizontal\";\n scrollPreserveKey?: string | false;\n class?: string;\n};\n\nexport function ScrollArea(props: ScrollAreaProps): JSX.Element {\n const [local, elementProps] = splitProps(props, [\"children\"
|
|
1
|
+
{"version":3,"names":["splitProps","createScrollFade","ScrollArea","props","local","elementProps","body","scrollFade","className","class","trim","_$ssrElement","_$mergeProps","data-scroll-fade-axis","orientation","data-viewport-size","viewportSize","data-orientation","data-scroll-fade-mode","undefined","data-scroll-preserve","scrollPreserveKey","_$escape","children"],"sources":["layout/ScrollArea.tsx"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\nimport { createScrollFade } from \"./scroll-fade\";\n\nexport type ScrollAreaProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"children\" | \"class\"> & {\n children: JSX.Element;\n scrollFade?: boolean;\n /** Stable compact catalog height, clamped to 60% of the dynamic viewport. */\n viewportSize?: \"compact\";\n orientation?: \"vertical\" | \"horizontal\";\n scrollPreserveKey?: string | false;\n class?: string;\n};\n\nexport function ScrollArea(props: ScrollAreaProps): JSX.Element {\n const [local, elementProps] = splitProps(props, [\n \"children\",\n \"scrollPreserveKey\",\n \"class\",\n \"scrollFade\",\n \"orientation\",\n \"viewportSize\",\n \"ref\",\n ]);\n let body!: HTMLDivElement;\n createScrollFade(\n () => body,\n () => local.scrollFade !== false,\n );\n const className = () => local.class?.trim();\n\n return (\n <div\n {...elementProps}\n ref={(el) => {\n body = el;\n if (typeof local.ref === \"function\") local.ref(el);\n }}\n data-scroll-fade-axis={local.orientation ?? \"vertical\"}\n data-viewport-size={local.viewportSize}\n data-orientation={local.orientation ?? \"vertical\"}\n data-scroll-fade-mode={local.scrollFade !== false ? \"both\" : undefined}\n class={className() ? `k2b-scroll-area ${className()}` : \"k2b-scroll-area\"}\n data-scroll-preserve={local.scrollPreserveKey || undefined}\n >\n {local.children}\n </div>\n );\n}\n\nexport default ScrollArea;\n"],"mappings":";;;AAAA,SAAmBA,UAAU,QAAQ,UAAU;AAC/C,SAASC,gBAAgB,QAAQ,eAAe;AAYhD,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAe;EAC9D,MAAM,CAACC,KAAK,EAAEC,YAAY,CAAC,GAAGL,UAAU,CAACG,KAAK,EAAE,CAC9C,UAAU,EACV,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,cAAc,EACd,KAAK,CACN,CAAC;EACF,IAAIG,IAAqB;EACzBL,gBAAgB,CACd,MAAMK,IAAI,EACV,MAAMF,KAAK,CAACG,UAAU,KAAK,KAC7B,CAAC;EACD,MAAMC,SAAS,GAAGA,CAAA,KAAMJ,KAAK,CAACK,KAAK,EAAEC,IAAI,CAAC,CAAC;EAE3C,OAAAC,YAAA,QAAAC,YAAA,CAEQP,YAAY;IAAA,6BAAAQ,CAAA;MAAA,OAKOT,KAAK,CAACU,WAAW,IAAI,UAAU;IAAA;IAAA,0BAAAC,CAAA;MAAA,OAClCX,KAAK,CAACY,YAAY;IAAA;IAAA,wBAAAC,CAAA;MAAA,OACpBb,KAAK,CAACU,WAAW,IAAI,UAAU;IAAA;IAAA,6BAAAI,CAAA;MAAA,OAC1Bd,KAAK,CAACG,UAAU,KAAK,KAAK,GAAG,MAAM,GAAGY,SAAS;IAAA;IAAA,aAAAV,CAAA;MAAA,OAC/DD,SAAS,CAAC,CAAC,GAAG,mBAAmBA,SAAS,CAAC,CAAC,EAAE,GAAG,iBAAiB;IAAA;IAAA,4BAAAY,CAAA;MAAA,OACnDhB,KAAK,CAACiB,iBAAiB,IAAIF,SAAS;IAAA;EAAA,IAAAG,QAAA,CAEzDlB,KAAK,CAACmB,QAAQ;AAGrB;AAEA,eAAerB,UAAU","ignoreList":[]}
|
|
@@ -4,9 +4,9 @@ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
|
4
4
|
import { escape as _$escape } from "solid-js/web";
|
|
5
5
|
var _tmpl$ = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-action k2b-app-workspace__sidebar-preview-trigger\" data-visibility=\"hover\"", " aria-haspopup=\"dialog\"", "><i", " aria-hidden=\"true\"></i></button>"],
|
|
6
6
|
_tmpl$2 = ["<div", " popover=\"auto\" role=\"dialog\"", " tabindex=\"-1\" class=\"k2b-app-workspace__sidebar-preview\">", "</div>"];
|
|
7
|
-
import { ScrollArea } from "./ScrollArea";
|
|
8
7
|
import { createSignal, createUniqueId, onCleanup, onMount } from "solid-js";
|
|
9
8
|
import { positionTooltipSurface } from "../feedback/tooltip-position";
|
|
9
|
+
import { ScrollArea } from "./ScrollArea";
|
|
10
10
|
|
|
11
11
|
/** A non-modal, interactive row preview. Native popover owns light dismissal. */
|
|
12
12
|
export function SidebarItemPreview(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ScrollArea","createSignal","createUniqueId","onCleanup","onMount","positionTooltipSurface","SidebarItemPreview","props","id","open","setOpen","button","panel","row","main","timer","pinned","dismissed","clear","clearTimeout","undefined","close","hidePopover","position","target","align","height","getBoundingClientRect","bottom","style","top","Math","round","max","min","window","innerHeight","show","showPopover","enter","setTimeout","leave","contains","document","activeElement","dismiss","restore","focus","toggle","closest","trigger","querySelector","setAttribute","label","addEventListener","pointerEnter","event","pointerType","focusOut","next","relatedTarget","Node","escape","key","reposition","observer","ResizeObserver","observe","disconnect","removeEventListener","_$ssr","_tmpl$","_$ssrAttribute","_$escape","_tmpl$2","_$createComponent","viewportSize","children"],"sources":["layout/SidebarItemPreview.tsx"],"sourcesContent":["import { ScrollArea, type ScrollAreaProps } from \"./ScrollArea\";\nimport { createSignal, createUniqueId, type JSX, onCleanup, onMount } from \"solid-js\";\nimport { positionTooltipSurface } from \"../feedback/tooltip-position\";\n\n/** A non-modal, interactive row preview. Native popover owns light dismissal. */\nexport function SidebarItemPreview(props: { label: string; children: JSX.Element | ((close: () => void) => JSX.Element); trigger?: \"action\" | \"row\"; align?: \"center\" | \"end\"; viewportSize?: ScrollAreaProps[\"viewportSize\"]; onOpenChange?: (open: boolean) => void }) {\n const id = `sidebar-preview-${createUniqueId()}`;\n const [open, setOpen] = createSignal(false);\n let button!: HTMLButtonElement;\n let panel!: HTMLDivElement;\n let row: HTMLElement | null = null;\n let main: HTMLButtonElement | null = null;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let pinned = false;\n let dismissed = false;\n const clear = () => { clearTimeout(timer); timer = undefined; };\n const close = () => { clear(); panel.hidePopover(); };\n const position = () => {\n const target = row ?? button;\n positionTooltipSurface(panel, target, \"right\");\n if (props.align === \"end\") {\n const height = panel.getBoundingClientRect().height;\n const bottom = target.getBoundingClientRect().bottom;\n panel.style.top = `${Math.round(Math.max(8, Math.min(bottom - height, window.innerHeight - height - 8)))}px`;\n }\n };\n const show = () => {\n clear();\n if (dismissed || open()) return;\n panel.showPopover();\n position();\n };\n const enter = () => { clear(); if (!dismissed && !open()) timer = setTimeout(show, 250); };\n const leave = () => {\n clear();\n dismissed = false;\n if (!pinned) timer = setTimeout(() => {\n if (!panel.contains(document.activeElement) && !row?.contains(document.activeElement)) close();\n }, 180);\n };\n const dismiss = () => {\n const restore = panel.contains(document.activeElement);\n dismissed = true;\n close();\n if (restore) (main ?? button).focus();\n };\n const toggle = () => {\n clear();\n if (open() && pinned) { dismiss(); return; }\n dismissed = false; pinned = true; show(); panel.focus();\n };\n onMount(() => {\n row = button.closest<HTMLElement>(\".k2b-app-workspace__sidebar-item\");\n if (props.trigger === \"row\") {\n main = row?.querySelector<HTMLButtonElement>(\":scope > button.k2b-app-workspace__sidebar-item-main\") ?? null;\n main?.setAttribute(\"aria-label\", props.label);\n main?.setAttribute(\"aria-haspopup\", \"dialog\");\n main?.setAttribute(\"aria-controls\", id);\n main?.setAttribute(\"aria-expanded\", \"false\");\n main?.addEventListener(\"click\", toggle);\n }\n const pointerEnter = (event: PointerEvent) => { if (event.pointerType === \"mouse\") enter(); };\n const focusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && (panel.contains(next) || row?.contains(next))) return;\n pinned = false;\n leave();\n };\n const escape = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\" || !open()) return;\n dismiss();\n };\n const reposition = () => { if (open()) position(); };\n row?.addEventListener(\"pointerenter\", pointerEnter);\n row?.addEventListener(\"pointerleave\", leave);\n row?.addEventListener(\"focusin\", enter);\n row?.addEventListener(\"focusout\", focusOut);\n panel.addEventListener(\"focusout\", focusOut);\n document.addEventListener(\"keydown\", escape);\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n const observer = new ResizeObserver(reposition);\n observer.observe(panel);\n onCleanup(() => {\n clear(); observer.disconnect();\n main?.removeEventListener(\"click\", toggle);\n row?.removeEventListener(\"pointerenter\", pointerEnter);\n row?.removeEventListener(\"pointerleave\", leave);\n row?.removeEventListener(\"focusin\", enter);\n row?.removeEventListener(\"focusout\", focusOut);\n panel.removeEventListener(\"focusout\", focusOut);\n document.removeEventListener(\"keydown\", escape);\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n });\n });\n return <>\n <button ref={button} type=\"button\" class=\"k2b-app-workspace__sidebar-item-action k2b-app-workspace__sidebar-preview-trigger\"\n data-visibility=\"hover\" aria-label={props.label} aria-haspopup=\"dialog\" aria-expanded={open()} aria-controls={id}\n data-row-trigger={props.trigger === \"row\" ? \"true\" : undefined}\n onClick={toggle}><i class={props.trigger === \"row\" ? \"ti ti-chevron-right\" : \"ti ti-info-circle\"} aria-hidden=\"true\" /></button>\n <div ref={panel} id={id} popover=\"auto\" role=\"dialog\" aria-label={props.label} tabIndex={-1}\n class=\"k2b-app-workspace__sidebar-preview\" onPointerEnter={clear} onPointerLeave={leave}\n onToggle={(event) => { const visible = event.newState === \"open\"; setOpen(visible); main?.setAttribute(\"aria-expanded\", String(visible)); props.onOpenChange?.(visible); if (!visible) pinned = false; }}>\n <ScrollArea viewportSize={props.viewportSize} class=\"k2b-app-workspace__sidebar-preview-body\">\n {typeof props.children === \"function\" ? props.children(dismiss) : props.children}\n </ScrollArea>\n </div>\n </>;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createSignal","createUniqueId","onCleanup","onMount","positionTooltipSurface","ScrollArea","SidebarItemPreview","props","id","open","setOpen","button","panel","row","main","timer","pinned","dismissed","clear","clearTimeout","undefined","close","hidePopover","position","target","align","height","getBoundingClientRect","bottom","style","top","Math","round","max","min","window","innerHeight","show","showPopover","enter","setTimeout","leave","contains","document","activeElement","dismiss","restore","focus","toggle","closest","trigger","querySelector","setAttribute","label","addEventListener","pointerEnter","event","pointerType","focusOut","next","relatedTarget","Node","escape","key","reposition","observer","ResizeObserver","observe","disconnect","removeEventListener","_$ssr","_tmpl$","_$ssrAttribute","_$escape","_tmpl$2","_$createComponent","viewportSize","children"],"sources":["layout/SidebarItemPreview.tsx"],"sourcesContent":["import { createSignal, createUniqueId, type JSX, onCleanup, onMount } from \"solid-js\";\nimport { positionTooltipSurface } from \"../feedback/tooltip-position\";\nimport { ScrollArea, type ScrollAreaProps } from \"./ScrollArea\";\n\n/** A non-modal, interactive row preview. Native popover owns light dismissal. */\nexport function SidebarItemPreview(props: {\n label: string;\n children: JSX.Element | ((close: () => void) => JSX.Element);\n trigger?: \"action\" | \"row\";\n align?: \"center\" | \"end\";\n viewportSize?: ScrollAreaProps[\"viewportSize\"];\n onOpenChange?: (open: boolean) => void;\n}) {\n const id = `sidebar-preview-${createUniqueId()}`;\n const [open, setOpen] = createSignal(false);\n let button!: HTMLButtonElement;\n let panel!: HTMLDivElement;\n let row: HTMLElement | null = null;\n let main: HTMLButtonElement | null = null;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let pinned = false;\n let dismissed = false;\n const clear = () => {\n clearTimeout(timer);\n timer = undefined;\n };\n const close = () => {\n clear();\n panel.hidePopover();\n };\n const position = () => {\n const target = row ?? button;\n positionTooltipSurface(panel, target, \"right\");\n if (props.align === \"end\") {\n const height = panel.getBoundingClientRect().height;\n const bottom = target.getBoundingClientRect().bottom;\n panel.style.top = `${Math.round(Math.max(8, Math.min(bottom - height, window.innerHeight - height - 8)))}px`;\n }\n };\n const show = () => {\n clear();\n if (dismissed || open()) return;\n panel.showPopover();\n position();\n };\n const enter = () => {\n clear();\n if (!dismissed && !open()) timer = setTimeout(show, 250);\n };\n const leave = () => {\n clear();\n dismissed = false;\n if (!pinned)\n timer = setTimeout(() => {\n if (!panel.contains(document.activeElement) && !row?.contains(document.activeElement)) close();\n }, 180);\n };\n const dismiss = () => {\n const restore = panel.contains(document.activeElement);\n dismissed = true;\n close();\n if (restore) (main ?? button).focus();\n };\n const toggle = () => {\n clear();\n if (open() && pinned) {\n dismiss();\n return;\n }\n dismissed = false;\n pinned = true;\n show();\n panel.focus();\n };\n onMount(() => {\n row = button.closest<HTMLElement>(\".k2b-app-workspace__sidebar-item\");\n if (props.trigger === \"row\") {\n main = row?.querySelector<HTMLButtonElement>(\":scope > button.k2b-app-workspace__sidebar-item-main\") ?? null;\n main?.setAttribute(\"aria-label\", props.label);\n main?.setAttribute(\"aria-haspopup\", \"dialog\");\n main?.setAttribute(\"aria-controls\", id);\n main?.setAttribute(\"aria-expanded\", \"false\");\n main?.addEventListener(\"click\", toggle);\n }\n const pointerEnter = (event: PointerEvent) => {\n if (event.pointerType === \"mouse\") enter();\n };\n const focusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && (panel.contains(next) || row?.contains(next))) return;\n pinned = false;\n leave();\n };\n const escape = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\" || !open()) return;\n dismiss();\n };\n const reposition = () => {\n if (open()) position();\n };\n row?.addEventListener(\"pointerenter\", pointerEnter);\n row?.addEventListener(\"pointerleave\", leave);\n row?.addEventListener(\"focusin\", enter);\n row?.addEventListener(\"focusout\", focusOut);\n panel.addEventListener(\"focusout\", focusOut);\n document.addEventListener(\"keydown\", escape);\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n const observer = new ResizeObserver(reposition);\n observer.observe(panel);\n onCleanup(() => {\n clear();\n observer.disconnect();\n main?.removeEventListener(\"click\", toggle);\n row?.removeEventListener(\"pointerenter\", pointerEnter);\n row?.removeEventListener(\"pointerleave\", leave);\n row?.removeEventListener(\"focusin\", enter);\n row?.removeEventListener(\"focusout\", focusOut);\n panel.removeEventListener(\"focusout\", focusOut);\n document.removeEventListener(\"keydown\", escape);\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n });\n });\n return (\n <>\n <button\n ref={button}\n type=\"button\"\n class=\"k2b-app-workspace__sidebar-item-action k2b-app-workspace__sidebar-preview-trigger\"\n data-visibility=\"hover\"\n aria-label={props.label}\n aria-haspopup=\"dialog\"\n aria-expanded={open()}\n aria-controls={id}\n data-row-trigger={props.trigger === \"row\" ? \"true\" : undefined}\n onClick={toggle}\n >\n <i class={props.trigger === \"row\" ? \"ti ti-chevron-right\" : \"ti ti-info-circle\"} aria-hidden=\"true\" />\n </button>\n <div\n ref={panel}\n id={id}\n popover=\"auto\"\n role=\"dialog\"\n aria-label={props.label}\n tabIndex={-1}\n class=\"k2b-app-workspace__sidebar-preview\"\n onPointerEnter={clear}\n onPointerLeave={leave}\n onToggle={(event) => {\n const visible = event.newState === \"open\";\n setOpen(visible);\n main?.setAttribute(\"aria-expanded\", String(visible));\n props.onOpenChange?.(visible);\n if (!visible) pinned = false;\n }}\n >\n <ScrollArea viewportSize={props.viewportSize} class=\"k2b-app-workspace__sidebar-preview-body\">\n {typeof props.children === \"function\" ? props.children(dismiss) : props.children}\n </ScrollArea>\n </div>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { installScrollFades } from "./scroll-fade";
|
|
2
1
|
import { APP_WORKSPACE_DETAIL_MAX, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DRAWER_MAX, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_MAIN_MIN, APP_WORKSPACE_PANE_MAX, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_SIDEBAR_COLLAPSED, APP_WORKSPACE_SIDEBAR_MAX, APP_WORKSPACE_SIDEBAR_MIN, appWorkspacePanelVariable, appWorkspaceResizeLimits, fitAppWorkspacePaneSizes, normalizeAppWorkspaceLayoutState, resolveAppWorkspaceSidebarWidth, safeAppWorkspacePanelId, shouldCollapseAppWorkspaceSidebar } from "./app-workspace-state";
|
|
2
|
+
import { installScrollFades } from "./scroll-fade";
|
|
3
3
|
const HANDLE_SELECTOR = "[data-app-workspace-resize]";
|
|
4
4
|
const ROOT_SELECTOR = "[data-k2b-app-workspace]";
|
|
5
5
|
const LAYOUT_REGION_SELECTOR = [ROOT_SELECTOR, ".k2b-app-workspace__sidebar", ".k2b-app-workspace__main-pane", ".k2b-app-workspace__detail", ".k2b-app-workspace__drawer", HANDLE_SELECTOR].join(",");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["installScrollFades","APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_PANE_MAX","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_MIN","appWorkspacePanelVariable","appWorkspaceResizeLimits","fitAppWorkspacePaneSizes","normalizeAppWorkspaceLayoutState","resolveAppWorkspaceSidebarWidth","safeAppWorkspacePanelId","shouldCollapseAppWorkspaceSidebar","HANDLE_SELECTOR","ROOT_SELECTOR","LAYOUT_REGION_SELECTOR","join","LABEL_SELECTOR","LABEL_TEXT_SELECTOR","ITEM_SELECTOR","clamp","value","min","max","Math","round","eventElement","event","target","Element","resizeHandle","closest","resizeKind","handle","dataset","appWorkspaceResize","resizeDirection","kind","workspaceResizeEdge","workspaceRoot","workspaceResizable","root","rootElements","selector","Array","from","querySelectorAll","filter","element","sidebarElement","mainElement","sidebarCollapsible","workspaceCollapsible","isVisible","Boolean","hidden","getComputedStyle","display","elementSize","rect","getBoundingClientRect","height","width","controlledPanel","controls","getAttribute","panel","document","getElementById","controlsResizableRegion","panelId","workspacePanelId","numberData","key","fallback","Number","isFinite","sizeLimits","controlled","main","panes","pane","classList","contains","details","sidebarWidth","otherDetailWidth","reduce","total","detail","defaultMin","defaultMax","workspaceSize","reservedSize","currentSize","updateHandleValue","size","limits","setAttribute","String","applySize","requestedSize","options","collapsible","sidebar","snapSidebar","collapsed","style","setProperty","sidebarCollapsed","reconcilePanes","layoutState","active","handles","length","Set","map","fixedWidth","has","fits","flatMap","preferred","moved","liveSize","paneWidths","desired","sizes","forEach","fit","index","measureLabel","label","text","querySelector","overflow","scrollWidth","clientWidth","installAppWorkspaceController","eventRoot","stopScrollFades","readState","version","resizeFrame","pendingClient","persistSize","writeState","flushPointerMove","cancelAnimationFrame","client","startClient","startSize","direction","onPointerMove","pointerId","clientY","clientX","requestAnimationFrame","stopResize","PointerEvent","finished","workspaceResizeActive","hasPointerCapture","releasePointerCapture","body","userSelect","previousUserSelect","window","removeEventListener","onPointerDown","button","preventDefault","setPointerCapture","addEventListener","onKeyDown","current","step","shiftKey","requested","collapsibleSidebar","allRoots","nested","HTMLElement","matches","roots","reconcile","persisted","detailWidths","drawerHeights","undefined","onFocusIn","onPointerOver","relatedTarget","Node","clearMeasuredLabels","removeProperty","reconcileFrame","scheduleReconcile","clearLabels","onResize","observedRoots","resizeObserver","ResizeObserver","syncObservedRoots","next","unobserve","delete","add","observe","layoutNode","node","mutationObserver","MutationObserver","records","changed","some","record","type","addedNodes","removedNodes","attributes","attributeFilter","childList","subtree","disconnect","clear"],"sources":["layout/app-workspace-controller.ts"],"sourcesContent":["import { installScrollFades } from \"./scroll-fade\";\nimport {\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n type AppWorkspaceLayoutState,\n type AppWorkspaceResizeKind,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n fitAppWorkspacePaneSizes,\n normalizeAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\n\nexport type AppWorkspaceControllerOptions = {\n root?: Document | HTMLElement;\n readState?: () => AppWorkspaceLayoutState | null | undefined;\n writeState?: (state: AppWorkspaceLayoutState) => void;\n};\n\ntype ActiveResize = {\n handle: HTMLElement;\n root: HTMLElement;\n kind: AppWorkspaceResizeKind;\n pointerId: number;\n startClient: number;\n startSize: number;\n liveSize: number;\n moved: boolean;\n direction: 1 | -1;\n previousUserSelect: string;\n};\n\nconst HANDLE_SELECTOR = \"[data-app-workspace-resize]\";\nconst ROOT_SELECTOR = \"[data-k2b-app-workspace]\";\nconst LAYOUT_REGION_SELECTOR = [\n ROOT_SELECTOR,\n \".k2b-app-workspace__sidebar\",\n \".k2b-app-workspace__main-pane\",\n \".k2b-app-workspace__detail\",\n \".k2b-app-workspace__drawer\",\n HANDLE_SELECTOR,\n].join(\",\");\nconst LABEL_SELECTOR = \".k2b-app-workspace__sidebar-item-label[data-marquee='true']\";\nconst LABEL_TEXT_SELECTOR = \".k2b-app-workspace__sidebar-item-label-text\";\nconst ITEM_SELECTOR = \".k2b-app-workspace__sidebar-item\";\nconst clamp = (value: number, min: number, max: number) => Math.round(Math.min(max, Math.max(min, value)));\nconst eventElement = (event: Event) => (event.target instanceof Element ? event.target : null);\nconst resizeHandle = (event: Event) => eventElement(event)?.closest<HTMLElement>(HANDLE_SELECTOR) ?? null;\nconst resizeKind = (handle: HTMLElement): AppWorkspaceResizeKind | null => {\n const value = handle.dataset.appWorkspaceResize;\n return value === \"sidebar\" || value === \"pane\" || value === \"detail\" || value === \"drawer\" ? value : null;\n};\nconst resizeDirection = (handle: HTMLElement, kind: AppWorkspaceResizeKind): 1 | -1 =>\n (handle.dataset.workspaceResizeEdge ?? (kind === \"sidebar\" ? \"end\" : \"start\")) === \"end\" ? 1 : -1;\nconst workspaceRoot = (handle: HTMLElement) => handle.closest<HTMLElement>(ROOT_SELECTOR);\nconst workspaceResizable = (root: HTMLElement) => root.dataset.workspaceResizable !== \"false\";\nconst rootElements = (root: HTMLElement, selector: string) =>\n Array.from(root.querySelectorAll<HTMLElement>(selector)).filter((element) => element.closest(ROOT_SELECTOR) === root);\nconst sidebarElement = (root: HTMLElement) => rootElements(root, \".k2b-app-workspace__sidebar\")[0] ?? null;\nconst mainElement = (root: HTMLElement) => rootElements(root, \".k2b-app-workspace__main\")[0] ?? null;\nconst sidebarCollapsible = (root: HTMLElement) => sidebarElement(root)?.dataset.workspaceCollapsible === \"true\";\nconst isVisible = (element: HTMLElement | null): element is HTMLElement =>\n Boolean(element && !element.hidden && getComputedStyle(element).display !== \"none\");\nconst elementSize = (element: HTMLElement | null, kind: AppWorkspaceResizeKind) => {\n if (!isVisible(element)) return 0;\n const rect = element.getBoundingClientRect();\n return kind === \"drawer\" ? rect.height : rect.width;\n};\nconst controlledPanel = (root: HTMLElement, handle: HTMLElement) => {\n const controls = handle.getAttribute(\"aria-controls\");\n if (!controls) return null;\n const panel = document.getElementById(controls);\n return panel?.closest(ROOT_SELECTOR) === root ? panel : null;\n};\nconst controlsResizableRegion = (root: HTMLElement, handle: HTMLElement, kind: AppWorkspaceResizeKind) =>\n (kind === \"sidebar\" ? sidebarElement(root) : controlledPanel(root, handle))?.dataset.workspaceResizable === \"true\";\nconst panelId = (handle: HTMLElement) => safeAppWorkspacePanelId(handle.dataset.workspacePanelId ?? \"primary\") || \"primary\";\nconst numberData = (handle: HTMLElement, key: \"workspaceDefaultSize\" | \"workspaceMinSize\" | \"workspaceMaxSize\", fallback: number) => {\n const value = Number(handle.dataset[key]);\n return Number.isFinite(value) ? value : fallback;\n};\n\nconst sizeLimits = (root: HTMLElement, handle: HTMLElement, kind: AppWorkspaceResizeKind) => {\n const controlled = controlledPanel(root, handle);\n const main = kind === \"pane\" ? handle.closest<HTMLElement>(\".k2b-app-workspace__main\") : mainElement(root);\n const panes = main\n ? Array.from(main.querySelectorAll<HTMLElement>(\".k2b-app-workspace__main-pane\")).filter(\n (pane) => pane.closest(\".k2b-app-workspace__main\") === main && !pane.classList.contains(\"is-primary\") && isVisible(pane),\n )\n : [];\n const details = rootElements(root, \".k2b-app-workspace__detail\").filter(isVisible);\n const sidebarWidth = elementSize(sidebarElement(root), \"sidebar\");\n const otherDetailWidth = details.reduce((total, detail) => total + (detail === controlled ? 0 : elementSize(detail, \"detail\")), 0);\n const defaultMin =\n kind === \"sidebar\"\n ? APP_WORKSPACE_SIDEBAR_MIN\n : kind === \"pane\"\n ? APP_WORKSPACE_PANE_MIN\n : kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MIN\n : APP_WORKSPACE_DRAWER_MIN;\n const defaultMax =\n kind === \"sidebar\"\n ? APP_WORKSPACE_SIDEBAR_MAX\n : kind === \"pane\"\n ? APP_WORKSPACE_PANE_MAX\n : kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MAX\n : APP_WORKSPACE_DRAWER_MAX;\n return appWorkspaceResizeLimits({\n kind,\n workspaceSize:\n kind === \"drawer\"\n ? root.getBoundingClientRect().height\n : kind === \"pane\" && main\n ? main.getBoundingClientRect().width\n : root.getBoundingClientRect().width,\n reservedSize:\n kind === \"sidebar\"\n ? otherDetailWidth\n : kind === \"pane\"\n ? panes.reduce((total, pane) => total + (pane === controlled ? 0 : elementSize(pane, \"pane\")), 0)\n : kind === \"detail\"\n ? sidebarWidth + otherDetailWidth\n : 0,\n min: numberData(handle, \"workspaceMinSize\", defaultMin),\n max: numberData(handle, \"workspaceMaxSize\", defaultMax),\n sidebarCollapsible: kind === \"sidebar\" && sidebarCollapsible(root),\n });\n};\n\nconst currentSize = (root: HTMLElement, handle: HTMLElement, kind: AppWorkspaceResizeKind) =>\n kind === \"sidebar\" ? elementSize(sidebarElement(root), kind) : elementSize(controlledPanel(root, handle), kind);\n\nconst updateHandleValue = (\n root: HTMLElement,\n handle: HTMLElement,\n kind: AppWorkspaceResizeKind,\n size: number,\n limits = sizeLimits(root, handle, kind),\n) => {\n const { min, max } = limits;\n handle.setAttribute(\"aria-valuemin\", String(min));\n handle.setAttribute(\"aria-valuemax\", String(max));\n handle.setAttribute(\"aria-valuenow\", String(clamp(size, min, max)));\n};\n\nconst applySize = (\n root: HTMLElement,\n handle: HTMLElement,\n kind: AppWorkspaceResizeKind,\n requestedSize: number,\n /**\n * `snapSidebar: false` tracks the pointer continuously and only *previews*\n * the collapsed state. Snapping (the default, and what keyboard steps and\n * reconciliation want) quantises the width to either the collapsed rail or\n * the sidebar minimum, which during a live drag makes the handle jump.\n */\n options: { snapSidebar?: boolean } = {},\n) => {\n const { min, max } = sizeLimits(root, handle, kind);\n if (kind === \"sidebar\") {\n const collapsible = sidebarCollapsible(root);\n const sidebar =\n options.snapSidebar === false\n ? { width: clamp(requestedSize, min, max), collapsed: shouldCollapseAppWorkspaceSidebar(requestedSize, collapsible) }\n : resolveAppWorkspaceSidebarWidth(requestedSize, max, collapsible);\n root.style.setProperty(\"--k2b-workspace-sidebar-width\", `${sidebar.width}px`);\n // Cloud removes the attribute rather than writing \"false\", so that a\n // presence selector (`[data-sidebar-collapsed]`) means \"collapsed\".\n if (sidebar.collapsed) root.dataset.sidebarCollapsed = \"true\";\n else delete root.dataset.sidebarCollapsed;\n updateHandleValue(root, handle, kind, sidebar.width, { min, max });\n return sidebar.width;\n }\n const size = clamp(requestedSize, min, max);\n root.style.setProperty(appWorkspacePanelVariable(kind, panelId(handle)), `${size}px`);\n updateHandleValue(root, handle, kind, size, { min, max });\n return size;\n};\n\ntype PaneFit = {\n desired: number;\n handle: HTMLElement;\n min: number;\n};\n\n/**\n * Fits all auxiliary main panes as one group. One main region remains the\n * flexible anchor; the others keep their preferred sizes while space permits\n * and give up the same share of their optional space when the container,\n * navigation or detail panels reduce the available width.\n */\nconst reconcilePanes = (root: HTMLElement, layoutState: AppWorkspaceLayoutState, active: ActiveResize | null = null) => {\n const main = mainElement(root);\n if (!main || !isVisible(main)) return;\n const handles = rootElements(root, HANDLE_SELECTOR).filter(\n (handle) => resizeKind(handle) === \"pane\" && controlsResizableRegion(root, handle, \"pane\"),\n );\n if (!handles.length) return;\n\n const controlled = new Set(handles.map((handle) => controlledPanel(root, handle)).filter(Boolean));\n const fixedWidth = Array.from(main.querySelectorAll<HTMLElement>(\".k2b-app-workspace__main-pane\"))\n .filter(\n (pane) =>\n pane.closest(\".k2b-app-workspace__main\") === main &&\n !pane.classList.contains(\"is-primary\") &&\n isVisible(pane) &&\n !controlled.has(pane),\n )\n .reduce((total, pane) => total + elementSize(pane, \"pane\"), 0);\n const fits: PaneFit[] = handles.flatMap((handle) => {\n const panel = controlledPanel(root, handle);\n if (!isVisible(panel)) return [];\n const min = numberData(handle, \"workspaceMinSize\", APP_WORKSPACE_PANE_MIN);\n const max = Math.max(min, numberData(handle, \"workspaceMaxSize\", APP_WORKSPACE_PANE_MAX));\n const preferred =\n active?.moved && active.root === root && active.kind === \"pane\" && active.handle === handle\n ? active.liveSize\n : (layoutState.paneWidths?.[panelId(handle)] ?? numberData(handle, \"workspaceDefaultSize\", elementSize(panel, \"pane\")));\n const desired = clamp(preferred, min, max);\n return [{ desired, handle, min }];\n });\n if (!fits.length) return;\n\n const sizes = fitAppWorkspacePaneSizes(fits, main.getBoundingClientRect().width - fixedWidth - APP_WORKSPACE_MAIN_MIN);\n fits.forEach((fit, index) => {\n root.style.setProperty(appWorkspacePanelVariable(\"pane\", panelId(fit.handle)), `${sizes[index]}px`);\n });\n fits.forEach((fit, index) => updateHandleValue(root, fit.handle, \"pane\", sizes[index]!));\n};\n\n/**\n * Marquee support for a truncated sidebar label.\n *\n * The animation needs to know how far to travel, and that is only knowable\n * once the label has been laid out — so it is measured lazily, on the same\n * hover/focus that triggers it, and published as a custom property. Labels\n * that fit get no `data-overflow`, so they never animate.\n */\nconst measureLabel = (label: HTMLElement) => {\n const text = label.querySelector<HTMLElement>(LABEL_TEXT_SELECTOR);\n if (!text) return;\n const overflow = Math.max(0, text.scrollWidth - label.clientWidth);\n label.style.setProperty(\"--k2b-sidebar-label-overflow\", `${overflow}px`);\n if (overflow > 2) label.dataset.overflow = \"true\";\n else delete label.dataset.overflow;\n};\n\nexport const installAppWorkspaceController = (options: AppWorkspaceControllerOptions = {}): (() => void) => {\n const eventRoot = options.root ?? document;\n const stopScrollFades = installScrollFades(eventRoot);\n let layoutState = normalizeAppWorkspaceLayoutState(options.readState?.()) ?? { version: 2 as const };\n let active: ActiveResize | null = null;\n let resizeFrame: number | null = null;\n let pendingClient: number | null = null;\n\n const persistSize = (handle: HTMLElement, kind: AppWorkspaceResizeKind, size: number) => {\n if (kind === \"sidebar\") {\n const collapsed = size === APP_WORKSPACE_SIDEBAR_COLLAPSED;\n layoutState = {\n ...layoutState,\n sidebarWidth: collapsed ? layoutState.sidebarWidth : size,\n sidebarCollapsed: collapsed,\n };\n } else {\n const key = kind === \"pane\" ? \"paneWidths\" : kind === \"detail\" ? \"detailWidths\" : \"drawerHeights\";\n layoutState = { ...layoutState, [key]: { ...layoutState[key], [panelId(handle)]: size } };\n }\n options.writeState?.(layoutState);\n };\n\n const flushPointerMove = () => {\n if (resizeFrame !== null) {\n cancelAnimationFrame(resizeFrame);\n resizeFrame = null;\n }\n if (!active || pendingClient === null) return;\n const client = pendingClient;\n pendingClient = null;\n active.moved ||= client !== active.startClient;\n active.liveSize = applySize(\n active.root,\n active.handle,\n active.kind,\n active.startSize + (client - active.startClient) * active.direction,\n { snapSidebar: active.kind !== \"sidebar\" },\n );\n if (active.kind === \"sidebar\" || active.kind === \"detail\") reconcilePanes(active.root, layoutState, active);\n };\n const onPointerMove = (event: PointerEvent) => {\n if (!active || event.pointerId !== active.pointerId) return;\n pendingClient = active.kind === \"drawer\" ? event.clientY : event.clientX;\n if (resizeFrame !== null) return;\n resizeFrame = requestAnimationFrame(flushPointerMove);\n };\n const stopResize = (event?: Event) => {\n if (!active || (event instanceof PointerEvent && event.pointerId !== active.pointerId)) return;\n flushPointerMove();\n const finished = active;\n active = null;\n delete finished.root.dataset.workspaceResizeActive;\n delete finished.handle.dataset.workspaceResizeActive;\n if (finished.moved) {\n // A pane's rendered width may have been fitted below the pointer's live\n // preference to keep the main region usable. Persist that preference,\n // then fit the visible panes from the updated state. Reapplying it through\n // the per-handle limits here would count the already-fitted sibling panes\n // a second time and permanently shrink the preference on release.\n const size =\n finished.kind === \"pane\" ? finished.liveSize : applySize(finished.root, finished.handle, finished.kind, finished.liveSize);\n persistSize(finished.handle, finished.kind, size);\n if (finished.kind !== \"drawer\") reconcilePanes(finished.root, layoutState);\n }\n if (finished.handle.hasPointerCapture?.(finished.pointerId)) finished.handle.releasePointerCapture(finished.pointerId);\n document.body.style.userSelect = finished.previousUserSelect;\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", stopResize);\n window.removeEventListener(\"pointercancel\", stopResize);\n window.removeEventListener(\"blur\", stopResize);\n };\n const onPointerDown = (event: PointerEvent) => {\n const handle = resizeHandle(event);\n const kind = handle ? resizeKind(handle) : null;\n const root = handle ? workspaceRoot(handle) : null;\n if (!handle || !kind || !root || !workspaceResizable(root) || !controlsResizableRegion(root, handle, kind) || event.button !== 0)\n return;\n event.preventDefault();\n stopResize();\n pendingClient = null;\n const startSize = currentSize(root, handle, kind);\n active = {\n handle,\n root,\n kind,\n pointerId: event.pointerId,\n startClient: kind === \"drawer\" ? event.clientY : event.clientX,\n startSize,\n liveSize: startSize,\n moved: false,\n direction: resizeDirection(handle, kind),\n previousUserSelect: document.body.style.userSelect,\n };\n root.dataset.workspaceResizeActive = kind;\n handle.dataset.workspaceResizeActive = \"true\";\n document.body.style.userSelect = \"none\";\n handle.setPointerCapture?.(event.pointerId);\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", stopResize);\n window.addEventListener(\"pointercancel\", stopResize);\n window.addEventListener(\"blur\", stopResize);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n const handle = resizeHandle(event);\n const kind = handle ? resizeKind(handle) : null;\n const root = handle ? workspaceRoot(handle) : null;\n if (!handle || !kind || !root || !workspaceResizable(root) || !controlsResizableRegion(root, handle, kind)) return;\n const current = currentSize(root, handle, kind);\n const { min, max } = sizeLimits(root, handle, kind);\n const step = event.shiftKey ? 32 : 8;\n let requested: number | null = null;\n const direction = resizeDirection(handle, kind);\n const collapsibleSidebar = kind === \"sidebar\" && sidebarCollapsible(root);\n if (event.key === \"Home\") requested = min;\n else if (event.key === \"End\") requested = max;\n // The drawer arrows follow the handle's edge like every other kind; the\n // hard-coded +/- here inverted for a handle on the `end` edge.\n else if (kind === \"drawer\" && event.key === \"ArrowUp\") requested = current - step * direction;\n else if (kind === \"drawer\" && event.key === \"ArrowDown\") requested = current + step * direction;\n // A collapsible sidebar is already at its minimum when the rail is the\n // next step: without these two branches a keyboard step of 8 (or 32) is\n // clamped straight back to the minimum, so the handle is simply stuck and\n // collapse/expand is unreachable without a pointer.\n else if (kind !== \"drawer\" && event.key === \"ArrowLeft\")\n requested = collapsibleSidebar && current <= APP_WORKSPACE_SIDEBAR_MIN ? APP_WORKSPACE_SIDEBAR_COLLAPSED : current - step * direction;\n else if (kind !== \"drawer\" && event.key === \"ArrowRight\")\n requested =\n collapsibleSidebar && current <= APP_WORKSPACE_SIDEBAR_COLLAPSED\n ? (layoutState.sidebarWidth ?? APP_WORKSPACE_SIDEBAR_MIN)\n : current + step * direction;\n if (requested === null) return;\n event.preventDefault();\n persistSize(handle, kind, applySize(root, handle, kind, requested));\n if (kind === \"sidebar\" || kind === \"detail\") reconcilePanes(root, layoutState);\n };\n\n const allRoots = () => {\n const nested = Array.from(eventRoot.querySelectorAll<HTMLElement>(ROOT_SELECTOR));\n return eventRoot instanceof HTMLElement && eventRoot.matches(ROOT_SELECTOR) ? [eventRoot, ...nested] : nested;\n };\n const roots = () => {\n // A hidden or zero-width workspace measures 0, which drives every limit\n // down to its minimum — reconciling one would overwrite its variables and\n // `aria-valuenow` with that minimum for good.\n return allRoots().filter((root) => getComputedStyle(root).display !== \"none\" && root.getBoundingClientRect().width > 0);\n };\n const reconcile = () => {\n roots().forEach((root) => {\n // `data-workspace-resizable=\"false\"` already refuses pointer and keyboard\n // resizing; without this the same workspace still had persisted sizes\n // forced onto it on load and on every window resize.\n if (!workspaceResizable(root)) return;\n const handles = rootElements(root, HANDLE_SELECTOR);\n // Chrome establishes the space available to the work area. Auxiliary\n // panes are then fitted together into what remains, so DOM order cannot\n // give the last pane an accidental sizing priority.\n handles\n .filter((handle) => resizeKind(handle) !== \"pane\")\n .forEach((handle) => {\n const kind = resizeKind(handle);\n if (!kind || !controlsResizableRegion(root, handle, kind)) return;\n if (active?.moved && active.root === root && active.handle === handle && active.kind === kind) {\n applySize(root, handle, kind, active.liveSize, { snapSidebar: kind !== \"sidebar\" });\n return;\n }\n const persisted =\n kind === \"sidebar\"\n ? layoutState.sidebarCollapsed && sidebarCollapsible(root)\n ? APP_WORKSPACE_SIDEBAR_COLLAPSED\n : layoutState.sidebarWidth\n : kind === \"detail\"\n ? layoutState.detailWidths?.[panelId(handle)]\n : layoutState.drawerHeights?.[panelId(handle)];\n if (persisted !== undefined) applySize(root, handle, kind, persisted);\n else updateHandleValue(root, handle, kind, currentSize(root, handle, kind));\n });\n reconcilePanes(root, layoutState, active?.root === root ? active : null);\n });\n };\n /**\n * A handle's limits move whenever anything around it does — opening a detail\n * panel, showing a pane. Only `applySize` refreshed them, so a keyboard user\n * arriving at a handle was announced whatever `aria-valuenow`/`valuemax` the\n * last drag left behind.\n */\n const onFocusIn = (event: FocusEvent) => {\n const handle = resizeHandle(event);\n const kind = handle ? resizeKind(handle) : null;\n const root = handle ? workspaceRoot(handle) : null;\n if (handle && kind && root && controlsResizableRegion(root, handle, kind)) {\n updateHandleValue(root, handle, kind, currentSize(root, handle, kind));\n }\n const label = eventElement(event)?.closest<HTMLElement>(ITEM_SELECTOR)?.querySelector<HTMLElement>(LABEL_SELECTOR);\n if (label) requestAnimationFrame(() => measureLabel(label));\n };\n\n // Measured on entry rather than on every render: `scrollWidth` forces layout,\n // and a sidebar can hold hundreds of rows.\n const onPointerOver = (event: PointerEvent) => {\n const label = eventElement(event)?.closest<HTMLElement>(LABEL_SELECTOR);\n if (!label || (event.relatedTarget instanceof Node && label.contains(event.relatedTarget))) return;\n requestAnimationFrame(() => measureLabel(label));\n };\n\n // A resize changes every label's available width, so the cached measurement\n // is dropped and taken again on the next hover or focus.\n const clearMeasuredLabels = () => {\n eventRoot.querySelectorAll<HTMLElement>(LABEL_SELECTOR).forEach((label) => {\n delete label.dataset.overflow;\n label.style.removeProperty(\"--k2b-sidebar-label-overflow\");\n });\n };\n\n // Geometry can change without a window resize: a parent can resize the\n // workspace, or a detail/pane can open. All sources share one frame so a\n // transition performs at most one layout reconciliation.\n let reconcileFrame: number | null = null;\n const scheduleReconcile = (clearLabels = false) => {\n if (clearLabels) clearMeasuredLabels();\n if (reconcileFrame !== null) return;\n reconcileFrame = requestAnimationFrame(() => {\n reconcileFrame = null;\n reconcile();\n });\n };\n const onResize = () => scheduleReconcile(true);\n\n const observedRoots = new Set<HTMLElement>();\n const resizeObserver =\n typeof ResizeObserver === \"undefined\"\n ? null\n : new ResizeObserver(() => {\n scheduleReconcile(true);\n });\n const syncObservedRoots = () => {\n if (!resizeObserver) return;\n const next = new Set(allRoots());\n observedRoots.forEach((root) => {\n if (!next.has(root)) {\n resizeObserver.unobserve(root);\n observedRoots.delete(root);\n }\n });\n next.forEach((root) => {\n if (observedRoots.has(root)) return;\n observedRoots.add(root);\n resizeObserver.observe(root);\n });\n };\n const layoutNode = (node: Node) =>\n node instanceof Element && (node.matches(LAYOUT_REGION_SELECTOR) || Boolean(node.querySelector(LAYOUT_REGION_SELECTOR)));\n const mutationObserver =\n typeof MutationObserver === \"undefined\"\n ? null\n : new MutationObserver((records) => {\n const changed = records.some((record) =>\n record.type === \"attributes\"\n ? record.target instanceof Element && record.target.matches(LAYOUT_REGION_SELECTOR)\n : [...Array.from(record.addedNodes), ...Array.from(record.removedNodes)].some(layoutNode),\n );\n if (!changed) return;\n syncObservedRoots();\n scheduleReconcile();\n });\n\n eventRoot.addEventListener(\"pointerdown\", onPointerDown as EventListener);\n eventRoot.addEventListener(\"keydown\", onKeyDown as EventListener);\n eventRoot.addEventListener(\"focusin\", onFocusIn as EventListener);\n eventRoot.addEventListener(\"pointerover\", onPointerOver as EventListener);\n window.addEventListener(\"resize\", onResize);\n syncObservedRoots();\n mutationObserver?.observe(eventRoot, {\n attributes: true,\n attributeFilter: [\"hidden\"],\n childList: true,\n subtree: true,\n });\n scheduleReconcile();\n return () => {\n stopScrollFades();\n // Flush the latest coalesced pointer sample before listeners and frames are\n // torn down, so unmounting during a drag cannot lose the final size.\n stopResize();\n if (reconcileFrame !== null) cancelAnimationFrame(reconcileFrame);\n mutationObserver?.disconnect();\n resizeObserver?.disconnect();\n observedRoots.clear();\n eventRoot.removeEventListener(\"pointerdown\", onPointerDown as EventListener);\n eventRoot.removeEventListener(\"keydown\", onKeyDown as EventListener);\n eventRoot.removeEventListener(\"focusin\", onFocusIn as EventListener);\n eventRoot.removeEventListener(\"pointerover\", onPointerOver as EventListener);\n window.removeEventListener(\"resize\", onResize);\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_PANE_MAX","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_MIN","appWorkspacePanelVariable","appWorkspaceResizeLimits","fitAppWorkspacePaneSizes","normalizeAppWorkspaceLayoutState","resolveAppWorkspaceSidebarWidth","safeAppWorkspacePanelId","shouldCollapseAppWorkspaceSidebar","installScrollFades","HANDLE_SELECTOR","ROOT_SELECTOR","LAYOUT_REGION_SELECTOR","join","LABEL_SELECTOR","LABEL_TEXT_SELECTOR","ITEM_SELECTOR","clamp","value","min","max","Math","round","eventElement","event","target","Element","resizeHandle","closest","resizeKind","handle","dataset","appWorkspaceResize","resizeDirection","kind","workspaceResizeEdge","workspaceRoot","workspaceResizable","root","rootElements","selector","Array","from","querySelectorAll","filter","element","sidebarElement","mainElement","sidebarCollapsible","workspaceCollapsible","isVisible","Boolean","hidden","getComputedStyle","display","elementSize","rect","getBoundingClientRect","height","width","controlledPanel","controls","getAttribute","panel","document","getElementById","controlsResizableRegion","panelId","workspacePanelId","numberData","key","fallback","Number","isFinite","sizeLimits","controlled","main","panes","pane","classList","contains","details","sidebarWidth","otherDetailWidth","reduce","total","detail","defaultMin","defaultMax","workspaceSize","reservedSize","currentSize","updateHandleValue","size","limits","setAttribute","String","applySize","requestedSize","options","collapsible","sidebar","snapSidebar","collapsed","style","setProperty","sidebarCollapsed","reconcilePanes","layoutState","active","handles","length","Set","map","fixedWidth","has","fits","flatMap","preferred","moved","liveSize","paneWidths","desired","sizes","forEach","fit","index","measureLabel","label","text","querySelector","overflow","scrollWidth","clientWidth","installAppWorkspaceController","eventRoot","stopScrollFades","readState","version","resizeFrame","pendingClient","persistSize","writeState","flushPointerMove","cancelAnimationFrame","client","startClient","startSize","direction","onPointerMove","pointerId","clientY","clientX","requestAnimationFrame","stopResize","PointerEvent","finished","workspaceResizeActive","hasPointerCapture","releasePointerCapture","body","userSelect","previousUserSelect","window","removeEventListener","onPointerDown","button","preventDefault","setPointerCapture","addEventListener","onKeyDown","current","step","shiftKey","requested","collapsibleSidebar","allRoots","nested","HTMLElement","matches","roots","reconcile","persisted","detailWidths","drawerHeights","undefined","onFocusIn","onPointerOver","relatedTarget","Node","clearMeasuredLabels","removeProperty","reconcileFrame","scheduleReconcile","clearLabels","onResize","observedRoots","resizeObserver","ResizeObserver","syncObservedRoots","next","unobserve","delete","add","observe","layoutNode","node","mutationObserver","MutationObserver","records","changed","some","record","type","addedNodes","removedNodes","attributes","attributeFilter","childList","subtree","disconnect","clear"],"sources":["layout/app-workspace-controller.ts"],"sourcesContent":["import {\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n type AppWorkspaceLayoutState,\n type AppWorkspaceResizeKind,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n fitAppWorkspacePaneSizes,\n normalizeAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\nimport { installScrollFades } from \"./scroll-fade\";\n\nexport type AppWorkspaceControllerOptions = {\n root?: Document | HTMLElement;\n readState?: () => AppWorkspaceLayoutState | null | undefined;\n writeState?: (state: AppWorkspaceLayoutState) => void;\n};\n\ntype ActiveResize = {\n handle: HTMLElement;\n root: HTMLElement;\n kind: AppWorkspaceResizeKind;\n pointerId: number;\n startClient: number;\n startSize: number;\n liveSize: number;\n moved: boolean;\n direction: 1 | -1;\n previousUserSelect: string;\n};\n\nconst HANDLE_SELECTOR = \"[data-app-workspace-resize]\";\nconst ROOT_SELECTOR = \"[data-k2b-app-workspace]\";\nconst LAYOUT_REGION_SELECTOR = [\n ROOT_SELECTOR,\n \".k2b-app-workspace__sidebar\",\n \".k2b-app-workspace__main-pane\",\n \".k2b-app-workspace__detail\",\n \".k2b-app-workspace__drawer\",\n HANDLE_SELECTOR,\n].join(\",\");\nconst LABEL_SELECTOR = \".k2b-app-workspace__sidebar-item-label[data-marquee='true']\";\nconst LABEL_TEXT_SELECTOR = \".k2b-app-workspace__sidebar-item-label-text\";\nconst ITEM_SELECTOR = \".k2b-app-workspace__sidebar-item\";\nconst clamp = (value: number, min: number, max: number) => Math.round(Math.min(max, Math.max(min, value)));\nconst eventElement = (event: Event) => (event.target instanceof Element ? event.target : null);\nconst resizeHandle = (event: Event) => eventElement(event)?.closest<HTMLElement>(HANDLE_SELECTOR) ?? null;\nconst resizeKind = (handle: HTMLElement): AppWorkspaceResizeKind | null => {\n const value = handle.dataset.appWorkspaceResize;\n return value === \"sidebar\" || value === \"pane\" || value === \"detail\" || value === \"drawer\" ? value : null;\n};\nconst resizeDirection = (handle: HTMLElement, kind: AppWorkspaceResizeKind): 1 | -1 =>\n (handle.dataset.workspaceResizeEdge ?? (kind === \"sidebar\" ? \"end\" : \"start\")) === \"end\" ? 1 : -1;\nconst workspaceRoot = (handle: HTMLElement) => handle.closest<HTMLElement>(ROOT_SELECTOR);\nconst workspaceResizable = (root: HTMLElement) => root.dataset.workspaceResizable !== \"false\";\nconst rootElements = (root: HTMLElement, selector: string) =>\n Array.from(root.querySelectorAll<HTMLElement>(selector)).filter((element) => element.closest(ROOT_SELECTOR) === root);\nconst sidebarElement = (root: HTMLElement) => rootElements(root, \".k2b-app-workspace__sidebar\")[0] ?? null;\nconst mainElement = (root: HTMLElement) => rootElements(root, \".k2b-app-workspace__main\")[0] ?? null;\nconst sidebarCollapsible = (root: HTMLElement) => sidebarElement(root)?.dataset.workspaceCollapsible === \"true\";\nconst isVisible = (element: HTMLElement | null): element is HTMLElement =>\n Boolean(element && !element.hidden && getComputedStyle(element).display !== \"none\");\nconst elementSize = (element: HTMLElement | null, kind: AppWorkspaceResizeKind) => {\n if (!isVisible(element)) return 0;\n const rect = element.getBoundingClientRect();\n return kind === \"drawer\" ? rect.height : rect.width;\n};\nconst controlledPanel = (root: HTMLElement, handle: HTMLElement) => {\n const controls = handle.getAttribute(\"aria-controls\");\n if (!controls) return null;\n const panel = document.getElementById(controls);\n return panel?.closest(ROOT_SELECTOR) === root ? panel : null;\n};\nconst controlsResizableRegion = (root: HTMLElement, handle: HTMLElement, kind: AppWorkspaceResizeKind) =>\n (kind === \"sidebar\" ? sidebarElement(root) : controlledPanel(root, handle))?.dataset.workspaceResizable === \"true\";\nconst panelId = (handle: HTMLElement) => safeAppWorkspacePanelId(handle.dataset.workspacePanelId ?? \"primary\") || \"primary\";\nconst numberData = (handle: HTMLElement, key: \"workspaceDefaultSize\" | \"workspaceMinSize\" | \"workspaceMaxSize\", fallback: number) => {\n const value = Number(handle.dataset[key]);\n return Number.isFinite(value) ? value : fallback;\n};\n\nconst sizeLimits = (root: HTMLElement, handle: HTMLElement, kind: AppWorkspaceResizeKind) => {\n const controlled = controlledPanel(root, handle);\n const main = kind === \"pane\" ? handle.closest<HTMLElement>(\".k2b-app-workspace__main\") : mainElement(root);\n const panes = main\n ? Array.from(main.querySelectorAll<HTMLElement>(\".k2b-app-workspace__main-pane\")).filter(\n (pane) => pane.closest(\".k2b-app-workspace__main\") === main && !pane.classList.contains(\"is-primary\") && isVisible(pane),\n )\n : [];\n const details = rootElements(root, \".k2b-app-workspace__detail\").filter(isVisible);\n const sidebarWidth = elementSize(sidebarElement(root), \"sidebar\");\n const otherDetailWidth = details.reduce((total, detail) => total + (detail === controlled ? 0 : elementSize(detail, \"detail\")), 0);\n const defaultMin =\n kind === \"sidebar\"\n ? APP_WORKSPACE_SIDEBAR_MIN\n : kind === \"pane\"\n ? APP_WORKSPACE_PANE_MIN\n : kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MIN\n : APP_WORKSPACE_DRAWER_MIN;\n const defaultMax =\n kind === \"sidebar\"\n ? APP_WORKSPACE_SIDEBAR_MAX\n : kind === \"pane\"\n ? APP_WORKSPACE_PANE_MAX\n : kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MAX\n : APP_WORKSPACE_DRAWER_MAX;\n return appWorkspaceResizeLimits({\n kind,\n workspaceSize:\n kind === \"drawer\"\n ? root.getBoundingClientRect().height\n : kind === \"pane\" && main\n ? main.getBoundingClientRect().width\n : root.getBoundingClientRect().width,\n reservedSize:\n kind === \"sidebar\"\n ? otherDetailWidth\n : kind === \"pane\"\n ? panes.reduce((total, pane) => total + (pane === controlled ? 0 : elementSize(pane, \"pane\")), 0)\n : kind === \"detail\"\n ? sidebarWidth + otherDetailWidth\n : 0,\n min: numberData(handle, \"workspaceMinSize\", defaultMin),\n max: numberData(handle, \"workspaceMaxSize\", defaultMax),\n sidebarCollapsible: kind === \"sidebar\" && sidebarCollapsible(root),\n });\n};\n\nconst currentSize = (root: HTMLElement, handle: HTMLElement, kind: AppWorkspaceResizeKind) =>\n kind === \"sidebar\" ? elementSize(sidebarElement(root), kind) : elementSize(controlledPanel(root, handle), kind);\n\nconst updateHandleValue = (\n root: HTMLElement,\n handle: HTMLElement,\n kind: AppWorkspaceResizeKind,\n size: number,\n limits = sizeLimits(root, handle, kind),\n) => {\n const { min, max } = limits;\n handle.setAttribute(\"aria-valuemin\", String(min));\n handle.setAttribute(\"aria-valuemax\", String(max));\n handle.setAttribute(\"aria-valuenow\", String(clamp(size, min, max)));\n};\n\nconst applySize = (\n root: HTMLElement,\n handle: HTMLElement,\n kind: AppWorkspaceResizeKind,\n requestedSize: number,\n /**\n * `snapSidebar: false` tracks the pointer continuously and only *previews*\n * the collapsed state. Snapping (the default, and what keyboard steps and\n * reconciliation want) quantises the width to either the collapsed rail or\n * the sidebar minimum, which during a live drag makes the handle jump.\n */\n options: { snapSidebar?: boolean } = {},\n) => {\n const { min, max } = sizeLimits(root, handle, kind);\n if (kind === \"sidebar\") {\n const collapsible = sidebarCollapsible(root);\n const sidebar =\n options.snapSidebar === false\n ? { width: clamp(requestedSize, min, max), collapsed: shouldCollapseAppWorkspaceSidebar(requestedSize, collapsible) }\n : resolveAppWorkspaceSidebarWidth(requestedSize, max, collapsible);\n root.style.setProperty(\"--k2b-workspace-sidebar-width\", `${sidebar.width}px`);\n // Cloud removes the attribute rather than writing \"false\", so that a\n // presence selector (`[data-sidebar-collapsed]`) means \"collapsed\".\n if (sidebar.collapsed) root.dataset.sidebarCollapsed = \"true\";\n else delete root.dataset.sidebarCollapsed;\n updateHandleValue(root, handle, kind, sidebar.width, { min, max });\n return sidebar.width;\n }\n const size = clamp(requestedSize, min, max);\n root.style.setProperty(appWorkspacePanelVariable(kind, panelId(handle)), `${size}px`);\n updateHandleValue(root, handle, kind, size, { min, max });\n return size;\n};\n\ntype PaneFit = {\n desired: number;\n handle: HTMLElement;\n min: number;\n};\n\n/**\n * Fits all auxiliary main panes as one group. One main region remains the\n * flexible anchor; the others keep their preferred sizes while space permits\n * and give up the same share of their optional space when the container,\n * navigation or detail panels reduce the available width.\n */\nconst reconcilePanes = (root: HTMLElement, layoutState: AppWorkspaceLayoutState, active: ActiveResize | null = null) => {\n const main = mainElement(root);\n if (!main || !isVisible(main)) return;\n const handles = rootElements(root, HANDLE_SELECTOR).filter(\n (handle) => resizeKind(handle) === \"pane\" && controlsResizableRegion(root, handle, \"pane\"),\n );\n if (!handles.length) return;\n\n const controlled = new Set(handles.map((handle) => controlledPanel(root, handle)).filter(Boolean));\n const fixedWidth = Array.from(main.querySelectorAll<HTMLElement>(\".k2b-app-workspace__main-pane\"))\n .filter(\n (pane) =>\n pane.closest(\".k2b-app-workspace__main\") === main &&\n !pane.classList.contains(\"is-primary\") &&\n isVisible(pane) &&\n !controlled.has(pane),\n )\n .reduce((total, pane) => total + elementSize(pane, \"pane\"), 0);\n const fits: PaneFit[] = handles.flatMap((handle) => {\n const panel = controlledPanel(root, handle);\n if (!isVisible(panel)) return [];\n const min = numberData(handle, \"workspaceMinSize\", APP_WORKSPACE_PANE_MIN);\n const max = Math.max(min, numberData(handle, \"workspaceMaxSize\", APP_WORKSPACE_PANE_MAX));\n const preferred =\n active?.moved && active.root === root && active.kind === \"pane\" && active.handle === handle\n ? active.liveSize\n : (layoutState.paneWidths?.[panelId(handle)] ?? numberData(handle, \"workspaceDefaultSize\", elementSize(panel, \"pane\")));\n const desired = clamp(preferred, min, max);\n return [{ desired, handle, min }];\n });\n if (!fits.length) return;\n\n const sizes = fitAppWorkspacePaneSizes(fits, main.getBoundingClientRect().width - fixedWidth - APP_WORKSPACE_MAIN_MIN);\n fits.forEach((fit, index) => {\n root.style.setProperty(appWorkspacePanelVariable(\"pane\", panelId(fit.handle)), `${sizes[index]}px`);\n });\n fits.forEach((fit, index) => updateHandleValue(root, fit.handle, \"pane\", sizes[index]!));\n};\n\n/**\n * Marquee support for a truncated sidebar label.\n *\n * The animation needs to know how far to travel, and that is only knowable\n * once the label has been laid out — so it is measured lazily, on the same\n * hover/focus that triggers it, and published as a custom property. Labels\n * that fit get no `data-overflow`, so they never animate.\n */\nconst measureLabel = (label: HTMLElement) => {\n const text = label.querySelector<HTMLElement>(LABEL_TEXT_SELECTOR);\n if (!text) return;\n const overflow = Math.max(0, text.scrollWidth - label.clientWidth);\n label.style.setProperty(\"--k2b-sidebar-label-overflow\", `${overflow}px`);\n if (overflow > 2) label.dataset.overflow = \"true\";\n else delete label.dataset.overflow;\n};\n\nexport const installAppWorkspaceController = (options: AppWorkspaceControllerOptions = {}): (() => void) => {\n const eventRoot = options.root ?? document;\n const stopScrollFades = installScrollFades(eventRoot);\n let layoutState = normalizeAppWorkspaceLayoutState(options.readState?.()) ?? { version: 2 as const };\n let active: ActiveResize | null = null;\n let resizeFrame: number | null = null;\n let pendingClient: number | null = null;\n\n const persistSize = (handle: HTMLElement, kind: AppWorkspaceResizeKind, size: number) => {\n if (kind === \"sidebar\") {\n const collapsed = size === APP_WORKSPACE_SIDEBAR_COLLAPSED;\n layoutState = {\n ...layoutState,\n sidebarWidth: collapsed ? layoutState.sidebarWidth : size,\n sidebarCollapsed: collapsed,\n };\n } else {\n const key = kind === \"pane\" ? \"paneWidths\" : kind === \"detail\" ? \"detailWidths\" : \"drawerHeights\";\n layoutState = { ...layoutState, [key]: { ...layoutState[key], [panelId(handle)]: size } };\n }\n options.writeState?.(layoutState);\n };\n\n const flushPointerMove = () => {\n if (resizeFrame !== null) {\n cancelAnimationFrame(resizeFrame);\n resizeFrame = null;\n }\n if (!active || pendingClient === null) return;\n const client = pendingClient;\n pendingClient = null;\n active.moved ||= client !== active.startClient;\n active.liveSize = applySize(\n active.root,\n active.handle,\n active.kind,\n active.startSize + (client - active.startClient) * active.direction,\n { snapSidebar: active.kind !== \"sidebar\" },\n );\n if (active.kind === \"sidebar\" || active.kind === \"detail\") reconcilePanes(active.root, layoutState, active);\n };\n const onPointerMove = (event: PointerEvent) => {\n if (!active || event.pointerId !== active.pointerId) return;\n pendingClient = active.kind === \"drawer\" ? event.clientY : event.clientX;\n if (resizeFrame !== null) return;\n resizeFrame = requestAnimationFrame(flushPointerMove);\n };\n const stopResize = (event?: Event) => {\n if (!active || (event instanceof PointerEvent && event.pointerId !== active.pointerId)) return;\n flushPointerMove();\n const finished = active;\n active = null;\n delete finished.root.dataset.workspaceResizeActive;\n delete finished.handle.dataset.workspaceResizeActive;\n if (finished.moved) {\n // A pane's rendered width may have been fitted below the pointer's live\n // preference to keep the main region usable. Persist that preference,\n // then fit the visible panes from the updated state. Reapplying it through\n // the per-handle limits here would count the already-fitted sibling panes\n // a second time and permanently shrink the preference on release.\n const size =\n finished.kind === \"pane\" ? finished.liveSize : applySize(finished.root, finished.handle, finished.kind, finished.liveSize);\n persistSize(finished.handle, finished.kind, size);\n if (finished.kind !== \"drawer\") reconcilePanes(finished.root, layoutState);\n }\n if (finished.handle.hasPointerCapture?.(finished.pointerId)) finished.handle.releasePointerCapture(finished.pointerId);\n document.body.style.userSelect = finished.previousUserSelect;\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", stopResize);\n window.removeEventListener(\"pointercancel\", stopResize);\n window.removeEventListener(\"blur\", stopResize);\n };\n const onPointerDown = (event: PointerEvent) => {\n const handle = resizeHandle(event);\n const kind = handle ? resizeKind(handle) : null;\n const root = handle ? workspaceRoot(handle) : null;\n if (!handle || !kind || !root || !workspaceResizable(root) || !controlsResizableRegion(root, handle, kind) || event.button !== 0)\n return;\n event.preventDefault();\n stopResize();\n pendingClient = null;\n const startSize = currentSize(root, handle, kind);\n active = {\n handle,\n root,\n kind,\n pointerId: event.pointerId,\n startClient: kind === \"drawer\" ? event.clientY : event.clientX,\n startSize,\n liveSize: startSize,\n moved: false,\n direction: resizeDirection(handle, kind),\n previousUserSelect: document.body.style.userSelect,\n };\n root.dataset.workspaceResizeActive = kind;\n handle.dataset.workspaceResizeActive = \"true\";\n document.body.style.userSelect = \"none\";\n handle.setPointerCapture?.(event.pointerId);\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", stopResize);\n window.addEventListener(\"pointercancel\", stopResize);\n window.addEventListener(\"blur\", stopResize);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n const handle = resizeHandle(event);\n const kind = handle ? resizeKind(handle) : null;\n const root = handle ? workspaceRoot(handle) : null;\n if (!handle || !kind || !root || !workspaceResizable(root) || !controlsResizableRegion(root, handle, kind)) return;\n const current = currentSize(root, handle, kind);\n const { min, max } = sizeLimits(root, handle, kind);\n const step = event.shiftKey ? 32 : 8;\n let requested: number | null = null;\n const direction = resizeDirection(handle, kind);\n const collapsibleSidebar = kind === \"sidebar\" && sidebarCollapsible(root);\n if (event.key === \"Home\") requested = min;\n else if (event.key === \"End\") requested = max;\n // The drawer arrows follow the handle's edge like every other kind; the\n // hard-coded +/- here inverted for a handle on the `end` edge.\n else if (kind === \"drawer\" && event.key === \"ArrowUp\") requested = current - step * direction;\n else if (kind === \"drawer\" && event.key === \"ArrowDown\") requested = current + step * direction;\n // A collapsible sidebar is already at its minimum when the rail is the\n // next step: without these two branches a keyboard step of 8 (or 32) is\n // clamped straight back to the minimum, so the handle is simply stuck and\n // collapse/expand is unreachable without a pointer.\n else if (kind !== \"drawer\" && event.key === \"ArrowLeft\")\n requested = collapsibleSidebar && current <= APP_WORKSPACE_SIDEBAR_MIN ? APP_WORKSPACE_SIDEBAR_COLLAPSED : current - step * direction;\n else if (kind !== \"drawer\" && event.key === \"ArrowRight\")\n requested =\n collapsibleSidebar && current <= APP_WORKSPACE_SIDEBAR_COLLAPSED\n ? (layoutState.sidebarWidth ?? APP_WORKSPACE_SIDEBAR_MIN)\n : current + step * direction;\n if (requested === null) return;\n event.preventDefault();\n persistSize(handle, kind, applySize(root, handle, kind, requested));\n if (kind === \"sidebar\" || kind === \"detail\") reconcilePanes(root, layoutState);\n };\n\n const allRoots = () => {\n const nested = Array.from(eventRoot.querySelectorAll<HTMLElement>(ROOT_SELECTOR));\n return eventRoot instanceof HTMLElement && eventRoot.matches(ROOT_SELECTOR) ? [eventRoot, ...nested] : nested;\n };\n const roots = () => {\n // A hidden or zero-width workspace measures 0, which drives every limit\n // down to its minimum — reconciling one would overwrite its variables and\n // `aria-valuenow` with that minimum for good.\n return allRoots().filter((root) => getComputedStyle(root).display !== \"none\" && root.getBoundingClientRect().width > 0);\n };\n const reconcile = () => {\n roots().forEach((root) => {\n // `data-workspace-resizable=\"false\"` already refuses pointer and keyboard\n // resizing; without this the same workspace still had persisted sizes\n // forced onto it on load and on every window resize.\n if (!workspaceResizable(root)) return;\n const handles = rootElements(root, HANDLE_SELECTOR);\n // Chrome establishes the space available to the work area. Auxiliary\n // panes are then fitted together into what remains, so DOM order cannot\n // give the last pane an accidental sizing priority.\n handles\n .filter((handle) => resizeKind(handle) !== \"pane\")\n .forEach((handle) => {\n const kind = resizeKind(handle);\n if (!kind || !controlsResizableRegion(root, handle, kind)) return;\n if (active?.moved && active.root === root && active.handle === handle && active.kind === kind) {\n applySize(root, handle, kind, active.liveSize, { snapSidebar: kind !== \"sidebar\" });\n return;\n }\n const persisted =\n kind === \"sidebar\"\n ? layoutState.sidebarCollapsed && sidebarCollapsible(root)\n ? APP_WORKSPACE_SIDEBAR_COLLAPSED\n : layoutState.sidebarWidth\n : kind === \"detail\"\n ? layoutState.detailWidths?.[panelId(handle)]\n : layoutState.drawerHeights?.[panelId(handle)];\n if (persisted !== undefined) applySize(root, handle, kind, persisted);\n else updateHandleValue(root, handle, kind, currentSize(root, handle, kind));\n });\n reconcilePanes(root, layoutState, active?.root === root ? active : null);\n });\n };\n /**\n * A handle's limits move whenever anything around it does — opening a detail\n * panel, showing a pane. Only `applySize` refreshed them, so a keyboard user\n * arriving at a handle was announced whatever `aria-valuenow`/`valuemax` the\n * last drag left behind.\n */\n const onFocusIn = (event: FocusEvent) => {\n const handle = resizeHandle(event);\n const kind = handle ? resizeKind(handle) : null;\n const root = handle ? workspaceRoot(handle) : null;\n if (handle && kind && root && controlsResizableRegion(root, handle, kind)) {\n updateHandleValue(root, handle, kind, currentSize(root, handle, kind));\n }\n const label = eventElement(event)?.closest<HTMLElement>(ITEM_SELECTOR)?.querySelector<HTMLElement>(LABEL_SELECTOR);\n if (label) requestAnimationFrame(() => measureLabel(label));\n };\n\n // Measured on entry rather than on every render: `scrollWidth` forces layout,\n // and a sidebar can hold hundreds of rows.\n const onPointerOver = (event: PointerEvent) => {\n const label = eventElement(event)?.closest<HTMLElement>(LABEL_SELECTOR);\n if (!label || (event.relatedTarget instanceof Node && label.contains(event.relatedTarget))) return;\n requestAnimationFrame(() => measureLabel(label));\n };\n\n // A resize changes every label's available width, so the cached measurement\n // is dropped and taken again on the next hover or focus.\n const clearMeasuredLabels = () => {\n eventRoot.querySelectorAll<HTMLElement>(LABEL_SELECTOR).forEach((label) => {\n delete label.dataset.overflow;\n label.style.removeProperty(\"--k2b-sidebar-label-overflow\");\n });\n };\n\n // Geometry can change without a window resize: a parent can resize the\n // workspace, or a detail/pane can open. All sources share one frame so a\n // transition performs at most one layout reconciliation.\n let reconcileFrame: number | null = null;\n const scheduleReconcile = (clearLabels = false) => {\n if (clearLabels) clearMeasuredLabels();\n if (reconcileFrame !== null) return;\n reconcileFrame = requestAnimationFrame(() => {\n reconcileFrame = null;\n reconcile();\n });\n };\n const onResize = () => scheduleReconcile(true);\n\n const observedRoots = new Set<HTMLElement>();\n const resizeObserver =\n typeof ResizeObserver === \"undefined\"\n ? null\n : new ResizeObserver(() => {\n scheduleReconcile(true);\n });\n const syncObservedRoots = () => {\n if (!resizeObserver) return;\n const next = new Set(allRoots());\n observedRoots.forEach((root) => {\n if (!next.has(root)) {\n resizeObserver.unobserve(root);\n observedRoots.delete(root);\n }\n });\n next.forEach((root) => {\n if (observedRoots.has(root)) return;\n observedRoots.add(root);\n resizeObserver.observe(root);\n });\n };\n const layoutNode = (node: Node) =>\n node instanceof Element && (node.matches(LAYOUT_REGION_SELECTOR) || Boolean(node.querySelector(LAYOUT_REGION_SELECTOR)));\n const mutationObserver =\n typeof MutationObserver === \"undefined\"\n ? null\n : new MutationObserver((records) => {\n const changed = records.some((record) =>\n record.type === \"attributes\"\n ? record.target instanceof Element && record.target.matches(LAYOUT_REGION_SELECTOR)\n : [...Array.from(record.addedNodes), ...Array.from(record.removedNodes)].some(layoutNode),\n );\n if (!changed) return;\n syncObservedRoots();\n scheduleReconcile();\n });\n\n eventRoot.addEventListener(\"pointerdown\", onPointerDown as EventListener);\n eventRoot.addEventListener(\"keydown\", onKeyDown as EventListener);\n eventRoot.addEventListener(\"focusin\", onFocusIn as EventListener);\n eventRoot.addEventListener(\"pointerover\", onPointerOver as EventListener);\n window.addEventListener(\"resize\", onResize);\n syncObservedRoots();\n mutationObserver?.observe(eventRoot, {\n attributes: true,\n attributeFilter: [\"hidden\"],\n childList: true,\n subtree: true,\n });\n scheduleReconcile();\n return () => {\n stopScrollFades();\n // Flush the latest coalesced pointer sample before listeners and frames are\n // torn down, so unmounting during a drag cannot lose the final size.\n stopResize();\n if (reconcileFrame !== null) cancelAnimationFrame(reconcileFrame);\n mutationObserver?.disconnect();\n resizeObserver?.disconnect();\n observedRoots.clear();\n eventRoot.removeEventListener(\"pointerdown\", onPointerDown as EventListener);\n eventRoot.removeEventListener(\"keydown\", onKeyDown as EventListener);\n eventRoot.removeEventListener(\"focusin\", onFocusIn as EventListener);\n eventRoot.removeEventListener(\"pointerover\", onPointerOver as EventListener);\n window.removeEventListener(\"resize\", onResize);\n };\n};\n"],"mappings":"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","ignoreList":[]}
|