@k2b/ui 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/browser/actions/index.js +2 -2
  2. package/dist/browser/actions/index.js.map +1 -1
  3. package/dist/browser/chat/ChatComposer.js +1 -1
  4. package/dist/browser/chat/ChatComposer.js.map +1 -1
  5. package/dist/browser/chat/ChatContextPopup.js.map +1 -1
  6. package/dist/browser/chat/ChatPrimitives.js +2 -2
  7. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  8. package/dist/browser/chat/ChatTasks.js +1 -1
  9. package/dist/browser/chat/ChatTasks.js.map +1 -1
  10. package/dist/browser/chat/ChatTimeline.js +1 -1
  11. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  12. package/dist/browser/chat/composer-document.js.map +1 -1
  13. package/dist/browser/chat/index.js.map +1 -1
  14. package/dist/browser/content/Chart.js +3 -3
  15. package/dist/browser/content/Chart.js.map +1 -1
  16. package/dist/browser/content/ChartExplorer.js +4 -4
  17. package/dist/browser/content/ChartExplorer.js.map +1 -1
  18. package/dist/browser/content/ChartExplorerControls.js +1 -1
  19. package/dist/browser/content/ChartExplorerControls.js.map +1 -1
  20. package/dist/browser/content/ChartFilterControls.js +2 -2
  21. package/dist/browser/content/ChartFilterControls.js.map +1 -1
  22. package/dist/browser/content/ChartSnapshotView.js +2 -1
  23. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  24. package/dist/browser/content/FileView.js +7 -3
  25. package/dist/browser/content/FileView.js.map +1 -1
  26. package/dist/browser/content/MarkdownView.js.map +1 -1
  27. package/dist/browser/content/Pagination.js.map +1 -1
  28. package/dist/browser/content/chart-explorer.js.map +1 -1
  29. package/dist/browser/content/chart-inspection.js.map +1 -1
  30. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  31. package/dist/browser/content/chart-snapshot.js.map +1 -1
  32. package/dist/browser/content/file-view-preview.js.map +1 -1
  33. package/dist/browser/content/index.js +9 -9
  34. package/dist/browser/content/index.js.map +1 -1
  35. package/dist/browser/feedback/toast.js.map +1 -1
  36. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  37. package/dist/browser/inputs/NumberInput.js +9 -1
  38. package/dist/browser/inputs/NumberInput.js.map +1 -1
  39. package/dist/browser/inputs/Select.js.map +1 -1
  40. package/dist/browser/inputs/markdown/behaviors.js +1 -1
  41. package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
  42. package/dist/browser/layout/AppWorkspace.js +264 -248
  43. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  44. package/dist/browser/layout/DetailPanel.js +1 -1
  45. package/dist/browser/layout/DetailPanel.js.map +1 -1
  46. package/dist/browser/layout/ScrollArea.js.map +1 -1
  47. package/dist/browser/layout/SidebarItemPreview.js +1 -1
  48. package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
  49. package/dist/browser/layout/app-workspace-controller.js +1 -1
  50. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  51. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  52. package/dist/browser/layout/index.js +3 -3
  53. package/dist/browser/layout/index.js.map +1 -1
  54. package/dist/ssr/actions/index.js +2 -2
  55. package/dist/ssr/actions/index.js.map +1 -1
  56. package/dist/ssr/chat/ChatComposer.js +1 -1
  57. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  58. package/dist/ssr/chat/ChatContextPopup.js.map +1 -1
  59. package/dist/ssr/chat/ChatPrimitives.js +2 -2
  60. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  61. package/dist/ssr/chat/ChatTasks.js +1 -1
  62. package/dist/ssr/chat/ChatTasks.js.map +1 -1
  63. package/dist/ssr/chat/ChatTimeline.js +1 -1
  64. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  65. package/dist/ssr/chat/composer-document.js.map +1 -1
  66. package/dist/ssr/chat/index.js.map +1 -1
  67. package/dist/ssr/content/Chart.js +3 -3
  68. package/dist/ssr/content/Chart.js.map +1 -1
  69. package/dist/ssr/content/ChartExplorer.js +4 -4
  70. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  71. package/dist/ssr/content/ChartExplorerControls.js +1 -1
  72. package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
  73. package/dist/ssr/content/ChartFilterControls.js +2 -2
  74. package/dist/ssr/content/ChartFilterControls.js.map +1 -1
  75. package/dist/ssr/content/ChartSnapshotView.js +2 -1
  76. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  77. package/dist/ssr/content/FileView.js +7 -3
  78. package/dist/ssr/content/FileView.js.map +1 -1
  79. package/dist/ssr/content/MarkdownView.js.map +1 -1
  80. package/dist/ssr/content/Pagination.js.map +1 -1
  81. package/dist/ssr/content/chart-explorer.js.map +1 -1
  82. package/dist/ssr/content/chart-inspection.js.map +1 -1
  83. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  84. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  85. package/dist/ssr/content/file-view-preview.js.map +1 -1
  86. package/dist/ssr/content/index.js +9 -9
  87. package/dist/ssr/content/index.js.map +1 -1
  88. package/dist/ssr/feedback/toast.js.map +1 -1
  89. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  90. package/dist/ssr/inputs/NumberInput.js +9 -1
  91. package/dist/ssr/inputs/NumberInput.js.map +1 -1
  92. package/dist/ssr/inputs/Select.js.map +1 -1
  93. package/dist/ssr/inputs/markdown/behaviors.js +1 -1
  94. package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
  95. package/dist/ssr/layout/AppWorkspace.js +74 -62
  96. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  97. package/dist/ssr/layout/DetailPanel.js +1 -1
  98. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  99. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  100. package/dist/ssr/layout/SidebarItemPreview.js +1 -1
  101. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
  102. package/dist/ssr/layout/app-workspace-controller.js +1 -1
  103. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  104. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  105. package/dist/ssr/layout/index.js +3 -3
  106. package/dist/ssr/layout/index.js.map +1 -1
  107. package/dist/styles.css +1 -1
  108. package/dist/types/actions/index.d.ts +4 -4
  109. package/dist/types/chat/ChatComposer.d.ts +1 -1
  110. package/dist/types/chat/index.d.ts +1 -1
  111. package/dist/types/content/Chart.d.ts +2 -2
  112. package/dist/types/content/ChartExplorer.d.ts +2 -2
  113. package/dist/types/content/ChartExplorerControls.d.ts +1 -1
  114. package/dist/types/content/ChartSnapshotView.d.ts +1 -1
  115. package/dist/types/content/chart-inspection.d.ts +1 -1
  116. package/dist/types/content/index.d.ts +15 -15
  117. package/dist/types/inputs/NumberInput.d.ts +2 -0
  118. package/dist/types/layout/AppWorkspace.d.ts +1 -1
  119. package/dist/types/layout/SidebarItemPreview.d.ts +1 -1
  120. package/dist/types/layout/index.d.ts +3 -3
  121. package/package.json +2 -4
@@ -1 +1 @@
1
- {"version":3,"names":["APP_WORKSPACE_SIDEBAR_DEFAULT","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD","APP_WORKSPACE_SIDEBAR_MIN","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_STATE_MAX","APP_WORKSPACE_DETAIL_DEFAULT","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DRAWER_DEFAULT","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_MAIN_MIN_HEIGHT","APP_WORKSPACE_PANE_DEFAULT","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_PANE_MAX","appWorkspaceResizeLimits","options","min","kind","sidebarCollapsible","configuredMax","max","mainMinimum","Math","workspaceSize","reservedSize","fitAppWorkspacePaneSizes","panes","availableSize","sizes","map","pane","minimumTotal","reduce","total","size","desiredTotal","desired","budget","floor","extraBudget","desiredExtra","fractions","index","raw","extra","fraction","remainder","sort","a","b","shouldCollapseAppWorkspaceSidebar","width","collapsible","resolveAppWorkspaceSidebarWidth","maxWidth","collapsed","round","finiteSize","value","Number","isFinite","undefined","safeAppWorkspacePanelId","panelId","isStableUiId","normalizeSizes","Array","isArray","entries","Object","slice","flatMap","key","normalized","length","fromEntries","appWorkspacePanelVariable","assertStableUiId","normalizeAppWorkspaceLayoutState","candidate","version","sidebarWidth","sidebarCollapsed","legacy","paneWidths","detailWidths","detailWidth","primary","drawerHeights","parseAppWorkspaceLayoutState","JSON","parse","decodeURIComponent","serializeAppWorkspaceLayoutState","state","encodeURIComponent","stringify","appWorkspaceLayoutStyle","declarations","id","height","filter","Boolean","join"],"sources":["layout/app-workspace-state.ts"],"sourcesContent":["export type AppWorkspaceLayoutState = {\n version: 2;\n sidebarWidth?: number;\n sidebarCollapsed?: boolean;\n paneWidths?: Record<string, number>;\n detailWidths?: Record<string, number>;\n drawerHeights?: Record<string, number>;\n};\n\nexport const APP_WORKSPACE_SIDEBAR_DEFAULT = 208;\nexport const APP_WORKSPACE_SIDEBAR_COLLAPSED = 64;\nexport const APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD = 128;\nexport const APP_WORKSPACE_SIDEBAR_MIN = 176;\nexport const APP_WORKSPACE_SIDEBAR_MAX = 360;\n/** Absolute persistence envelope for sidebars with an app-defined wider max. */\nconst APP_WORKSPACE_SIDEBAR_STATE_MAX = 960;\nexport const APP_WORKSPACE_DETAIL_DEFAULT = 384;\nexport const APP_WORKSPACE_DETAIL_MIN = 288;\nexport const APP_WORKSPACE_DETAIL_MAX = 640;\nexport const APP_WORKSPACE_DRAWER_DEFAULT = 240;\nexport const APP_WORKSPACE_DRAWER_MIN = 160;\nexport const APP_WORKSPACE_DRAWER_MAX = 560;\n/** Space `appWorkspaceResizeLimits` always reserves for the main region. */\nexport const APP_WORKSPACE_MAIN_MIN = 320;\nexport const APP_WORKSPACE_MAIN_MIN_HEIGHT = 240;\nexport const APP_WORKSPACE_PANE_DEFAULT = 320;\nexport const APP_WORKSPACE_PANE_MIN = 240;\nexport const APP_WORKSPACE_PANE_MAX = 640;\n\nexport type AppWorkspaceResizeKind = \"sidebar\" | \"pane\" | \"detail\" | \"drawer\";\n\nexport const appWorkspaceResizeLimits = (options: {\n kind: AppWorkspaceResizeKind;\n workspaceSize: number;\n reservedSize: number;\n min?: number;\n max?: number;\n sidebarCollapsible?: boolean;\n}): { min: number; max: number } => {\n const min =\n options.min ??\n (options.kind === \"sidebar\"\n ? options.sidebarCollapsible\n ? APP_WORKSPACE_SIDEBAR_COLLAPSED\n : APP_WORKSPACE_SIDEBAR_MIN\n : options.kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MIN\n : options.kind === \"pane\"\n ? APP_WORKSPACE_PANE_MIN\n : APP_WORKSPACE_DRAWER_MIN);\n const configuredMax =\n options.max ??\n (options.kind === \"sidebar\"\n ? APP_WORKSPACE_SIDEBAR_MAX\n : options.kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MAX\n : options.kind === \"pane\"\n ? APP_WORKSPACE_PANE_MAX\n : APP_WORKSPACE_DRAWER_MAX);\n const mainMinimum = options.kind === \"drawer\" ? APP_WORKSPACE_MAIN_MIN_HEIGHT : APP_WORKSPACE_MAIN_MIN;\n return { min, max: Math.max(min, Math.min(configuredMax, options.workspaceSize - options.reservedSize - mainMinimum)) };\n};\n\n/**\n * Fits preferred auxiliary pane widths into a shared budget without giving\n * DOM order priority. Minimums are reserved first; remaining space is shared\n * in proportion to how much each pane still needs to reach its preference.\n */\nexport const fitAppWorkspacePaneSizes = (panes: ReadonlyArray<{ desired: number; min: number }>, availableSize: number): number[] => {\n const sizes = panes.map((pane) => pane.min);\n const minimumTotal = sizes.reduce((total, size) => total + size, 0);\n const desiredTotal = panes.reduce((total, pane) => total + pane.desired, 0);\n const budget = Math.max(0, Math.floor(availableSize));\n if (desiredTotal <= budget) return panes.map((pane) => pane.desired);\n if (budget <= minimumTotal) return sizes;\n\n const extraBudget = budget - minimumTotal;\n const desiredExtra = desiredTotal - minimumTotal;\n const fractions = panes.map((pane, index) => {\n const raw = ((pane.desired - pane.min) * extraBudget) / desiredExtra;\n const extra = Math.floor(raw);\n sizes[index]! += extra;\n return { fraction: raw - extra, index };\n });\n let remainder = extraBudget - sizes.reduce((total, size, index) => total + size - panes[index]!.min, 0);\n fractions.sort((a, b) => b.fraction - a.fraction || a.index - b.index);\n for (const { index } of fractions) {\n if (remainder-- <= 0) break;\n sizes[index]! += 1;\n }\n return sizes;\n};\n\nexport const shouldCollapseAppWorkspaceSidebar = (width: number, collapsible: boolean): boolean =>\n collapsible && width < APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD;\n\nexport const resolveAppWorkspaceSidebarWidth = (\n width: number,\n maxWidth: number,\n collapsible: boolean,\n): { width: number; collapsed: boolean } =>\n shouldCollapseAppWorkspaceSidebar(width, collapsible)\n ? { width: APP_WORKSPACE_SIDEBAR_COLLAPSED, collapsed: true }\n : { width: Math.round(Math.min(maxWidth, Math.max(APP_WORKSPACE_SIDEBAR_MIN, width))), collapsed: false };\n\nconst finiteSize = (value: unknown, min: number, max: number) =>\n typeof value === \"number\" && Number.isFinite(value) ? Math.round(Math.min(max, Math.max(min, value))) : undefined;\n\nexport const safeAppWorkspacePanelId = (panelId: string): string => (isStableUiId(panelId) ? panelId : \"\");\n\nconst normalizeSizes = (value: unknown, min: number, max: number) => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const entries = Object.entries(value)\n .slice(0, 16)\n .flatMap(([key, size]) => {\n const normalized = finiteSize(size, min, max);\n return isStableUiId(key) && normalized !== undefined ? [[key, normalized] as const] : [];\n });\n return entries.length ? Object.fromEntries(entries) : undefined;\n};\n\nexport const appWorkspacePanelVariable = (kind: \"pane\" | \"detail\" | \"drawer\", panelId: string): string =>\n `--k2b-workspace-${kind}-${assertStableUiId(panelId, \"AppWorkspace panel id\")}-${kind === \"drawer\" ? \"height\" : \"width\"}`;\n\nexport const normalizeAppWorkspaceLayoutState = (value: unknown): AppWorkspaceLayoutState | null => {\n if (!value || typeof value !== \"object\") return null;\n const candidate = value as Record<string, unknown>;\n if (candidate.version !== 1 && candidate.version !== 2) return null;\n const sidebarWidth = finiteSize(candidate.sidebarWidth, APP_WORKSPACE_SIDEBAR_MIN, APP_WORKSPACE_SIDEBAR_STATE_MAX);\n const sidebarCollapsed = typeof candidate.sidebarCollapsed === \"boolean\" ? candidate.sidebarCollapsed : undefined;\n // Keyed panel maps only exist from version 2 on; a version-1 payload that\n // carries them was not written by this component and is not trusted.\n const legacy = candidate.version === 1;\n const paneWidths = legacy ? undefined : normalizeSizes(candidate.paneWidths, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_PANE_MAX);\n const detailWidths = legacy\n ? (() => {\n const width = finiteSize(candidate.detailWidth, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DETAIL_MAX);\n return width === undefined ? undefined : { primary: width };\n })()\n : normalizeSizes(candidate.detailWidths, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DETAIL_MAX);\n const drawerHeights = legacy ? undefined : normalizeSizes(candidate.drawerHeights, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_DRAWER_MAX);\n return sidebarWidth === undefined && sidebarCollapsed === undefined && !paneWidths && !detailWidths && !drawerHeights\n ? null\n : { version: 2, sidebarWidth, sidebarCollapsed, paneWidths, detailWidths, drawerHeights };\n};\n\nexport const parseAppWorkspaceLayoutState = (value: string | null | undefined): AppWorkspaceLayoutState | null => {\n if (!value) return null;\n try {\n return normalizeAppWorkspaceLayoutState(JSON.parse(decodeURIComponent(value)));\n } catch {\n return null;\n }\n};\n\nexport const serializeAppWorkspaceLayoutState = (state: AppWorkspaceLayoutState): string =>\n encodeURIComponent(JSON.stringify(normalizeAppWorkspaceLayoutState(state) ?? { version: 2 }));\n\nexport const appWorkspaceLayoutStyle = (state: AppWorkspaceLayoutState | null | undefined): string | undefined => {\n if (!state) return undefined;\n const declarations = [\n state.sidebarCollapsed\n ? `--k2b-workspace-sidebar-width:${APP_WORKSPACE_SIDEBAR_COLLAPSED}px`\n : state.sidebarWidth === undefined\n ? null\n : `--k2b-workspace-sidebar-width:${state.sidebarWidth}px`,\n ...Object.entries(state.paneWidths ?? {}).map(([id, width]) => `${appWorkspacePanelVariable(\"pane\", id)}:${width}px`),\n ...Object.entries(state.detailWidths ?? {}).map(([id, width]) => `${appWorkspacePanelVariable(\"detail\", id)}:${width}px`),\n ...Object.entries(state.drawerHeights ?? {}).map(([id, height]) => `${appWorkspacePanelVariable(\"drawer\", id)}:${height}px`),\n ].filter(Boolean);\n return declarations.length ? declarations.join(\";\") : undefined;\n};\nimport { assertStableUiId, isStableUiId } from \"./stable-id\";\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["APP_WORKSPACE_SIDEBAR_DEFAULT","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD","APP_WORKSPACE_SIDEBAR_MIN","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_STATE_MAX","APP_WORKSPACE_DETAIL_DEFAULT","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DRAWER_DEFAULT","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_MAIN_MIN_HEIGHT","APP_WORKSPACE_PANE_DEFAULT","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_PANE_MAX","appWorkspaceResizeLimits","options","min","kind","sidebarCollapsible","configuredMax","max","mainMinimum","Math","workspaceSize","reservedSize","fitAppWorkspacePaneSizes","panes","availableSize","sizes","map","pane","minimumTotal","reduce","total","size","desiredTotal","desired","budget","floor","extraBudget","desiredExtra","fractions","index","raw","extra","fraction","remainder","sort","a","b","shouldCollapseAppWorkspaceSidebar","width","collapsible","resolveAppWorkspaceSidebarWidth","maxWidth","collapsed","round","finiteSize","value","Number","isFinite","undefined","safeAppWorkspacePanelId","panelId","isStableUiId","normalizeSizes","Array","isArray","entries","Object","slice","flatMap","key","normalized","length","fromEntries","appWorkspacePanelVariable","assertStableUiId","normalizeAppWorkspaceLayoutState","candidate","version","sidebarWidth","sidebarCollapsed","legacy","paneWidths","detailWidths","detailWidth","primary","drawerHeights","parseAppWorkspaceLayoutState","JSON","parse","decodeURIComponent","serializeAppWorkspaceLayoutState","state","encodeURIComponent","stringify","appWorkspaceLayoutStyle","declarations","id","height","filter","Boolean","join"],"sources":["layout/app-workspace-state.ts"],"sourcesContent":["export type AppWorkspaceLayoutState = {\n version: 2;\n sidebarWidth?: number;\n sidebarCollapsed?: boolean;\n paneWidths?: Record<string, number>;\n detailWidths?: Record<string, number>;\n drawerHeights?: Record<string, number>;\n};\n\nexport const APP_WORKSPACE_SIDEBAR_DEFAULT = 208;\nexport const APP_WORKSPACE_SIDEBAR_COLLAPSED = 64;\nexport const APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD = 128;\nexport const APP_WORKSPACE_SIDEBAR_MIN = 176;\nexport const APP_WORKSPACE_SIDEBAR_MAX = 360;\n/** Absolute persistence envelope for sidebars with an app-defined wider max. */\nconst APP_WORKSPACE_SIDEBAR_STATE_MAX = 960;\nexport const APP_WORKSPACE_DETAIL_DEFAULT = 384;\nexport const APP_WORKSPACE_DETAIL_MIN = 288;\nexport const APP_WORKSPACE_DETAIL_MAX = 640;\nexport const APP_WORKSPACE_DRAWER_DEFAULT = 240;\nexport const APP_WORKSPACE_DRAWER_MIN = 160;\nexport const APP_WORKSPACE_DRAWER_MAX = 560;\n/** Space `appWorkspaceResizeLimits` always reserves for the main region. */\nexport const APP_WORKSPACE_MAIN_MIN = 320;\nexport const APP_WORKSPACE_MAIN_MIN_HEIGHT = 240;\nexport const APP_WORKSPACE_PANE_DEFAULT = 320;\nexport const APP_WORKSPACE_PANE_MIN = 240;\nexport const APP_WORKSPACE_PANE_MAX = 640;\n\nexport type AppWorkspaceResizeKind = \"sidebar\" | \"pane\" | \"detail\" | \"drawer\";\n\nexport const appWorkspaceResizeLimits = (options: {\n kind: AppWorkspaceResizeKind;\n workspaceSize: number;\n reservedSize: number;\n min?: number;\n max?: number;\n sidebarCollapsible?: boolean;\n}): { min: number; max: number } => {\n const min =\n options.min ??\n (options.kind === \"sidebar\"\n ? options.sidebarCollapsible\n ? APP_WORKSPACE_SIDEBAR_COLLAPSED\n : APP_WORKSPACE_SIDEBAR_MIN\n : options.kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MIN\n : options.kind === \"pane\"\n ? APP_WORKSPACE_PANE_MIN\n : APP_WORKSPACE_DRAWER_MIN);\n const configuredMax =\n options.max ??\n (options.kind === \"sidebar\"\n ? APP_WORKSPACE_SIDEBAR_MAX\n : options.kind === \"detail\"\n ? APP_WORKSPACE_DETAIL_MAX\n : options.kind === \"pane\"\n ? APP_WORKSPACE_PANE_MAX\n : APP_WORKSPACE_DRAWER_MAX);\n const mainMinimum = options.kind === \"drawer\" ? APP_WORKSPACE_MAIN_MIN_HEIGHT : APP_WORKSPACE_MAIN_MIN;\n return { min, max: Math.max(min, Math.min(configuredMax, options.workspaceSize - options.reservedSize - mainMinimum)) };\n};\n\n/**\n * Fits preferred auxiliary pane widths into a shared budget without giving\n * DOM order priority. Minimums are reserved first; remaining space is shared\n * in proportion to how much each pane still needs to reach its preference.\n */\nexport const fitAppWorkspacePaneSizes = (panes: ReadonlyArray<{ desired: number; min: number }>, availableSize: number): number[] => {\n const sizes = panes.map((pane) => pane.min);\n const minimumTotal = sizes.reduce((total, size) => total + size, 0);\n const desiredTotal = panes.reduce((total, pane) => total + pane.desired, 0);\n const budget = Math.max(0, Math.floor(availableSize));\n if (desiredTotal <= budget) return panes.map((pane) => pane.desired);\n if (budget <= minimumTotal) return sizes;\n\n const extraBudget = budget - minimumTotal;\n const desiredExtra = desiredTotal - minimumTotal;\n const fractions = panes.map((pane, index) => {\n const raw = ((pane.desired - pane.min) * extraBudget) / desiredExtra;\n const extra = Math.floor(raw);\n sizes[index]! += extra;\n return { fraction: raw - extra, index };\n });\n let remainder = extraBudget - sizes.reduce((total, size, index) => total + size - panes[index]!.min, 0);\n fractions.sort((a, b) => b.fraction - a.fraction || a.index - b.index);\n for (const { index } of fractions) {\n if (remainder-- <= 0) break;\n sizes[index]! += 1;\n }\n return sizes;\n};\n\nexport const shouldCollapseAppWorkspaceSidebar = (width: number, collapsible: boolean): boolean =>\n collapsible && width < APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD;\n\nexport const resolveAppWorkspaceSidebarWidth = (\n width: number,\n maxWidth: number,\n collapsible: boolean,\n): { width: number; collapsed: boolean } =>\n shouldCollapseAppWorkspaceSidebar(width, collapsible)\n ? { width: APP_WORKSPACE_SIDEBAR_COLLAPSED, collapsed: true }\n : { width: Math.round(Math.min(maxWidth, Math.max(APP_WORKSPACE_SIDEBAR_MIN, width))), collapsed: false };\n\nconst finiteSize = (value: unknown, min: number, max: number) =>\n typeof value === \"number\" && Number.isFinite(value) ? Math.round(Math.min(max, Math.max(min, value))) : undefined;\n\nexport const safeAppWorkspacePanelId = (panelId: string): string => (isStableUiId(panelId) ? panelId : \"\");\n\nconst normalizeSizes = (value: unknown, min: number, max: number) => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const entries = Object.entries(value)\n .slice(0, 16)\n .flatMap(([key, size]) => {\n const normalized = finiteSize(size, min, max);\n return isStableUiId(key) && normalized !== undefined ? [[key, normalized] as const] : [];\n });\n return entries.length ? Object.fromEntries(entries) : undefined;\n};\n\nexport const appWorkspacePanelVariable = (kind: \"pane\" | \"detail\" | \"drawer\", panelId: string): string =>\n `--k2b-workspace-${kind}-${assertStableUiId(panelId, \"AppWorkspace panel id\")}-${kind === \"drawer\" ? \"height\" : \"width\"}`;\n\nexport const normalizeAppWorkspaceLayoutState = (value: unknown): AppWorkspaceLayoutState | null => {\n if (!value || typeof value !== \"object\") return null;\n const candidate = value as Record<string, unknown>;\n if (candidate.version !== 1 && candidate.version !== 2) return null;\n const sidebarWidth = finiteSize(candidate.sidebarWidth, APP_WORKSPACE_SIDEBAR_MIN, APP_WORKSPACE_SIDEBAR_STATE_MAX);\n const sidebarCollapsed = typeof candidate.sidebarCollapsed === \"boolean\" ? candidate.sidebarCollapsed : undefined;\n // Keyed panel maps only exist from version 2 on; a version-1 payload that\n // carries them was not written by this component and is not trusted.\n const legacy = candidate.version === 1;\n const paneWidths = legacy ? undefined : normalizeSizes(candidate.paneWidths, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_PANE_MAX);\n const detailWidths = legacy\n ? (() => {\n const width = finiteSize(candidate.detailWidth, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DETAIL_MAX);\n return width === undefined ? undefined : { primary: width };\n })()\n : normalizeSizes(candidate.detailWidths, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DETAIL_MAX);\n const drawerHeights = legacy ? undefined : normalizeSizes(candidate.drawerHeights, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_DRAWER_MAX);\n return sidebarWidth === undefined && sidebarCollapsed === undefined && !paneWidths && !detailWidths && !drawerHeights\n ? null\n : { version: 2, sidebarWidth, sidebarCollapsed, paneWidths, detailWidths, drawerHeights };\n};\n\nexport const parseAppWorkspaceLayoutState = (value: string | null | undefined): AppWorkspaceLayoutState | null => {\n if (!value) return null;\n try {\n return normalizeAppWorkspaceLayoutState(JSON.parse(decodeURIComponent(value)));\n } catch {\n return null;\n }\n};\n\nexport const serializeAppWorkspaceLayoutState = (state: AppWorkspaceLayoutState): string =>\n encodeURIComponent(JSON.stringify(normalizeAppWorkspaceLayoutState(state) ?? { version: 2 }));\n\nexport const appWorkspaceLayoutStyle = (state: AppWorkspaceLayoutState | null | undefined): string | undefined => {\n if (!state) return undefined;\n const declarations = [\n state.sidebarCollapsed\n ? `--k2b-workspace-sidebar-width:${APP_WORKSPACE_SIDEBAR_COLLAPSED}px`\n : state.sidebarWidth === undefined\n ? null\n : `--k2b-workspace-sidebar-width:${state.sidebarWidth}px`,\n ...Object.entries(state.paneWidths ?? {}).map(([id, width]) => `${appWorkspacePanelVariable(\"pane\", id)}:${width}px`),\n ...Object.entries(state.detailWidths ?? {}).map(([id, width]) => `${appWorkspacePanelVariable(\"detail\", id)}:${width}px`),\n ...Object.entries(state.drawerHeights ?? {}).map(([id, height]) => `${appWorkspacePanelVariable(\"drawer\", id)}:${height}px`),\n ].filter(Boolean);\n return declarations.length ? declarations.join(\";\") : undefined;\n};\n\nimport { assertStableUiId, isStableUiId } from \"./stable-id\";\n"],"mappings":"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","ignoreList":[]}
@@ -2,10 +2,13 @@ export { default as AppOverview } from "./AppOverview";
2
2
  export { default as AppWorkspace } from "./AppWorkspace";
3
3
  export { installAppWorkspaceController } from "./app-workspace-controller";
4
4
  export { APP_WORKSPACE_DETAIL_DEFAULT, APP_WORKSPACE_DETAIL_MAX, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DRAWER_DEFAULT, APP_WORKSPACE_DRAWER_MAX, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_MAIN_MIN, APP_WORKSPACE_MAIN_MIN_HEIGHT, APP_WORKSPACE_PANE_DEFAULT, APP_WORKSPACE_PANE_MAX, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD, APP_WORKSPACE_SIDEBAR_COLLAPSED, APP_WORKSPACE_SIDEBAR_DEFAULT, APP_WORKSPACE_SIDEBAR_MAX, APP_WORKSPACE_SIDEBAR_MIN, appWorkspaceLayoutStyle, appWorkspacePanelVariable, appWorkspaceResizeLimits, normalizeAppWorkspaceLayoutState, parseAppWorkspaceLayoutState, resolveAppWorkspaceSidebarWidth, safeAppWorkspacePanelId, serializeAppWorkspaceLayoutState, shouldCollapseAppWorkspaceSidebar } from "./app-workspace-state";
5
+ export { bottomSheetOptions, default as BottomSheet } from "./BottomSheet";
5
6
  export { DataPanel } from "./DataPanel";
6
7
  export { default as DetailPanel } from "./DetailPanel";
7
8
  export { default as Discussion } from "./Discussion";
8
9
  export { default as FloatingWindow, fitFloatingWindowRect, openFloatingWindow } from "./FloatingWindow";
10
+ export { default as Navigation } from "./Navigation";
11
+ export { createNavigation, findNavigationItem } from "./navigation-model";
9
12
  export { confirmDiscardIfDirty, default as PanelDialog, panelDialogFixedOptions, panelDialogFixedPanelClass, panelDialogOptions, panelDialogPanelClass, panelDialogWideOptions, panelDialogWidePanelClass, panelDialogWorkspaceOptions, panelDialogWorkspacePanelClass } from "./PanelDialog";
10
13
  export { PanelHeader } from "./PanelHeader";
11
14
  export { default as Panes } from "./Panes";
@@ -14,7 +17,4 @@ export { default as ScrollArea } from "./ScrollArea";
14
17
  export { readSettingsError, SettingsField, SettingsGroup, SettingsPage, SettingsPanelFooter, SettingsSaveBar, SettingsSection, sameSettingValue } from "./Settings";
15
18
  export { default as SettingsCollection } from "./SettingsCollection";
16
19
  export { default as SettingsModal } from "./SettingsModal";
17
- export { default as BottomSheet, bottomSheetOptions } from "./BottomSheet";
18
- export { default as Navigation } from "./Navigation";
19
- export { createNavigation, findNavigationItem } from "./navigation-model";
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","AppOverview","AppWorkspace","installAppWorkspaceController","APP_WORKSPACE_DETAIL_DEFAULT","APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DRAWER_DEFAULT","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_MAIN_MIN_HEIGHT","APP_WORKSPACE_PANE_DEFAULT","APP_WORKSPACE_PANE_MAX","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_DEFAULT","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_MIN","appWorkspaceLayoutStyle","appWorkspacePanelVariable","appWorkspaceResizeLimits","normalizeAppWorkspaceLayoutState","parseAppWorkspaceLayoutState","resolveAppWorkspaceSidebarWidth","safeAppWorkspacePanelId","serializeAppWorkspaceLayoutState","shouldCollapseAppWorkspaceSidebar","DataPanel","DetailPanel","Discussion","FloatingWindow","fitFloatingWindowRect","openFloatingWindow","confirmDiscardIfDirty","PanelDialog","panelDialogFixedOptions","panelDialogFixedPanelClass","panelDialogOptions","panelDialogPanelClass","panelDialogWideOptions","panelDialogWidePanelClass","panelDialogWorkspaceOptions","panelDialogWorkspacePanelClass","PanelHeader","Panes","activatePanesItem","addPanesItem","applyPanesIntent","createPanesLayout","isPanesItemVisible","PANES_LAYOUT_VERSION","parsePanesLayout","reconcilePanesLayout","removePanesItem","resizePanesSplit","ScrollArea","readSettingsError","SettingsField","SettingsGroup","SettingsPage","SettingsPanelFooter","SettingsSaveBar","SettingsSection","sameSettingValue","SettingsCollection","SettingsModal","BottomSheet","bottomSheetOptions","Navigation","createNavigation","findNavigationItem"],"sources":["layout/index.ts"],"sourcesContent":["export type {\n AppOverviewEmptyStateProps,\n AppOverviewPanelProps,\n AppOverviewProps,\n} from \"./AppOverview\";\nexport { default as AppOverview } from \"./AppOverview\";\nexport type {\n AppWorkspaceBottomDrawerHeight,\n AppWorkspaceBottomDrawerProps,\n AppWorkspaceContentProps,\n AppWorkspaceDetailProps,\n AppWorkspaceDetailWidth,\n AppWorkspaceMainPaneProps,\n AppWorkspaceMainProps,\n AppWorkspaceNavTreeItemProps,\n AppWorkspaceNavTreeProps,\n AppWorkspaceProps,\n AppWorkspaceSidebarAccessoryVisibility,\n AppWorkspaceSidebarBodyProps,\n AppWorkspaceSidebarIconActionProps,\n AppWorkspaceSidebarIconActionTone,\n AppWorkspaceSidebarIconGridProps,\n AppWorkspaceSidebarItemActionProps,\n AppWorkspaceSidebarItemActionsProps,\n AppWorkspaceSidebarItemIconProps,\n AppWorkspaceSidebarItemLabelProps,\n AppWorkspaceSidebarItemMetaProps,\n AppWorkspaceSidebarItemProps,\n AppWorkspaceSidebarItemTone,\n AppWorkspaceSidebarProps,\n AppWorkspaceSidebarSectionProps,\n AppWorkspaceSidebarVisibility,\n} from \"./AppWorkspace\";\nexport { default as AppWorkspace } from \"./AppWorkspace\";\nexport type { AppWorkspaceControllerOptions } from \"./app-workspace-controller\";\nexport { installAppWorkspaceController } from \"./app-workspace-controller\";\nexport type {\n AppWorkspaceLayoutState,\n AppWorkspaceResizeKind,\n} from \"./app-workspace-state\";\nexport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_MAIN_MIN_HEIGHT,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n normalizeAppWorkspaceLayoutState,\n parseAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n serializeAppWorkspaceLayoutState,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\nexport type { DataPanelProps } from \"./DataPanel\";\nexport { DataPanel } from \"./DataPanel\";\nexport type {\n DetailPanelActionButtonProps,\n DetailPanelActionLinkProps,\n DetailPanelActionProps,\n DetailPanelBodyProps,\n DetailPanelGroupProps,\n DetailPanelHeaderProps,\n DetailPanelProps,\n DetailPanelSectionProps,\n DetailPanelSummaryProps,\n DetailPanelTone,\n} from \"./DetailPanel\";\nexport { default as DetailPanel } from \"./DetailPanel\";\nexport type { DiscussionComposerProps, DiscussionItemProps, DiscussionListProps, DiscussionProps } from \"./Discussion\";\nexport { default as Discussion } from \"./Discussion\";\nexport type {\n FloatingWindowClose,\n FloatingWindowProps,\n OpenFloatingWindowOptions,\n} from \"./FloatingWindow\";\nexport {\n default as FloatingWindow,\n type FloatingWindowRect,\n fitFloatingWindowRect,\n openFloatingWindow,\n} from \"./FloatingWindow\";\nexport type {\n PanelDialogBodyProps,\n PanelDialogFooterProps,\n PanelDialogHeaderProps,\n PanelDialogProps,\n PanelDialogSectionProps,\n PanelDialogSurface,\n PanelDialogTabOption,\n PanelDialogTabsProps,\n} from \"./PanelDialog\";\nexport {\n confirmDiscardIfDirty,\n default as PanelDialog,\n panelDialogFixedOptions,\n panelDialogFixedPanelClass,\n panelDialogOptions,\n panelDialogPanelClass,\n panelDialogWideOptions,\n panelDialogWidePanelClass,\n panelDialogWorkspaceOptions,\n panelDialogWorkspacePanelClass,\n} from \"./PanelDialog\";\nexport type { PanelHeaderProps } from \"./PanelHeader\";\nexport { PanelHeader } from \"./PanelHeader\";\nexport type { PanesItem, PanesProps } from \"./Panes\";\nexport { default as Panes } from \"./Panes\";\nexport type {\n AddPanesItemOptions,\n PanesDirection,\n PanesGroup,\n PanesIntent,\n PanesLayout,\n PanesNode,\n PanesPath,\n PanesPathSegment,\n PanesSide,\n PanesSplit,\n} from \"./panes-layout\";\nexport {\n activatePanesItem,\n addPanesItem,\n applyPanesIntent,\n createPanesLayout,\n isPanesItemVisible,\n PANES_LAYOUT_VERSION,\n parsePanesLayout,\n reconcilePanesLayout,\n removePanesItem,\n resizePanesSplit,\n} from \"./panes-layout\";\nexport type { ScrollAreaProps } from \"./ScrollArea\";\nexport { default as ScrollArea } from \"./ScrollArea\";\nexport type {\n SettingsFieldControlProps,\n SettingsFieldProps,\n SettingsGroupActionProps,\n SettingsGroupProps,\n SettingsPageProps,\n SettingsPanelFooterProps,\n SettingsSaveBarProps,\n SettingsSectionProps,\n} from \"./Settings\";\nexport {\n readSettingsError,\n SettingsField,\n SettingsGroup,\n SettingsPage,\n SettingsPanelFooter,\n SettingsSaveBar,\n SettingsSection,\n sameSettingValue,\n} from \"./Settings\";\nexport type {\n SettingsCollectionActionProps,\n SettingsCollectionItemActionsProps,\n SettingsCollectionItemProps,\n SettingsCollectionItemReorderProps,\n SettingsCollectionItemStatusProps,\n SettingsCollectionProps,\n} from \"./SettingsCollection\";\nexport { default as SettingsCollection } from \"./SettingsCollection\";\nexport type {\n SettingsModalFooterProps,\n SettingsModalGroupProps,\n SettingsModalProps,\n SettingsModalTabProps,\n SettingsModalTabTone,\n} from \"./SettingsModal\";\nexport { default as SettingsModal } from \"./SettingsModal\";\nexport { default as BottomSheet, bottomSheetOptions, type BottomSheetProps } from \"./BottomSheet\";\nexport { default as Navigation, type NavigationProps } from \"./Navigation\";\nexport { createNavigation, findNavigationItem, type NavigationController, type NavigationItem, type NavigationOptions } from \"./navigation-model\";\n"],"mappings":"AAKA,SAASA,OAAO,IAAIC,WAAW,QAAQ,eAAe;AA4BtD,SAASD,OAAO,IAAIE,YAAY,QAAQ,gBAAgB;AAExD,SAASC,6BAA6B,QAAQ,4BAA4B;AAK1E,SACEC,4BAA4B,EAC5BC,wBAAwB,EACxBC,wBAAwB,EACxBC,4BAA4B,EAC5BC,wBAAwB,EACxBC,wBAAwB,EACxBC,sBAAsB,EACtBC,6BAA6B,EAC7BC,0BAA0B,EAC1BC,sBAAsB,EACtBC,sBAAsB,EACtBC,wCAAwC,EACxCC,+BAA+B,EAC/BC,6BAA6B,EAC7BC,yBAAyB,EACzBC,yBAAyB,EACzBC,uBAAuB,EACvBC,yBAAyB,EACzBC,wBAAwB,EACxBC,gCAAgC,EAChCC,4BAA4B,EAC5BC,+BAA+B,EAC/BC,uBAAuB,EACvBC,gCAAgC,EAChCC,iCAAiC,QAC5B,uBAAuB;AAE9B,SAASC,SAAS,QAAQ,aAAa;AAavC,SAAS7B,OAAO,IAAI8B,WAAW,QAAQ,eAAe;AAEtD,SAAS9B,OAAO,IAAI+B,UAAU,QAAQ,cAAc;AAMpD,SACE/B,OAAO,IAAIgC,cAAc,EAEzBC,qBAAqB,EACrBC,kBAAkB,QACb,kBAAkB;AAWzB,SACEC,qBAAqB,EACrBnC,OAAO,IAAIoC,WAAW,EACtBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,kBAAkB,EAClBC,qBAAqB,EACrBC,sBAAsB,EACtBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,8BAA8B,QACzB,eAAe;AAEtB,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAAS7C,OAAO,IAAI8C,KAAK,QAAQ,SAAS;AAa1C,SACEC,iBAAiB,EACjBC,YAAY,EACZC,gBAAgB,EAChBC,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBC,gBAAgB,EAChBC,oBAAoB,EACpBC,eAAe,EACfC,gBAAgB,QACX,gBAAgB;AAEvB,SAASxD,OAAO,IAAIyD,UAAU,QAAQ,cAAc;AAWpD,SACEC,iBAAiB,EACjBC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,mBAAmB,EACnBC,eAAe,EACfC,eAAe,EACfC,gBAAgB,QACX,YAAY;AASnB,SAASjE,OAAO,IAAIkE,kBAAkB,QAAQ,sBAAsB;AAQpE,SAASlE,OAAO,IAAImE,aAAa,QAAQ,iBAAiB;AAC1D,SAASnE,OAAO,IAAIoE,WAAW,EAAEC,kBAAkB,QAA+B,eAAe;AACjG,SAASrE,OAAO,IAAIsE,UAAU,QAA8B,cAAc;AAC1E,SAASC,gBAAgB,EAAEC,kBAAkB,QAAgF,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["default","AppOverview","AppWorkspace","installAppWorkspaceController","APP_WORKSPACE_DETAIL_DEFAULT","APP_WORKSPACE_DETAIL_MAX","APP_WORKSPACE_DETAIL_MIN","APP_WORKSPACE_DRAWER_DEFAULT","APP_WORKSPACE_DRAWER_MAX","APP_WORKSPACE_DRAWER_MIN","APP_WORKSPACE_MAIN_MIN","APP_WORKSPACE_MAIN_MIN_HEIGHT","APP_WORKSPACE_PANE_DEFAULT","APP_WORKSPACE_PANE_MAX","APP_WORKSPACE_PANE_MIN","APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD","APP_WORKSPACE_SIDEBAR_COLLAPSED","APP_WORKSPACE_SIDEBAR_DEFAULT","APP_WORKSPACE_SIDEBAR_MAX","APP_WORKSPACE_SIDEBAR_MIN","appWorkspaceLayoutStyle","appWorkspacePanelVariable","appWorkspaceResizeLimits","normalizeAppWorkspaceLayoutState","parseAppWorkspaceLayoutState","resolveAppWorkspaceSidebarWidth","safeAppWorkspacePanelId","serializeAppWorkspaceLayoutState","shouldCollapseAppWorkspaceSidebar","bottomSheetOptions","BottomSheet","DataPanel","DetailPanel","Discussion","FloatingWindow","fitFloatingWindowRect","openFloatingWindow","Navigation","createNavigation","findNavigationItem","confirmDiscardIfDirty","PanelDialog","panelDialogFixedOptions","panelDialogFixedPanelClass","panelDialogOptions","panelDialogPanelClass","panelDialogWideOptions","panelDialogWidePanelClass","panelDialogWorkspaceOptions","panelDialogWorkspacePanelClass","PanelHeader","Panes","activatePanesItem","addPanesItem","applyPanesIntent","createPanesLayout","isPanesItemVisible","PANES_LAYOUT_VERSION","parsePanesLayout","reconcilePanesLayout","removePanesItem","resizePanesSplit","ScrollArea","readSettingsError","SettingsField","SettingsGroup","SettingsPage","SettingsPanelFooter","SettingsSaveBar","SettingsSection","sameSettingValue","SettingsCollection","SettingsModal"],"sources":["layout/index.ts"],"sourcesContent":["export type {\n AppOverviewEmptyStateProps,\n AppOverviewPanelProps,\n AppOverviewProps,\n} from \"./AppOverview\";\nexport { default as AppOverview } from \"./AppOverview\";\nexport type {\n AppWorkspaceBottomDrawerHeight,\n AppWorkspaceBottomDrawerProps,\n AppWorkspaceContentProps,\n AppWorkspaceDetailProps,\n AppWorkspaceDetailWidth,\n AppWorkspaceMainPaneProps,\n AppWorkspaceMainProps,\n AppWorkspaceNavTreeItemProps,\n AppWorkspaceNavTreeProps,\n AppWorkspaceProps,\n AppWorkspaceSidebarAccessoryVisibility,\n AppWorkspaceSidebarBodyProps,\n AppWorkspaceSidebarIconActionProps,\n AppWorkspaceSidebarIconActionTone,\n AppWorkspaceSidebarIconGridProps,\n AppWorkspaceSidebarItemActionProps,\n AppWorkspaceSidebarItemActionsProps,\n AppWorkspaceSidebarItemIconProps,\n AppWorkspaceSidebarItemLabelProps,\n AppWorkspaceSidebarItemMetaProps,\n AppWorkspaceSidebarItemProps,\n AppWorkspaceSidebarItemTone,\n AppWorkspaceSidebarProps,\n AppWorkspaceSidebarSectionProps,\n AppWorkspaceSidebarVisibility,\n} from \"./AppWorkspace\";\nexport { default as AppWorkspace } from \"./AppWorkspace\";\nexport type { AppWorkspaceControllerOptions } from \"./app-workspace-controller\";\nexport { installAppWorkspaceController } from \"./app-workspace-controller\";\nexport type {\n AppWorkspaceLayoutState,\n AppWorkspaceResizeKind,\n} from \"./app-workspace-state\";\nexport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_MAIN_MIN_HEIGHT,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n normalizeAppWorkspaceLayoutState,\n parseAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n serializeAppWorkspaceLayoutState,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\nexport { type BottomSheetProps, bottomSheetOptions, default as BottomSheet } from \"./BottomSheet\";\nexport type { DataPanelProps } from \"./DataPanel\";\nexport { DataPanel } from \"./DataPanel\";\nexport type {\n DetailPanelActionButtonProps,\n DetailPanelActionLinkProps,\n DetailPanelActionProps,\n DetailPanelBodyProps,\n DetailPanelGroupProps,\n DetailPanelHeaderProps,\n DetailPanelProps,\n DetailPanelSectionProps,\n DetailPanelSummaryProps,\n DetailPanelTone,\n} from \"./DetailPanel\";\nexport { default as DetailPanel } from \"./DetailPanel\";\nexport type { DiscussionComposerProps, DiscussionItemProps, DiscussionListProps, DiscussionProps } from \"./Discussion\";\nexport { default as Discussion } from \"./Discussion\";\nexport type {\n FloatingWindowClose,\n FloatingWindowProps,\n OpenFloatingWindowOptions,\n} from \"./FloatingWindow\";\nexport {\n default as FloatingWindow,\n type FloatingWindowRect,\n fitFloatingWindowRect,\n openFloatingWindow,\n} from \"./FloatingWindow\";\nexport { default as Navigation, type NavigationProps } from \"./Navigation\";\nexport {\n createNavigation,\n findNavigationItem,\n type NavigationController,\n type NavigationItem,\n type NavigationOptions,\n} from \"./navigation-model\";\nexport type {\n PanelDialogBodyProps,\n PanelDialogFooterProps,\n PanelDialogHeaderProps,\n PanelDialogProps,\n PanelDialogSectionProps,\n PanelDialogSurface,\n PanelDialogTabOption,\n PanelDialogTabsProps,\n} from \"./PanelDialog\";\nexport {\n confirmDiscardIfDirty,\n default as PanelDialog,\n panelDialogFixedOptions,\n panelDialogFixedPanelClass,\n panelDialogOptions,\n panelDialogPanelClass,\n panelDialogWideOptions,\n panelDialogWidePanelClass,\n panelDialogWorkspaceOptions,\n panelDialogWorkspacePanelClass,\n} from \"./PanelDialog\";\nexport type { PanelHeaderProps } from \"./PanelHeader\";\nexport { PanelHeader } from \"./PanelHeader\";\nexport type { PanesItem, PanesProps } from \"./Panes\";\nexport { default as Panes } from \"./Panes\";\nexport type {\n AddPanesItemOptions,\n PanesDirection,\n PanesGroup,\n PanesIntent,\n PanesLayout,\n PanesNode,\n PanesPath,\n PanesPathSegment,\n PanesSide,\n PanesSplit,\n} from \"./panes-layout\";\nexport {\n activatePanesItem,\n addPanesItem,\n applyPanesIntent,\n createPanesLayout,\n isPanesItemVisible,\n PANES_LAYOUT_VERSION,\n parsePanesLayout,\n reconcilePanesLayout,\n removePanesItem,\n resizePanesSplit,\n} from \"./panes-layout\";\nexport type { ScrollAreaProps } from \"./ScrollArea\";\nexport { default as ScrollArea } from \"./ScrollArea\";\nexport type {\n SettingsFieldControlProps,\n SettingsFieldProps,\n SettingsGroupActionProps,\n SettingsGroupProps,\n SettingsPageProps,\n SettingsPanelFooterProps,\n SettingsSaveBarProps,\n SettingsSectionProps,\n} from \"./Settings\";\nexport {\n readSettingsError,\n SettingsField,\n SettingsGroup,\n SettingsPage,\n SettingsPanelFooter,\n SettingsSaveBar,\n SettingsSection,\n sameSettingValue,\n} from \"./Settings\";\nexport type {\n SettingsCollectionActionProps,\n SettingsCollectionItemActionsProps,\n SettingsCollectionItemProps,\n SettingsCollectionItemReorderProps,\n SettingsCollectionItemStatusProps,\n SettingsCollectionProps,\n} from \"./SettingsCollection\";\nexport { default as SettingsCollection } from \"./SettingsCollection\";\nexport type {\n SettingsModalFooterProps,\n SettingsModalGroupProps,\n SettingsModalProps,\n SettingsModalTabProps,\n SettingsModalTabTone,\n} from \"./SettingsModal\";\nexport { default as SettingsModal } from \"./SettingsModal\";\n"],"mappings":"AAKA,SAASA,OAAO,IAAIC,WAAW,QAAQ,eAAe;AA4BtD,SAASD,OAAO,IAAIE,YAAY,QAAQ,gBAAgB;AAExD,SAASC,6BAA6B,QAAQ,4BAA4B;AAK1E,SACEC,4BAA4B,EAC5BC,wBAAwB,EACxBC,wBAAwB,EACxBC,4BAA4B,EAC5BC,wBAAwB,EACxBC,wBAAwB,EACxBC,sBAAsB,EACtBC,6BAA6B,EAC7BC,0BAA0B,EAC1BC,sBAAsB,EACtBC,sBAAsB,EACtBC,wCAAwC,EACxCC,+BAA+B,EAC/BC,6BAA6B,EAC7BC,yBAAyB,EACzBC,yBAAyB,EACzBC,uBAAuB,EACvBC,yBAAyB,EACzBC,wBAAwB,EACxBC,gCAAgC,EAChCC,4BAA4B,EAC5BC,+BAA+B,EAC/BC,uBAAuB,EACvBC,gCAAgC,EAChCC,iCAAiC,QAC5B,uBAAuB;AAC9B,SAAgCC,kBAAkB,EAAE7B,OAAO,IAAI8B,WAAW,QAAQ,eAAe;AAEjG,SAASC,SAAS,QAAQ,aAAa;AAavC,SAAS/B,OAAO,IAAIgC,WAAW,QAAQ,eAAe;AAEtD,SAAShC,OAAO,IAAIiC,UAAU,QAAQ,cAAc;AAMpD,SACEjC,OAAO,IAAIkC,cAAc,EAEzBC,qBAAqB,EACrBC,kBAAkB,QACb,kBAAkB;AACzB,SAASpC,OAAO,IAAIqC,UAAU,QAA8B,cAAc;AAC1E,SACEC,gBAAgB,EAChBC,kBAAkB,QAIb,oBAAoB;AAW3B,SACEC,qBAAqB,EACrBxC,OAAO,IAAIyC,WAAW,EACtBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,kBAAkB,EAClBC,qBAAqB,EACrBC,sBAAsB,EACtBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,8BAA8B,QACzB,eAAe;AAEtB,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASlD,OAAO,IAAImD,KAAK,QAAQ,SAAS;AAa1C,SACEC,iBAAiB,EACjBC,YAAY,EACZC,gBAAgB,EAChBC,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBC,gBAAgB,EAChBC,oBAAoB,EACpBC,eAAe,EACfC,gBAAgB,QACX,gBAAgB;AAEvB,SAAS7D,OAAO,IAAI8D,UAAU,QAAQ,cAAc;AAWpD,SACEC,iBAAiB,EACjBC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,mBAAmB,EACnBC,eAAe,EACfC,eAAe,EACfC,gBAAgB,QACX,YAAY;AASnB,SAAStE,OAAO,IAAIuE,kBAAkB,QAAQ,sBAAsB;AAQpE,SAASvE,OAAO,IAAIwE,aAAa,QAAQ,iBAAiB","ignoreList":[]}
@@ -1,13 +1,13 @@
1
1
  export { Button, ButtonLink, IconButton, IconButtonLink } from "./Button";
2
+ export { ContextMenu } from "./ContextMenu";
2
3
  export { CopyButton } from "./CopyButton";
3
4
  export { Disclosure } from "./Disclosure";
4
5
  export { Dropdown, DropdownItem, dropdownPosition } from "./Dropdown";
5
6
  export { FilterChip } from "./FilterChip";
6
- export { ContextMenu } from "./ContextMenu";
7
7
  export { RemoveButton } from "./RemoveButton";
8
- export { openSpotlightSearch, SpotlightButton } from "./SpotlightSearch";
9
8
  export { SegmentedControl } from "./SegmentedControl";
10
9
  export { SplitButton } from "./SplitButton";
10
+ export { openSpotlightSearch, SpotlightButton } from "./SpotlightSearch";
11
11
  export { Tabs } from "./Tabs";
12
12
  export { Toolbar } from "./Toolbar";
13
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Button","ButtonLink","IconButton","IconButtonLink","CopyButton","Disclosure","Dropdown","DropdownItem","dropdownPosition","FilterChip","ContextMenu","RemoveButton","openSpotlightSearch","SpotlightButton","SegmentedControl","SplitButton","Tabs","Toolbar"],"sources":["actions/index.ts"],"sourcesContent":["export type { ButtonLinkProps, ButtonProps, ButtonSize, ButtonVariant, IconButtonLinkProps, IconButtonProps } from \"./Button\";\nexport { Button, ButtonLink, IconButton, IconButtonLink } from \"./Button\";\nexport type { CopyButtonProps, CopyButtonValue } from \"./CopyButton\";\nexport { CopyButton } from \"./CopyButton\";\nexport type { DisclosureProps } from \"./Disclosure\";\nexport { Disclosure } from \"./Disclosure\";\nexport type {\n DropdownAction,\n DropdownActionBase,\n DropdownChoice,\n DropdownItemProps,\n DropdownPosition,\n DropdownProps,\n DropdownSection,\n DropdownTriggerProps,\n} from \"./Dropdown\";\nexport { Dropdown, DropdownItem, dropdownPosition } from \"./Dropdown\";\nexport type { FilterChipOption, FilterChipProps, FilterChipSection } from \"./FilterChip\";\nexport { FilterChip } from \"./FilterChip\";\nexport type { ContextMenuProps } from \"./ContextMenu\";\nexport { ContextMenu } from \"./ContextMenu\";\nexport type { RemoveButtonProps } from \"./RemoveButton\";\nexport { RemoveButton } from \"./RemoveButton\";\nexport type {\n SpotlightButtonProps,\n SpotlightButtonVariant,\n SpotlightSearchOptions,\n SpotlightSearchResolver,\n} from \"./SpotlightSearch\";\nexport {\n openSpotlightSearch,\n SpotlightButton,\n} from \"./SpotlightSearch\";\nexport type { SegmentedControlProps, SegmentOption } from \"./SegmentedControl\";\nexport { SegmentedControl } from \"./SegmentedControl\";\nexport type { SplitButtonProps } from \"./SplitButton\";\nexport { SplitButton } from \"./SplitButton\";\nexport type { TabOption, TabsItemProps, TabsProps } from \"./Tabs\";\nexport { Tabs } from \"./Tabs\";\nexport type { ToolbarGroupProps, ToolbarProps, ToolbarSeparatorProps } from \"./Toolbar\";\nexport { Toolbar } from \"./Toolbar\";\n"],"mappings":"AACA,SAASA,MAAM,EAAEC,UAAU,EAAEC,UAAU,EAAEC,cAAc,QAAQ,UAAU;AAEzE,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,UAAU,QAAQ,cAAc;AAWzC,SAASC,QAAQ,EAAEC,YAAY,EAAEC,gBAAgB,QAAQ,YAAY;AAErE,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,YAAY,QAAQ,gBAAgB;AAO7C,SACEC,mBAAmB,EACnBC,eAAe,QACV,mBAAmB;AAE1B,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,OAAO,QAAQ,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["Button","ButtonLink","IconButton","IconButtonLink","ContextMenu","CopyButton","Disclosure","Dropdown","DropdownItem","dropdownPosition","FilterChip","RemoveButton","SegmentedControl","SplitButton","openSpotlightSearch","SpotlightButton","Tabs","Toolbar"],"sources":["actions/index.ts"],"sourcesContent":["export type { ButtonLinkProps, ButtonProps, ButtonSize, ButtonVariant, IconButtonLinkProps, IconButtonProps } from \"./Button\";\nexport { Button, ButtonLink, IconButton, IconButtonLink } from \"./Button\";\nexport type { ContextMenuProps } from \"./ContextMenu\";\nexport { ContextMenu } from \"./ContextMenu\";\nexport type { CopyButtonProps, CopyButtonValue } from \"./CopyButton\";\nexport { CopyButton } from \"./CopyButton\";\nexport type { DisclosureProps } from \"./Disclosure\";\nexport { Disclosure } from \"./Disclosure\";\nexport type {\n DropdownAction,\n DropdownActionBase,\n DropdownChoice,\n DropdownItemProps,\n DropdownPosition,\n DropdownProps,\n DropdownSection,\n DropdownTriggerProps,\n} from \"./Dropdown\";\nexport { Dropdown, DropdownItem, dropdownPosition } from \"./Dropdown\";\nexport type { FilterChipOption, FilterChipProps, FilterChipSection } from \"./FilterChip\";\nexport { FilterChip } from \"./FilterChip\";\nexport type { RemoveButtonProps } from \"./RemoveButton\";\nexport { RemoveButton } from \"./RemoveButton\";\nexport type { SegmentedControlProps, SegmentOption } from \"./SegmentedControl\";\nexport { SegmentedControl } from \"./SegmentedControl\";\nexport type { SplitButtonProps } from \"./SplitButton\";\nexport { SplitButton } from \"./SplitButton\";\nexport type {\n SpotlightButtonProps,\n SpotlightButtonVariant,\n SpotlightSearchOptions,\n SpotlightSearchResolver,\n} from \"./SpotlightSearch\";\nexport {\n openSpotlightSearch,\n SpotlightButton,\n} from \"./SpotlightSearch\";\nexport type { TabOption, TabsItemProps, TabsProps } from \"./Tabs\";\nexport { Tabs } from \"./Tabs\";\nexport type { ToolbarGroupProps, ToolbarProps, ToolbarSeparatorProps } from \"./Toolbar\";\nexport { Toolbar } from \"./Toolbar\";\n"],"mappings":"AACA,SAASA,MAAM,EAAEC,UAAU,EAAEC,UAAU,EAAEC,cAAc,QAAQ,UAAU;AAEzE,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,UAAU,QAAQ,cAAc;AAWzC,SAASC,QAAQ,EAAEC,YAAY,EAAEC,gBAAgB,QAAQ,YAAY;AAErE,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,SAASC,WAAW,QAAQ,eAAe;AAO3C,SACEC,mBAAmB,EACnBC,eAAe,QACV,mBAAmB;AAE1B,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,OAAO,QAAQ,WAAW","ignoreList":[]}
@@ -31,7 +31,7 @@ var _tmpl$ = ["<span><strong", ">", "</strong></span>"],
31
31
  _tmpl$23 = ["<div class=\"k2b-chat-composer__submit\">", "", "", "", "</div>"],
32
32
  _tmpl$24 = ["<button type=\"button\" class=\"k2b-chat-composer__icon-action\"", "", "><i", " aria-hidden=\"true\"></i></button>"],
33
33
  _tmpl$25 = ["<button type=\"button\" class=\"k2b-chat-composer__send\"", "><i", " aria-hidden=\"true\"></i></button>"];
34
- import { children, createEffect, createMemo, createSignal, createUniqueId, For, onMount, onCleanup, untrack, Show } from "solid-js";
34
+ import { children, createEffect, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, untrack } from "solid-js";
35
35
  import { Dropdown } from "../actions/Dropdown";
36
36
  import { SelectChip } from "../inputs/SelectChip";
37
37
  import { useUiMessages } from "../intl/messages";
@@ -1 +1 @@
1
- {"version":3,"names":["children","createEffect","createMemo","createSignal","createUniqueId","For","onMount","onCleanup","untrack","Show","Dropdown","SelectChip","useUiMessages","ChatContextUsage","ContextUsage","executeChatAction","nextChatCommandIndex","reportChatFailure","runChatSubmission","chatCommandQuery","chatMentionSegments","reconcileChatMentions","composerMaxInputHeight","composerUndoBudgetChars","attachmentIcon","attachment","icon","kind","ChatComposer","props","accessory","hasAccessory","toArray","some","item","messages","commandListId","replace","selectedCommandIndex","setSelectedCommandIndex","dragActive","setDragActive","addingFiles","setAddingFiles","submitting","setSubmitting","composerRef","textareaRef","fileInputRef","sawRunning","state","running","stopping","runningSubmitIntent","attachments","caret","setCaret","selectionEnd","setSelectionEnd","dismissed","setDismissed","composing","setComposing","searchResults","setSearchResults","searching","setSearching","searchError","setSearchError","executing","setExecuting","highlightRef","commandListRef","mentions","commandQuery","value","commandMatches","token","commands","filter","command","name","toLowerCase","includes","query","commandsOpen","Boolean","length","searchCommands","disposed","measure","top","window","visualViewport","offsetTop","parent","parentElement","test","getComputedStyle","overflowY","Math","max","getBoundingClientRect","bottom","style","setProperty","queueMicrotask","addEventListener","removeEventListener","abort","AbortController","timer","setTimeout","Promise","resolve","signal","then","results","aborted","catch","finally","clearTimeout","history","historyIndex","draftKey","snapshot","selectionStart","sameMentions","a","b","every","index","start","end","record","splice","push","size","reduce","total","entry","shift","edit","nextMentions","onValueChange","onMentionsChange","restoreHistory","direction","next","setSelectionRange","syncCaret","selectedCommand","blocked","disabled","hasDraft","trim","canSubmit","canSelectFiles","fileSelection","hasAddMenu","menuActions","hasContextUsage","contextPopupAction","context","contextUsage","contextWindow","Number","isFinite","usage","input","output","menuItems","items","label","attachFiles","action","click","variant","onError","autoResize","height","min","scrollHeight","focus","focusToken","undefined","list","querySelector","isConnected","scrollTop","offsetHeight","clientHeight","active","document","focused","activeElement","insideComposer","contains","editingElsewhere","body","matches","isContentEditable","closest","setAttachments","onAttachmentsChange","renderAttachmentCopy","_$ssr","_tmpl$","_$ssrAttribute","_$escape","runFiles","files","selected","Array","from","onSelect","error","submit","intent","previousValue","previousAttachments","previousMentions","text","clear","perform","onSubmit","restore","executeCommand","previous","key","replacement","mention","nextValue","slice","submitRequested","setValue","onKeyDown","event","isComposing","ctrlKey","metaKey","preventDefault","shiftKey","_tmpl$1","_$createComponent","when","_tmpl$6","_$ssrStyleProperty","_tmpl$5","each","_tmpl$10","description","_tmpl$2","loading","_tmpl$3","_tmpl$4","noResults","class","messageComposer","_tmpl$7","_tmpl$12","href","fallback","_tmpl$14","previewUrl","_tmpl$15","_tmpl$13","alt","_tmpl$16","openInNewTab","_tmpl$17","_tmpl$11","removeNamed","messageInput","_tmpl$8","dropFilesToAttach","_tmpl$9","part","_tmpl$18","placeholder","addGuidance","writeMessage","inputLabel","message","_tmpl$0","footerContent","_tmpl$21","footerTools","Root","position","width","addToChat","Trigger","appearance","title","_tmpl$19","_tmpl$20","accept","multiple","models","aria-label","chooseModel","menuWidth","model","selectedModelId","options","map","id","image","onModelChange","modelId","modelDetails","_tmpl$23","contextActions","_tmpl$24","pressed","_$mergeProps","onActionError","submitTools","onStop","_tmpl$25","queueing","steering","sending","queueMessage","steerResponse","sendMessage","_tmpl$22","stopResponse","content"],"sources":["chat/ChatComposer.tsx"],"sourcesContent":["import { children, createEffect, createMemo, createSignal, createUniqueId, For, type JSX, onMount, onCleanup, untrack, Show } from \"solid-js\";\nimport { Dropdown, type DropdownItem as DropdownItemData } from \"../actions/Dropdown\";\nimport { SelectChip } from \"../inputs/SelectChip\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChatContextUsage as ContextUsage } from \"./ChatPrimitives\";\nimport { executeChatAction, nextChatCommandIndex, reportChatFailure, runChatSubmission } from \"./chat-behavior\";\nimport type { ChatAction, ChatAttachment, ChatMention, ChatComposerState, ChatContextUsageData, ChatModelOption, ChatSubmitInput } from \"./types\";\n\nimport { chatCommandQuery, chatMentionSegments, reconcileChatMentions } from \"./composer-document\";\n\nconst composerMaxInputHeight = 309;\n// Keep editor undo text within approximately 2 MiB, plus the current edit.\nconst composerUndoBudgetChars = 1_000_000;\n\nexport type ChatCommandContext = {\n setValue: (value: string) => void;\n submit: () => void;\n focus: () => void;\n};\n\nexport type ChatCommand = {\n name: string;\n description: string;\n icon?: string;\n action?: (context: ChatCommandContext) => void | Promise<void>;\n /** Selecting a reference inserts its display name and retains its opaque payload. */\n mention?: ChatAttachment;\n label?: string;\n disabled?: boolean;\n};\n\nexport type ChatFileSelection = {\n onSelect: (files: readonly File[]) => void | Promise<void>;\n onError?: (error: unknown) => void;\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n label?: string;\n};\n\nexport type ChatPasteHandler = (event: ClipboardEvent & { currentTarget: HTMLTextAreaElement; target: Element }) => void;\n\nexport type ChatComposerProps = {\n value: string;\n onValueChange: (value: string) => void;\n onSubmit: (input: ChatSubmitInput) => boolean | void | Promise<boolean | void>;\n /** Submit intent used for drafts entered while a response is running. Defaults to `steer`. */\n runningSubmitIntent?: \"steer\" | \"queue\";\n onStop?: () => void | Promise<void>;\n onError?: (error: unknown) => void;\n state?: ChatComposerState;\n attachments?: readonly ChatAttachment[];\n onAttachmentsChange?: (attachments: readonly ChatAttachment[]) => void;\n fileSelection?: ChatFileSelection;\n /** Handle non-file clipboard content. Pasted files already use `fileSelection`. */\n onPaste?: ChatPasteHandler;\n menuActions?: readonly ChatAction[];\n models?: readonly ChatModelOption[];\n selectedModelId?: string | null;\n onModelChange?: (modelId: string) => void;\n /** Compact application-owned details immediately after the model selector. */\n modelDetails?: JSX.Element;\n commands?: readonly ChatCommand[];\n searchCommands?: (query: string, signal: AbortSignal) => Promise<readonly ChatCommand[]>;\n mentions?: readonly ChatMention[];\n onMentionsChange?: (mentions: readonly ChatMention[]) => void;\n /** Shared surface above the editor; suggestions temporarily replace this content. */\n accessory?: JSX.Element;\n contextUsage?: ChatContextUsageData;\n contextActions?: readonly ChatAction[];\n /** Optional action inside the context details popup. */\n contextPopupAction?: ChatAction;\n /** Additional compact controls rendered with the add/model controls. */\n footerTools?: JSX.Element;\n /** Compact application controls immediately before the send/stop button. */\n submitTools?: JSX.Element;\n /** Replaces footer controls during an application-owned interaction, preserving the editor. */\n footerContent?: JSX.Element;\n placeholder?: string;\n label?: string;\n inputLabel?: string;\n disabled?: boolean;\n error?: string;\n focusToken?: unknown;\n draftKey?: unknown;\n class?: string;\n};\n\nconst attachmentIcon = (attachment: ChatAttachment): string =>\n attachment.icon ?? (attachment.kind === \"image\" ? \"ti ti-photo\" : attachment.kind === \"resource\" ? \"ti ti-link\" : \"ti ti-file\");\n\nexport function ChatComposer(props: ChatComposerProps): JSX.Element {\n const accessory = children(() => props.accessory);\n const hasAccessory = () => accessory.toArray().some(item => item != null && typeof item !== \"boolean\" && item !== \"\");\n const messages = useUiMessages();\n const commandListId = `k2b-chat-commands-${createUniqueId().replace(/[^A-Za-z0-9_-]/g, \"-\")}`;\n const [selectedCommandIndex, setSelectedCommandIndex] = createSignal(0);\n const [dragActive, setDragActive] = createSignal(false);\n const [addingFiles, setAddingFiles] = createSignal(false);\n const [submitting, setSubmitting] = createSignal(false);\n let composerRef: HTMLElement | undefined;\n let textareaRef: HTMLTextAreaElement | undefined;\n let fileInputRef: HTMLInputElement | undefined;\n let sawRunning = props.state === \"running\";\n\n const state = () => props.state ?? \"idle\";\n const running = () => state() === \"running\";\n const stopping = () => state() === \"stopping\";\n const runningSubmitIntent = () => props.runningSubmitIntent ?? \"steer\";\n const attachments = () => props.attachments ?? [];\n const [caret, setCaret] = createSignal(0);\n const [selectionEnd, setSelectionEnd] = createSignal(0);\n const [dismissed, setDismissed] = createSignal(false);\n const [composing, setComposing] = createSignal(false);\n const [searchResults, setSearchResults] = createSignal<readonly ChatCommand[]>([]);\n const [searching, setSearching] = createSignal(false);\n const [searchError, setSearchError] = createSignal(false);\n const [executing, setExecuting] = createSignal(false);\n let highlightRef: HTMLDivElement | undefined;\n let commandListRef: HTMLDivElement | undefined;\n const mentions = () => props.mentions ?? [];\n const commandQuery = createMemo(() => dismissed() || composing() ? null : chatCommandQuery(props.value, caret(), selectionEnd()));\n const commandMatches = createMemo(() => {\n const token = commandQuery();\n if (!token) return [];\n return [...(props.commands ?? []).filter(command => command.name.toLowerCase().includes(token.query.toLowerCase())), ...searchResults()];\n });\n const commandsOpen = () => Boolean(commandQuery() && (props.commands?.length || props.searchCommands));\n createEffect(() => {\n if (!commandsOpen()) return;\n let disposed = false;\n const measure = () => {\n if (disposed || !commandListRef) return;\n let top = window.visualViewport?.offsetTop ?? 0;\n for (let parent = commandListRef.parentElement; parent; parent = parent.parentElement) {\n if (/(auto|scroll|hidden|clip)/.test(window.getComputedStyle(parent).overflowY)) {\n top = Math.max(top, parent.getBoundingClientRect().top);\n }\n }\n const bottom = commandListRef.parentElement!.getBoundingClientRect().bottom;\n commandListRef.style.setProperty(\"--k2b-chat-command-space\", `${Math.max(40, bottom - top - 8)}px`);\n };\n queueMicrotask(measure);\n window.addEventListener(\"resize\", measure);\n window.addEventListener(\"scroll\", measure, true);\n window.visualViewport?.addEventListener(\"resize\", measure);\n onCleanup(() => {\n disposed = true;\n window.removeEventListener(\"resize\", measure);\n window.removeEventListener(\"scroll\", measure, true);\n window.visualViewport?.removeEventListener(\"resize\", measure);\n });\n });\n createEffect(() => {\n const token = commandQuery();\n setSearchResults([]);\n setSearchError(false);\n if (!token || !props.searchCommands) { setSearching(false); return; }\n const abort = new AbortController();\n setSearching(true);\n const timer = setTimeout(() => {\n Promise.resolve(props.searchCommands!(token.query, abort.signal)).then(results => {\n if (!abort.signal.aborted) setSearchResults(results);\n }).catch(() => { if (!abort.signal.aborted) setSearchError(true); }).finally(() => {\n if (!abort.signal.aborted) setSearching(false);\n });\n }, 120);\n onCleanup(() => { clearTimeout(timer); abort.abort(); });\n });\n const history: { value: string; mentions: readonly ChatMention[]; caret: number }[] = [];\n let historyIndex = -1;\n createEffect(() => { props.draftKey; untrack(() => { history.length = 0; historyIndex = -1; setDismissed(true); }); });\n const snapshot = () => ({ value: props.value, mentions: [...mentions()], caret: textareaRef?.selectionStart ?? 0 });\n const sameMentions = (a: readonly ChatMention[], b: readonly ChatMention[]) => a.length === b.length && a.every((item, index) => item.start === b[index]?.start && item.end === b[index]?.end && item.attachment === b[index]?.attachment);\n const record = () => {\n if (history[historyIndex]?.value !== props.value || !sameMentions(history[historyIndex]?.mentions ?? [], mentions())) {\n history.splice(historyIndex + 1);\n history.push(snapshot());\n let size = history.reduce((total, entry) => total + entry.value.length, 0);\n while (history.length > 2 && size > composerUndoBudgetChars) size -= history.shift()!.value.length;\n historyIndex = history.length - 1;\n }\n };\n const edit = (value: string, nextMentions = reconcileChatMentions(props.value, value, mentions())) => {\n record();\n props.onValueChange(value);\n props.onMentionsChange?.(nextMentions);\n record();\n setDismissed(false);\n };\n const restoreHistory = (direction: -1 | 1) => {\n record();\n const next = history[historyIndex + direction];\n if (!next) return;\n historyIndex += direction;\n props.onValueChange(next.value);\n props.onMentionsChange?.(next.mentions);\n queueMicrotask(() => { textareaRef?.setSelectionRange(next.caret, next.caret); syncCaret(); });\n };\n const syncCaret = () => {\n setCaret(textareaRef?.selectionStart ?? props.value.length);\n setSelectionEnd(textareaRef?.selectionEnd ?? props.value.length);\n };\n const selectedCommand = () => commandMatches()[selectedCommandIndex()];\n const blocked = () => Boolean(props.disabled || stopping() || state() === \"submitting\" || executing() || addingFiles() || submitting());\n const hasDraft = () => Boolean(props.value.trim() || (!running() && attachments().length > 0));\n const canSubmit = () => !blocked() && hasDraft() && !(running() && runningSubmitIntent() === \"steer\" && mentions().length);\n const canSelectFiles = () => Boolean(props.fileSelection && !props.fileSelection.disabled && !running() && !blocked());\n const hasAddMenu = () => Boolean(props.fileSelection || props.menuActions?.length);\n const hasContextUsage = () => {\n if (props.contextPopupAction) return true;\n const context = props.contextUsage;\n if (!context || typeof context.contextWindow !== \"number\" || !Number.isFinite(context.contextWindow) || context.contextWindow <= 0) {\n return false;\n }\n return [context.usage?.total, context.usage?.input, context.usage?.output].some(\n (value) => typeof value === \"number\" && Number.isFinite(value) && value >= 0,\n );\n };\n\n const menuItems = (): readonly DropdownItemData[] => {\n const items: DropdownItemData[] = [];\n if (props.fileSelection) {\n items.push({\n icon: addingFiles() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-paperclip\",\n label: props.fileSelection.label ?? messages().attachFiles,\n disabled: !canSelectFiles(),\n action: () => fileInputRef?.click(),\n });\n }\n for (const action of props.menuActions ?? []) {\n items.push({\n icon: action.icon,\n label: action.label,\n variant: action.variant,\n disabled: action.disabled,\n action: () => reportChatFailure(() => executeChatAction(action), props.onError),\n });\n }\n return items;\n };\n\n const autoResize = () => {\n if (!textareaRef) return;\n textareaRef.style.height = \"auto\";\n textareaRef.style.height = `${Math.min(textareaRef.scrollHeight, composerMaxInputHeight)}px`;\n };\n\n const focus = () => textareaRef?.focus();\n\n onMount(() => {\n autoResize();\n if (props.focusToken !== undefined) focus();\n });\n\n createEffect(() => {\n commandMatches();\n setSelectedCommandIndex(0);\n });\n\n createEffect(() => {\n const index = selectedCommandIndex();\n commandMatches();\n queueMicrotask(() => {\n const list = commandListRef;\n const item = list?.querySelector<HTMLElement>(`[id=\"${commandListId}-${index}\"]`);\n if (!list || !item?.isConnected) return;\n if (item.offsetTop < list.scrollTop) list.scrollTop = item.offsetTop;\n else if (item.offsetTop + item.offsetHeight > list.scrollTop + list.clientHeight) {\n list.scrollTop = item.offsetTop + item.offsetHeight - list.clientHeight;\n }\n });\n });\n\n createEffect(() => {\n props.value;\n queueMicrotask(autoResize);\n });\n\n createEffect(() => {\n props.focusToken;\n if (props.focusToken !== undefined) queueMicrotask(focus);\n });\n\n createEffect(() => {\n const active = running();\n if (sawRunning && !active && !props.disabled && typeof document !== \"undefined\") {\n const focused = document.activeElement as HTMLElement | null;\n const insideComposer = Boolean(focused && composerRef?.contains(focused));\n const editingElsewhere = Boolean(\n focused &&\n focused !== document.body &&\n !insideComposer &&\n (focused.matches(\"input, textarea, select\") || focused.isContentEditable || focused.closest(\"[role='dialog'], [popover]\")),\n );\n if (!editingElsewhere) queueMicrotask(focus);\n }\n sawRunning = active;\n });\n\n const setAttachments = (next: readonly ChatAttachment[]) => props.onAttachmentsChange?.(next);\n\n const renderAttachmentCopy = (attachment: ChatAttachment) => (\n <span>\n <strong title={attachment.name}>{attachment.name}</strong>\n </span>\n );\n\n const runFiles = async (files: FileList | readonly File[]) => {\n if (!canSelectFiles()) return;\n const selected = Array.from(files);\n if (selected.length === 0) return;\n setAddingFiles(true);\n try {\n await props.fileSelection?.onSelect(selected);\n } catch (error) {\n (props.fileSelection?.onError ?? props.onError)?.(error);\n } finally {\n setAddingFiles(false);\n if (fileInputRef) fileInputRef.value = \"\";\n queueMicrotask(focus);\n }\n };\n\n const submit = async () => {\n if (!canSubmit()) return;\n const intent = running() ? runningSubmitIntent() : \"send\";\n const previousValue = props.value;\n const previousAttachments = attachments();\n const previousMentions = mentions();\n const input: ChatSubmitInput = {\n intent,\n text: previousValue,\n mentions: previousMentions,\n attachments: intent !== \"steer\" ? previousAttachments : [],\n };\n\n setSubmitting(true);\n try {\n await runChatSubmission({\n clear: () => {\n props.onValueChange(\"\");\n props.onMentionsChange?.([]);\n if (intent !== \"steer\") setAttachments([]);\n },\n perform: () => props.onSubmit(input),\n restore: () => {\n props.onValueChange(previousValue);\n props.onMentionsChange?.(previousMentions);\n if (intent !== \"steer\") setAttachments(previousAttachments);\n },\n onError: props.onError,\n });\n } finally {\n setSubmitting(false);\n queueMicrotask(() => {\n autoResize();\n focus();\n });\n }\n };\n\n const executeCommand = async (command: ChatCommand) => {\n const token = commandQuery();\n if (!token || command.disabled || blocked()) return;\n const previous = snapshot();\n const key = props.draftKey;\n const replacement = command.mention ? command.mention.name + \" \" : \"\";\n const nextValue = props.value.slice(0, token.start) + replacement + props.value.slice(token.end);\n const nextMentions = reconcileChatMentions(props.value, nextValue, mentions());\n if (command.mention) nextMentions.push({ start: token.start, end: token.start + command.mention.name.length, attachment: command.mention });\n edit(nextValue, nextMentions);\n setDismissed(true);\n setExecuting(true);\n let submitRequested = false;\n try {\n await command.action?.({ setValue: value => edit(value), submit: () => { submitRequested = true; }, focus });\n } catch (error) {\n submitRequested = false;\n if (props.draftKey === key && props.value === nextValue) { props.onValueChange(previous.value); props.onMentionsChange?.(previous.mentions); }\n props.onError?.(error);\n } finally { setExecuting(false); }\n if (submitRequested && props.draftKey === key) await submit();\n queueMicrotask(() => {\n if (props.draftKey !== key) return;\n textareaRef?.setSelectionRange(token.start + replacement.length, token.start + replacement.length);\n syncCaret(); autoResize(); focus();\n });\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing || composing()) return;\n if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === \"z\") {\n event.preventDefault(); restoreHistory(event.shiftKey ? 1 : -1); return;\n }\n const matches = commandMatches();\n if (commandsOpen()) {\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n setSelectedCommandIndex((index) => nextChatCommandIndex(index, matches.length, event.key === \"ArrowUp\" ? -1 : 1));\n return;\n }\n if ((event.key === \"Enter\" || event.key === \"Tab\") && matches.length > 0) {\n event.preventDefault();\n const command = selectedCommand();\n if (command) void executeCommand(command);\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n setDismissed(true);\n return;\n }\n }\n if (event.key === \"Enter\" && !event.shiftKey && !event.isComposing) {\n event.preventDefault();\n void submit();\n }\n };\n\n return (\n <div class=\"k2b-chat-composer-shell\">\n <Show when={commandsOpen() || hasAccessory()}>\n <div class=\"k2b-chat-composer-slot\">\n <div style={{ visibility: commandsOpen() ? \"hidden\" : undefined }} inert={commandsOpen()}>{accessory()}</div>\n <Show when={commandsOpen()}><div class=\"k2b-chat-composer-accessory\">\n <div ref={commandListRef} id={commandListId} class=\"k2b-chat-composer__commands\" role=\"listbox\" aria-label={messages().commands}>\n <For each={commandMatches()}>{(command, index) =>\n <button id={`${commandListId}-${index()}`} type=\"button\" role=\"option\" tabIndex={-1}\n aria-selected={index() === selectedCommandIndex()} aria-disabled={command.disabled}\n data-active={index() === selectedCommandIndex() ? \"true\" : undefined}\n onPointerDown={event => event.preventDefault()} onClick={() => void executeCommand(command)}>\n <i class={command.icon ?? \"ti ti-slash\"} aria-hidden=\"true\" />\n <strong>{command.label ?? `/${command.name}`}</strong><small>{command.description}</small>\n </button>\n }</For>\n <Show when={searching()}><div role=\"status\" class=\"k2b-chat-composer__loading\"><i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" /><strong>{messages().loading}</strong></div></Show>\n <Show when={searchError()}><div role=\"status\"><i class=\"ti ti-alert-circle\" /> {messages().error}</div></Show>\n <Show when={!searching() && !searchError() && commandMatches().length === 0}><div role=\"status\">{messages().noResults}</div></Show>\n </div>\n </div></Show>\n </div>\n </Show>\n <section\n ref={composerRef}\n class={`k2b-chat-composer ${props.class ?? \"\"}`}\n data-running={running() ? \"true\" : undefined}\n data-drag-active={dragActive() ? \"true\" : undefined}\n role=\"group\"\n aria-label={props.label ?? messages().messageComposer}\n >\n <Show when={attachments().length > 0}>\n <div class=\"k2b-chat-composer__attachments\" role=\"list\" aria-label={messages().attachments} tabIndex={0}>\n <For each={attachments()}>\n {(attachment) => (\n <div class=\"k2b-chat-composer__attachment\" role=\"listitem\">\n <div\n class=\"k2b-chat-composer__attachment-content\"\n classList={{ \"k2b-chat-composer__attachment-content--action\": Boolean(attachment.action) }}\n >\n <Show\n when={attachment.href}\n fallback={\n <div class=\"k2b-chat-composer__attachment-identity\">\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? \"\"} />\n </Show>\n {renderAttachmentCopy(attachment)}\n </div>\n }\n >\n {(href) => (\n <a\n class=\"k2b-chat-composer__attachment-link\"\n href={href()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={messages().openInNewTab({ name: attachment.name })}\n >\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? \"\"} />\n </Show>\n {renderAttachmentCopy(attachment)}\n </a>\n )}\n </Show>\n <Show when={attachment.action}>\n {(action) => (\n <button\n type=\"button\"\n class=\"k2b-chat-composer__attachment-action\"\n disabled={blocked() || action().disabled}\n onClick={() => reportChatFailure(() => executeChatAction(action()), props.onError)}\n >\n <Show when={action().icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n {action().label}\n </button>\n )}\n </Show>\n </div>\n <Show when={props.onAttachmentsChange}>\n <button\n type=\"button\"\n class=\"k2b-chat-composer__attachment-remove\"\n aria-label={messages().removeNamed({ name: attachment.name })}\n disabled={blocked()}\n onClick={() => setAttachments(attachments().filter((candidate) => candidate.id !== attachment.id))}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n )}\n </For>\n </div>\n </Show>\n\n <div\n class=\"k2b-chat-composer__input\"\n role=\"group\"\n aria-label={messages().messageInput}\n onDragEnter={(event) => {\n if (!canSelectFiles() || !event.dataTransfer?.types.includes(\"Files\")) return;\n event.preventDefault();\n setDragActive(true);\n }}\n onDragOver={(event) => {\n if (!canSelectFiles() || !event.dataTransfer?.types.includes(\"Files\")) return;\n event.preventDefault();\n setDragActive(true);\n }}\n onDragLeave={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setDragActive(false);\n }}\n onDrop={(event) => {\n if (!event.dataTransfer?.types.includes(\"Files\")) return;\n event.preventDefault();\n setDragActive(false);\n if (canSelectFiles() && event.dataTransfer.files.length) void runFiles(event.dataTransfer.files);\n }}\n >\n <Show when={dragActive()}>\n <div class=\"k2b-chat-composer__drop\" aria-hidden=\"true\">\n {messages().dropFilesToAttach}\n </div>\n </Show>\n <Show when={mentions().length > 0}><div ref={highlightRef} class=\"k2b-chat-composer__highlight\" aria-hidden=\"true\">\n <For each={chatMentionSegments(props.value, mentions())}>{part => <span classList={{ \"k2b-chat-composer__mention\": Boolean(part.mention) }}>{part.text}</span>}</For>{\"\\n\"}\n </div></Show>\n {/* biome-ignore lint/a11y/useAriaPropsSupportedByRole: popup attributes are conditional with the combobox role */}\n <textarea\n ref={textareaRef}\n classList={{ \"k2b-chat-composer__textarea--highlighted\": mentions().length > 0 }}\n rows={1}\n value={props.value}\n disabled={blocked()}\n placeholder={props.placeholder ?? (running() ? messages().addGuidance : messages().writeMessage)}\n aria-label={props.inputLabel ?? messages().message}\n role={commandsOpen() ? \"combobox\" : undefined}\n aria-autocomplete={commandsOpen() ? \"list\" : undefined}\n aria-controls={commandsOpen() ? commandListId : undefined}\n aria-expanded={commandsOpen() ? \"true\" : undefined}\n aria-activedescendant={selectedCommand() ? `${commandListId}-${selectedCommandIndex()}` : undefined}\n onInput={(event) => {\n edit(event.currentTarget.value);\n syncCaret(); autoResize();\n }}\n onPaste={(event) => {\n const clipboardData = event.clipboardData;\n if (canSelectFiles() && clipboardData?.files.length) {\n event.preventDefault();\n void runFiles(clipboardData.files);\n return;\n }\n props.onPaste?.(event);\n }}\n onSelect={syncCaret}\n onBlur={() => setDismissed(true)}\n onClick={() => { setDismissed(false); syncCaret(); }}\n onKeyUp={syncCaret}\n onCompositionStart={() => setComposing(true)}\n onCompositionEnd={() => { setComposing(false); syncCaret(); }}\n onScroll={() => { if (highlightRef && textareaRef) highlightRef.scrollTop = textareaRef.scrollTop; }}\n onBeforeInput={event => {\n if (event.inputType === \"historyUndo\" || event.inputType === \"historyRedo\") {\n event.preventDefault(); restoreHistory(event.inputType === \"historyUndo\" ? -1 : 1);\n }\n }}\n onKeyDown={onKeyDown}\n />\n </div>\n\n <Show when={props.error}>\n <div class=\"k2b-chat-composer__error\" role=\"alert\">\n <i class=\"ti ti-alert-circle\" aria-hidden=\"true\" />\n {props.error}\n </div>\n </Show>\n\n <footer class=\"k2b-chat-composer__footer\">\n <Show\n when={props.footerContent}\n fallback={\n <>\n <div class=\"k2b-chat-composer__tools\">\n {props.footerTools}\n <Show when={hasAddMenu()}>\n <Dropdown.Root position=\"top-right\" width=\"12rem\" label={messages().addToChat} items={menuItems()} disabled={blocked()}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-chat-composer__icon-action\"\n label={messages().addToChat}\n title={messages().addToChat}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n <Show when={props.fileSelection}>\n <input\n ref={fileInputRef}\n class=\"k2b-sr-only\"\n type=\"file\"\n tabIndex={-1}\n aria-hidden=\"true\"\n accept={props.fileSelection?.accept}\n multiple={props.fileSelection?.multiple ?? true}\n onChange={(event) => {\n if (event.currentTarget.files?.length) void runFiles(event.currentTarget.files);\n }}\n />\n </Show>\n <Show when={(props.models?.length ?? 0) > 0}>\n <SelectChip\n aria-label={messages().chooseModel}\n position=\"top-right\"\n class=\"k2b-chat-composer__model\"\n menuWidth=\"15rem\"\n placeholder={messages().model}\n value={() => props.selectedModelId ?? \"\"}\n options={(props.models ?? []).map((model) => ({\n value: model.id,\n label: model.label,\n description: model.description,\n icon: model.icon,\n image: model.image,\n }))}\n disabled={blocked() || running() || !props.onModelChange}\n onValueChange={(modelId) => {\n props.onModelChange?.(modelId);\n queueMicrotask(focus);\n }}\n />\n </Show>\n {props.modelDetails}\n </div>\n\n <div class=\"k2b-chat-composer__submit\">\n <For each={props.contextActions}>\n {(action) => (\n <button\n type=\"button\"\n class=\"k2b-chat-composer__icon-action\"\n data-tone={action.variant === \"danger\" ? \"danger\" : undefined}\n disabled={action.disabled}\n aria-pressed={action.pressed}\n aria-label={action.label}\n title={action.label}\n onClick={() => reportChatFailure(() => executeChatAction(action), props.onError)}\n >\n <i class={action.icon ?? \"ti ti-dots\"} aria-hidden=\"true\" />\n </button>\n )}\n </For>\n <Show when={hasContextUsage() ? (props.contextUsage ?? {}) : undefined}>\n {(usage) => <ContextUsage {...usage()} action={props.contextPopupAction} onActionError={props.onError} />}\n </Show>\n {props.submitTools}\n <Show\n when={running() && !hasDraft() && props.onStop}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-chat-composer__send\"\n disabled={!canSubmit()}\n aria-label={\n submitting()\n ? running()\n ? runningSubmitIntent() === \"queue\"\n ? messages().queueing\n : messages().steering\n : messages().sending\n : running()\n ? runningSubmitIntent() === \"queue\"\n ? messages().queueMessage\n : messages().steerResponse\n : messages().sendMessage\n }\n title={\n running()\n ? runningSubmitIntent() === \"queue\"\n ? messages().queueMessage\n : messages().steerResponse\n : messages().sendMessage\n }\n onClick={() => void submit()}\n >\n <i class={submitting() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-arrow-up\"} aria-hidden=\"true\" />\n </button>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-chat-composer__stop\"\n disabled={stopping()}\n aria-label={stopping() ? messages().stopping : messages().stopResponse}\n title={stopping() ? messages().stopping : messages().stopResponse}\n onClick={() => reportChatFailure(() => props.onStop?.(), props.onError)}\n >\n <i class={stopping() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-player-stop\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </>\n }\n >\n {(content) => content()}\n </Show>\n </footer>\n </section>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["children","createEffect","createMemo","createSignal","createUniqueId","For","onCleanup","onMount","Show","untrack","Dropdown","SelectChip","useUiMessages","ChatContextUsage","ContextUsage","executeChatAction","nextChatCommandIndex","reportChatFailure","runChatSubmission","chatCommandQuery","chatMentionSegments","reconcileChatMentions","composerMaxInputHeight","composerUndoBudgetChars","attachmentIcon","attachment","icon","kind","ChatComposer","props","accessory","hasAccessory","toArray","some","item","messages","commandListId","replace","selectedCommandIndex","setSelectedCommandIndex","dragActive","setDragActive","addingFiles","setAddingFiles","submitting","setSubmitting","composerRef","textareaRef","fileInputRef","sawRunning","state","running","stopping","runningSubmitIntent","attachments","caret","setCaret","selectionEnd","setSelectionEnd","dismissed","setDismissed","composing","setComposing","searchResults","setSearchResults","searching","setSearching","searchError","setSearchError","executing","setExecuting","highlightRef","commandListRef","mentions","commandQuery","value","commandMatches","token","commands","filter","command","name","toLowerCase","includes","query","commandsOpen","Boolean","length","searchCommands","disposed","measure","top","window","visualViewport","offsetTop","parent","parentElement","test","getComputedStyle","overflowY","Math","max","getBoundingClientRect","bottom","style","setProperty","queueMicrotask","addEventListener","removeEventListener","abort","AbortController","timer","setTimeout","Promise","resolve","signal","then","results","aborted","catch","finally","clearTimeout","history","historyIndex","draftKey","snapshot","selectionStart","sameMentions","a","b","every","index","start","end","record","splice","push","size","reduce","total","entry","shift","edit","nextMentions","onValueChange","onMentionsChange","restoreHistory","direction","next","setSelectionRange","syncCaret","selectedCommand","blocked","disabled","hasDraft","trim","canSubmit","canSelectFiles","fileSelection","hasAddMenu","menuActions","hasContextUsage","contextPopupAction","context","contextUsage","contextWindow","Number","isFinite","usage","input","output","menuItems","items","label","attachFiles","action","click","variant","onError","autoResize","height","min","scrollHeight","focus","focusToken","undefined","list","querySelector","isConnected","scrollTop","offsetHeight","clientHeight","active","document","focused","activeElement","insideComposer","contains","editingElsewhere","body","matches","isContentEditable","closest","setAttachments","onAttachmentsChange","renderAttachmentCopy","_$ssr","_tmpl$","_$ssrAttribute","_$escape","runFiles","files","selected","Array","from","onSelect","error","submit","intent","previousValue","previousAttachments","previousMentions","text","clear","perform","onSubmit","restore","executeCommand","previous","key","replacement","mention","nextValue","slice","submitRequested","setValue","onKeyDown","event","isComposing","ctrlKey","metaKey","preventDefault","shiftKey","_tmpl$1","_$createComponent","when","_tmpl$6","_$ssrStyleProperty","_tmpl$5","each","_tmpl$10","description","_tmpl$2","loading","_tmpl$3","_tmpl$4","noResults","class","messageComposer","_tmpl$7","_tmpl$12","href","fallback","_tmpl$14","previewUrl","_tmpl$15","_tmpl$13","alt","_tmpl$16","openInNewTab","_tmpl$17","_tmpl$11","removeNamed","messageInput","_tmpl$8","dropFilesToAttach","_tmpl$9","part","_tmpl$18","placeholder","addGuidance","writeMessage","inputLabel","message","_tmpl$0","footerContent","_tmpl$21","footerTools","Root","position","width","addToChat","Trigger","appearance","title","_tmpl$19","_tmpl$20","accept","multiple","models","aria-label","chooseModel","menuWidth","model","selectedModelId","options","map","id","image","onModelChange","modelId","modelDetails","_tmpl$23","contextActions","_tmpl$24","pressed","_$mergeProps","onActionError","submitTools","onStop","_tmpl$25","queueing","steering","sending","queueMessage","steerResponse","sendMessage","_tmpl$22","stopResponse","content"],"sources":["chat/ChatComposer.tsx"],"sourcesContent":["import {\n children,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n onCleanup,\n onMount,\n Show,\n untrack,\n} from \"solid-js\";\nimport { Dropdown, type DropdownItem as DropdownItemData } from \"../actions/Dropdown\";\nimport { SelectChip } from \"../inputs/SelectChip\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChatContextUsage as ContextUsage } from \"./ChatPrimitives\";\nimport { executeChatAction, nextChatCommandIndex, reportChatFailure, runChatSubmission } from \"./chat-behavior\";\nimport { chatCommandQuery, chatMentionSegments, reconcileChatMentions } from \"./composer-document\";\nimport type {\n ChatAction,\n ChatAttachment,\n ChatComposerState,\n ChatContextUsageData,\n ChatMention,\n ChatModelOption,\n ChatSubmitInput,\n} from \"./types\";\n\nconst composerMaxInputHeight = 309;\n// Keep editor undo text within approximately 2 MiB, plus the current edit.\nconst composerUndoBudgetChars = 1_000_000;\n\nexport type ChatCommandContext = {\n setValue: (value: string) => void;\n submit: () => void;\n focus: () => void;\n};\n\nexport type ChatCommand = {\n name: string;\n description: string;\n icon?: string;\n action?: (context: ChatCommandContext) => void | Promise<void>;\n /** Selecting a reference inserts its display name and retains its opaque payload. */\n mention?: ChatAttachment;\n label?: string;\n disabled?: boolean;\n};\n\nexport type ChatFileSelection = {\n onSelect: (files: readonly File[]) => void | Promise<void>;\n onError?: (error: unknown) => void;\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n label?: string;\n};\n\nexport type ChatPasteHandler = (event: ClipboardEvent & { currentTarget: HTMLTextAreaElement; target: Element }) => void;\n\nexport type ChatComposerProps = {\n value: string;\n onValueChange: (value: string) => void;\n onSubmit: (input: ChatSubmitInput) => boolean | void | Promise<boolean | void>;\n /** Submit intent used for drafts entered while a response is running. Defaults to `steer`. */\n runningSubmitIntent?: \"steer\" | \"queue\";\n onStop?: () => void | Promise<void>;\n onError?: (error: unknown) => void;\n state?: ChatComposerState;\n attachments?: readonly ChatAttachment[];\n onAttachmentsChange?: (attachments: readonly ChatAttachment[]) => void;\n fileSelection?: ChatFileSelection;\n /** Handle non-file clipboard content. Pasted files already use `fileSelection`. */\n onPaste?: ChatPasteHandler;\n menuActions?: readonly ChatAction[];\n models?: readonly ChatModelOption[];\n selectedModelId?: string | null;\n onModelChange?: (modelId: string) => void;\n /** Compact application-owned details immediately after the model selector. */\n modelDetails?: JSX.Element;\n commands?: readonly ChatCommand[];\n searchCommands?: (query: string, signal: AbortSignal) => Promise<readonly ChatCommand[]>;\n mentions?: readonly ChatMention[];\n onMentionsChange?: (mentions: readonly ChatMention[]) => void;\n /** Shared surface above the editor; suggestions temporarily replace this content. */\n accessory?: JSX.Element;\n contextUsage?: ChatContextUsageData;\n contextActions?: readonly ChatAction[];\n /** Optional action inside the context details popup. */\n contextPopupAction?: ChatAction;\n /** Additional compact controls rendered with the add/model controls. */\n footerTools?: JSX.Element;\n /** Compact application controls immediately before the send/stop button. */\n submitTools?: JSX.Element;\n /** Replaces footer controls during an application-owned interaction, preserving the editor. */\n footerContent?: JSX.Element;\n placeholder?: string;\n label?: string;\n inputLabel?: string;\n disabled?: boolean;\n error?: string;\n focusToken?: unknown;\n draftKey?: unknown;\n class?: string;\n};\n\nconst attachmentIcon = (attachment: ChatAttachment): string =>\n attachment.icon ?? (attachment.kind === \"image\" ? \"ti ti-photo\" : attachment.kind === \"resource\" ? \"ti ti-link\" : \"ti ti-file\");\n\nexport function ChatComposer(props: ChatComposerProps): JSX.Element {\n const accessory = children(() => props.accessory);\n const hasAccessory = () => accessory.toArray().some((item) => item != null && typeof item !== \"boolean\" && item !== \"\");\n const messages = useUiMessages();\n const commandListId = `k2b-chat-commands-${createUniqueId().replace(/[^A-Za-z0-9_-]/g, \"-\")}`;\n const [selectedCommandIndex, setSelectedCommandIndex] = createSignal(0);\n const [dragActive, setDragActive] = createSignal(false);\n const [addingFiles, setAddingFiles] = createSignal(false);\n const [submitting, setSubmitting] = createSignal(false);\n let composerRef: HTMLElement | undefined;\n let textareaRef: HTMLTextAreaElement | undefined;\n let fileInputRef: HTMLInputElement | undefined;\n let sawRunning = props.state === \"running\";\n\n const state = () => props.state ?? \"idle\";\n const running = () => state() === \"running\";\n const stopping = () => state() === \"stopping\";\n const runningSubmitIntent = () => props.runningSubmitIntent ?? \"steer\";\n const attachments = () => props.attachments ?? [];\n const [caret, setCaret] = createSignal(0);\n const [selectionEnd, setSelectionEnd] = createSignal(0);\n const [dismissed, setDismissed] = createSignal(false);\n const [composing, setComposing] = createSignal(false);\n const [searchResults, setSearchResults] = createSignal<readonly ChatCommand[]>([]);\n const [searching, setSearching] = createSignal(false);\n const [searchError, setSearchError] = createSignal(false);\n const [executing, setExecuting] = createSignal(false);\n let highlightRef: HTMLDivElement | undefined;\n let commandListRef: HTMLDivElement | undefined;\n const mentions = () => props.mentions ?? [];\n const commandQuery = createMemo(() => (dismissed() || composing() ? null : chatCommandQuery(props.value, caret(), selectionEnd())));\n const commandMatches = createMemo(() => {\n const token = commandQuery();\n if (!token) return [];\n return [\n ...(props.commands ?? []).filter((command) => command.name.toLowerCase().includes(token.query.toLowerCase())),\n ...searchResults(),\n ];\n });\n const commandsOpen = () => Boolean(commandQuery() && (props.commands?.length || props.searchCommands));\n createEffect(() => {\n if (!commandsOpen()) return;\n let disposed = false;\n const measure = () => {\n if (disposed || !commandListRef) return;\n let top = window.visualViewport?.offsetTop ?? 0;\n for (let parent = commandListRef.parentElement; parent; parent = parent.parentElement) {\n if (/(auto|scroll|hidden|clip)/.test(window.getComputedStyle(parent).overflowY)) {\n top = Math.max(top, parent.getBoundingClientRect().top);\n }\n }\n const bottom = commandListRef.parentElement!.getBoundingClientRect().bottom;\n commandListRef.style.setProperty(\"--k2b-chat-command-space\", `${Math.max(40, bottom - top - 8)}px`);\n };\n queueMicrotask(measure);\n window.addEventListener(\"resize\", measure);\n window.addEventListener(\"scroll\", measure, true);\n window.visualViewport?.addEventListener(\"resize\", measure);\n onCleanup(() => {\n disposed = true;\n window.removeEventListener(\"resize\", measure);\n window.removeEventListener(\"scroll\", measure, true);\n window.visualViewport?.removeEventListener(\"resize\", measure);\n });\n });\n createEffect(() => {\n const token = commandQuery();\n setSearchResults([]);\n setSearchError(false);\n if (!token || !props.searchCommands) {\n setSearching(false);\n return;\n }\n const abort = new AbortController();\n setSearching(true);\n const timer = setTimeout(() => {\n Promise.resolve(props.searchCommands!(token.query, abort.signal))\n .then((results) => {\n if (!abort.signal.aborted) setSearchResults(results);\n })\n .catch(() => {\n if (!abort.signal.aborted) setSearchError(true);\n })\n .finally(() => {\n if (!abort.signal.aborted) setSearching(false);\n });\n }, 120);\n onCleanup(() => {\n clearTimeout(timer);\n abort.abort();\n });\n });\n const history: { value: string; mentions: readonly ChatMention[]; caret: number }[] = [];\n let historyIndex = -1;\n createEffect(() => {\n props.draftKey;\n untrack(() => {\n history.length = 0;\n historyIndex = -1;\n setDismissed(true);\n });\n });\n const snapshot = () => ({ value: props.value, mentions: [...mentions()], caret: textareaRef?.selectionStart ?? 0 });\n const sameMentions = (a: readonly ChatMention[], b: readonly ChatMention[]) =>\n a.length === b.length &&\n a.every((item, index) => item.start === b[index]?.start && item.end === b[index]?.end && item.attachment === b[index]?.attachment);\n const record = () => {\n if (history[historyIndex]?.value !== props.value || !sameMentions(history[historyIndex]?.mentions ?? [], mentions())) {\n history.splice(historyIndex + 1);\n history.push(snapshot());\n let size = history.reduce((total, entry) => total + entry.value.length, 0);\n while (history.length > 2 && size > composerUndoBudgetChars) size -= history.shift()!.value.length;\n historyIndex = history.length - 1;\n }\n };\n const edit = (value: string, nextMentions = reconcileChatMentions(props.value, value, mentions())) => {\n record();\n props.onValueChange(value);\n props.onMentionsChange?.(nextMentions);\n record();\n setDismissed(false);\n };\n const restoreHistory = (direction: -1 | 1) => {\n record();\n const next = history[historyIndex + direction];\n if (!next) return;\n historyIndex += direction;\n props.onValueChange(next.value);\n props.onMentionsChange?.(next.mentions);\n queueMicrotask(() => {\n textareaRef?.setSelectionRange(next.caret, next.caret);\n syncCaret();\n });\n };\n const syncCaret = () => {\n setCaret(textareaRef?.selectionStart ?? props.value.length);\n setSelectionEnd(textareaRef?.selectionEnd ?? props.value.length);\n };\n const selectedCommand = () => commandMatches()[selectedCommandIndex()];\n const blocked = () => Boolean(props.disabled || stopping() || state() === \"submitting\" || executing() || addingFiles() || submitting());\n const hasDraft = () => Boolean(props.value.trim() || (!running() && attachments().length > 0));\n const canSubmit = () => !blocked() && hasDraft() && !(running() && runningSubmitIntent() === \"steer\" && mentions().length);\n const canSelectFiles = () => Boolean(props.fileSelection && !props.fileSelection.disabled && !running() && !blocked());\n const hasAddMenu = () => Boolean(props.fileSelection || props.menuActions?.length);\n const hasContextUsage = () => {\n if (props.contextPopupAction) return true;\n const context = props.contextUsage;\n if (!context || typeof context.contextWindow !== \"number\" || !Number.isFinite(context.contextWindow) || context.contextWindow <= 0) {\n return false;\n }\n return [context.usage?.total, context.usage?.input, context.usage?.output].some(\n (value) => typeof value === \"number\" && Number.isFinite(value) && value >= 0,\n );\n };\n\n const menuItems = (): readonly DropdownItemData[] => {\n const items: DropdownItemData[] = [];\n if (props.fileSelection) {\n items.push({\n icon: addingFiles() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-paperclip\",\n label: props.fileSelection.label ?? messages().attachFiles,\n disabled: !canSelectFiles(),\n action: () => fileInputRef?.click(),\n });\n }\n for (const action of props.menuActions ?? []) {\n items.push({\n icon: action.icon,\n label: action.label,\n variant: action.variant,\n disabled: action.disabled,\n action: () => reportChatFailure(() => executeChatAction(action), props.onError),\n });\n }\n return items;\n };\n\n const autoResize = () => {\n if (!textareaRef) return;\n textareaRef.style.height = \"auto\";\n textareaRef.style.height = `${Math.min(textareaRef.scrollHeight, composerMaxInputHeight)}px`;\n };\n\n const focus = () => textareaRef?.focus();\n\n onMount(() => {\n autoResize();\n if (props.focusToken !== undefined) focus();\n });\n\n createEffect(() => {\n commandMatches();\n setSelectedCommandIndex(0);\n });\n\n createEffect(() => {\n const index = selectedCommandIndex();\n commandMatches();\n queueMicrotask(() => {\n const list = commandListRef;\n const item = list?.querySelector<HTMLElement>(`[id=\"${commandListId}-${index}\"]`);\n if (!list || !item?.isConnected) return;\n if (item.offsetTop < list.scrollTop) list.scrollTop = item.offsetTop;\n else if (item.offsetTop + item.offsetHeight > list.scrollTop + list.clientHeight) {\n list.scrollTop = item.offsetTop + item.offsetHeight - list.clientHeight;\n }\n });\n });\n\n createEffect(() => {\n props.value;\n queueMicrotask(autoResize);\n });\n\n createEffect(() => {\n props.focusToken;\n if (props.focusToken !== undefined) queueMicrotask(focus);\n });\n\n createEffect(() => {\n const active = running();\n if (sawRunning && !active && !props.disabled && typeof document !== \"undefined\") {\n const focused = document.activeElement as HTMLElement | null;\n const insideComposer = Boolean(focused && composerRef?.contains(focused));\n const editingElsewhere = Boolean(\n focused &&\n focused !== document.body &&\n !insideComposer &&\n (focused.matches(\"input, textarea, select\") || focused.isContentEditable || focused.closest(\"[role='dialog'], [popover]\")),\n );\n if (!editingElsewhere) queueMicrotask(focus);\n }\n sawRunning = active;\n });\n\n const setAttachments = (next: readonly ChatAttachment[]) => props.onAttachmentsChange?.(next);\n\n const renderAttachmentCopy = (attachment: ChatAttachment) => (\n <span>\n <strong title={attachment.name}>{attachment.name}</strong>\n </span>\n );\n\n const runFiles = async (files: FileList | readonly File[]) => {\n if (!canSelectFiles()) return;\n const selected = Array.from(files);\n if (selected.length === 0) return;\n setAddingFiles(true);\n try {\n await props.fileSelection?.onSelect(selected);\n } catch (error) {\n (props.fileSelection?.onError ?? props.onError)?.(error);\n } finally {\n setAddingFiles(false);\n if (fileInputRef) fileInputRef.value = \"\";\n queueMicrotask(focus);\n }\n };\n\n const submit = async () => {\n if (!canSubmit()) return;\n const intent = running() ? runningSubmitIntent() : \"send\";\n const previousValue = props.value;\n const previousAttachments = attachments();\n const previousMentions = mentions();\n const input: ChatSubmitInput = {\n intent,\n text: previousValue,\n mentions: previousMentions,\n attachments: intent !== \"steer\" ? previousAttachments : [],\n };\n\n setSubmitting(true);\n try {\n await runChatSubmission({\n clear: () => {\n props.onValueChange(\"\");\n props.onMentionsChange?.([]);\n if (intent !== \"steer\") setAttachments([]);\n },\n perform: () => props.onSubmit(input),\n restore: () => {\n props.onValueChange(previousValue);\n props.onMentionsChange?.(previousMentions);\n if (intent !== \"steer\") setAttachments(previousAttachments);\n },\n onError: props.onError,\n });\n } finally {\n setSubmitting(false);\n queueMicrotask(() => {\n autoResize();\n focus();\n });\n }\n };\n\n const executeCommand = async (command: ChatCommand) => {\n const token = commandQuery();\n if (!token || command.disabled || blocked()) return;\n const previous = snapshot();\n const key = props.draftKey;\n const replacement = command.mention ? command.mention.name + \" \" : \"\";\n const nextValue = props.value.slice(0, token.start) + replacement + props.value.slice(token.end);\n const nextMentions = reconcileChatMentions(props.value, nextValue, mentions());\n if (command.mention)\n nextMentions.push({ start: token.start, end: token.start + command.mention.name.length, attachment: command.mention });\n edit(nextValue, nextMentions);\n setDismissed(true);\n setExecuting(true);\n let submitRequested = false;\n try {\n await command.action?.({\n setValue: (value) => edit(value),\n submit: () => {\n submitRequested = true;\n },\n focus,\n });\n } catch (error) {\n submitRequested = false;\n if (props.draftKey === key && props.value === nextValue) {\n props.onValueChange(previous.value);\n props.onMentionsChange?.(previous.mentions);\n }\n props.onError?.(error);\n } finally {\n setExecuting(false);\n }\n if (submitRequested && props.draftKey === key) await submit();\n queueMicrotask(() => {\n if (props.draftKey !== key) return;\n textareaRef?.setSelectionRange(token.start + replacement.length, token.start + replacement.length);\n syncCaret();\n autoResize();\n focus();\n });\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing || composing()) return;\n if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === \"z\") {\n event.preventDefault();\n restoreHistory(event.shiftKey ? 1 : -1);\n return;\n }\n const matches = commandMatches();\n if (commandsOpen()) {\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n setSelectedCommandIndex((index) => nextChatCommandIndex(index, matches.length, event.key === \"ArrowUp\" ? -1 : 1));\n return;\n }\n if ((event.key === \"Enter\" || event.key === \"Tab\") && matches.length > 0) {\n event.preventDefault();\n const command = selectedCommand();\n if (command) void executeCommand(command);\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n setDismissed(true);\n return;\n }\n }\n if (event.key === \"Enter\" && !event.shiftKey && !event.isComposing) {\n event.preventDefault();\n void submit();\n }\n };\n\n return (\n <div class=\"k2b-chat-composer-shell\">\n <Show when={commandsOpen() || hasAccessory()}>\n <div class=\"k2b-chat-composer-slot\">\n <div style={{ visibility: commandsOpen() ? \"hidden\" : undefined }} inert={commandsOpen()}>\n {accessory()}\n </div>\n <Show when={commandsOpen()}>\n <div class=\"k2b-chat-composer-accessory\">\n <div\n ref={commandListRef}\n id={commandListId}\n class=\"k2b-chat-composer__commands\"\n role=\"listbox\"\n aria-label={messages().commands}\n >\n <For each={commandMatches()}>\n {(command, index) => (\n <button\n id={`${commandListId}-${index()}`}\n type=\"button\"\n role=\"option\"\n tabIndex={-1}\n aria-selected={index() === selectedCommandIndex()}\n aria-disabled={command.disabled}\n data-active={index() === selectedCommandIndex() ? \"true\" : undefined}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => void executeCommand(command)}\n >\n <i class={command.icon ?? \"ti ti-slash\"} aria-hidden=\"true\" />\n <strong>{command.label ?? `/${command.name}`}</strong>\n <small>{command.description}</small>\n </button>\n )}\n </For>\n <Show when={searching()}>\n <div role=\"status\" class=\"k2b-chat-composer__loading\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <strong>{messages().loading}</strong>\n </div>\n </Show>\n <Show when={searchError()}>\n <div role=\"status\">\n <i class=\"ti ti-alert-circle\" /> {messages().error}\n </div>\n </Show>\n <Show when={!searching() && !searchError() && commandMatches().length === 0}>\n <div role=\"status\">{messages().noResults}</div>\n </Show>\n </div>\n </div>\n </Show>\n </div>\n </Show>\n <section\n ref={composerRef}\n class={`k2b-chat-composer ${props.class ?? \"\"}`}\n data-running={running() ? \"true\" : undefined}\n data-drag-active={dragActive() ? \"true\" : undefined}\n role=\"group\"\n aria-label={props.label ?? messages().messageComposer}\n >\n <Show when={attachments().length > 0}>\n <div class=\"k2b-chat-composer__attachments\" role=\"list\" aria-label={messages().attachments} tabIndex={0}>\n <For each={attachments()}>\n {(attachment) => (\n <div class=\"k2b-chat-composer__attachment\" role=\"listitem\">\n <div\n class=\"k2b-chat-composer__attachment-content\"\n classList={{ \"k2b-chat-composer__attachment-content--action\": Boolean(attachment.action) }}\n >\n <Show\n when={attachment.href}\n fallback={\n <div class=\"k2b-chat-composer__attachment-identity\">\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? \"\"} />\n </Show>\n {renderAttachmentCopy(attachment)}\n </div>\n }\n >\n {(href) => (\n <a\n class=\"k2b-chat-composer__attachment-link\"\n href={href()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={messages().openInNewTab({ name: attachment.name })}\n >\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? \"\"} />\n </Show>\n {renderAttachmentCopy(attachment)}\n </a>\n )}\n </Show>\n <Show when={attachment.action}>\n {(action) => (\n <button\n type=\"button\"\n class=\"k2b-chat-composer__attachment-action\"\n disabled={blocked() || action().disabled}\n onClick={() => reportChatFailure(() => executeChatAction(action()), props.onError)}\n >\n <Show when={action().icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n {action().label}\n </button>\n )}\n </Show>\n </div>\n <Show when={props.onAttachmentsChange}>\n <button\n type=\"button\"\n class=\"k2b-chat-composer__attachment-remove\"\n aria-label={messages().removeNamed({ name: attachment.name })}\n disabled={blocked()}\n onClick={() => setAttachments(attachments().filter((candidate) => candidate.id !== attachment.id))}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n )}\n </For>\n </div>\n </Show>\n\n <div\n class=\"k2b-chat-composer__input\"\n role=\"group\"\n aria-label={messages().messageInput}\n onDragEnter={(event) => {\n if (!canSelectFiles() || !event.dataTransfer?.types.includes(\"Files\")) return;\n event.preventDefault();\n setDragActive(true);\n }}\n onDragOver={(event) => {\n if (!canSelectFiles() || !event.dataTransfer?.types.includes(\"Files\")) return;\n event.preventDefault();\n setDragActive(true);\n }}\n onDragLeave={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setDragActive(false);\n }}\n onDrop={(event) => {\n if (!event.dataTransfer?.types.includes(\"Files\")) return;\n event.preventDefault();\n setDragActive(false);\n if (canSelectFiles() && event.dataTransfer.files.length) void runFiles(event.dataTransfer.files);\n }}\n >\n <Show when={dragActive()}>\n <div class=\"k2b-chat-composer__drop\" aria-hidden=\"true\">\n {messages().dropFilesToAttach}\n </div>\n </Show>\n <Show when={mentions().length > 0}>\n <div ref={highlightRef} class=\"k2b-chat-composer__highlight\" aria-hidden=\"true\">\n <For each={chatMentionSegments(props.value, mentions())}>\n {(part) => <span classList={{ \"k2b-chat-composer__mention\": Boolean(part.mention) }}>{part.text}</span>}\n </For>\n {\"\\n\"}\n </div>\n </Show>\n {/* biome-ignore lint/a11y/useAriaPropsSupportedByRole: popup attributes are conditional with the combobox role */}\n <textarea\n ref={textareaRef}\n classList={{ \"k2b-chat-composer__textarea--highlighted\": mentions().length > 0 }}\n rows={1}\n value={props.value}\n disabled={blocked()}\n placeholder={props.placeholder ?? (running() ? messages().addGuidance : messages().writeMessage)}\n aria-label={props.inputLabel ?? messages().message}\n role={commandsOpen() ? \"combobox\" : undefined}\n aria-autocomplete={commandsOpen() ? \"list\" : undefined}\n aria-controls={commandsOpen() ? commandListId : undefined}\n aria-expanded={commandsOpen() ? \"true\" : undefined}\n aria-activedescendant={selectedCommand() ? `${commandListId}-${selectedCommandIndex()}` : undefined}\n onInput={(event) => {\n edit(event.currentTarget.value);\n syncCaret();\n autoResize();\n }}\n onPaste={(event) => {\n const clipboardData = event.clipboardData;\n if (canSelectFiles() && clipboardData?.files.length) {\n event.preventDefault();\n void runFiles(clipboardData.files);\n return;\n }\n props.onPaste?.(event);\n }}\n onSelect={syncCaret}\n onBlur={() => setDismissed(true)}\n onClick={() => {\n setDismissed(false);\n syncCaret();\n }}\n onKeyUp={syncCaret}\n onCompositionStart={() => setComposing(true)}\n onCompositionEnd={() => {\n setComposing(false);\n syncCaret();\n }}\n onScroll={() => {\n if (highlightRef && textareaRef) highlightRef.scrollTop = textareaRef.scrollTop;\n }}\n onBeforeInput={(event) => {\n if (event.inputType === \"historyUndo\" || event.inputType === \"historyRedo\") {\n event.preventDefault();\n restoreHistory(event.inputType === \"historyUndo\" ? -1 : 1);\n }\n }}\n onKeyDown={onKeyDown}\n />\n </div>\n\n <Show when={props.error}>\n <div class=\"k2b-chat-composer__error\" role=\"alert\">\n <i class=\"ti ti-alert-circle\" aria-hidden=\"true\" />\n {props.error}\n </div>\n </Show>\n\n <footer class=\"k2b-chat-composer__footer\">\n <Show\n when={props.footerContent}\n fallback={\n <>\n <div class=\"k2b-chat-composer__tools\">\n {props.footerTools}\n <Show when={hasAddMenu()}>\n <Dropdown.Root position=\"top-right\" width=\"12rem\" label={messages().addToChat} items={menuItems()} disabled={blocked()}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-chat-composer__icon-action\"\n label={messages().addToChat}\n title={messages().addToChat}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n <Show when={props.fileSelection}>\n <input\n ref={fileInputRef}\n class=\"k2b-sr-only\"\n type=\"file\"\n tabIndex={-1}\n aria-hidden=\"true\"\n accept={props.fileSelection?.accept}\n multiple={props.fileSelection?.multiple ?? true}\n onChange={(event) => {\n if (event.currentTarget.files?.length) void runFiles(event.currentTarget.files);\n }}\n />\n </Show>\n <Show when={(props.models?.length ?? 0) > 0}>\n <SelectChip\n aria-label={messages().chooseModel}\n position=\"top-right\"\n class=\"k2b-chat-composer__model\"\n menuWidth=\"15rem\"\n placeholder={messages().model}\n value={() => props.selectedModelId ?? \"\"}\n options={(props.models ?? []).map((model) => ({\n value: model.id,\n label: model.label,\n description: model.description,\n icon: model.icon,\n image: model.image,\n }))}\n disabled={blocked() || running() || !props.onModelChange}\n onValueChange={(modelId) => {\n props.onModelChange?.(modelId);\n queueMicrotask(focus);\n }}\n />\n </Show>\n {props.modelDetails}\n </div>\n\n <div class=\"k2b-chat-composer__submit\">\n <For each={props.contextActions}>\n {(action) => (\n <button\n type=\"button\"\n class=\"k2b-chat-composer__icon-action\"\n data-tone={action.variant === \"danger\" ? \"danger\" : undefined}\n disabled={action.disabled}\n aria-pressed={action.pressed}\n aria-label={action.label}\n title={action.label}\n onClick={() => reportChatFailure(() => executeChatAction(action), props.onError)}\n >\n <i class={action.icon ?? \"ti ti-dots\"} aria-hidden=\"true\" />\n </button>\n )}\n </For>\n <Show when={hasContextUsage() ? (props.contextUsage ?? {}) : undefined}>\n {(usage) => <ContextUsage {...usage()} action={props.contextPopupAction} onActionError={props.onError} />}\n </Show>\n {props.submitTools}\n <Show\n when={running() && !hasDraft() && props.onStop}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-chat-composer__send\"\n disabled={!canSubmit()}\n aria-label={\n submitting()\n ? running()\n ? runningSubmitIntent() === \"queue\"\n ? messages().queueing\n : messages().steering\n : messages().sending\n : running()\n ? runningSubmitIntent() === \"queue\"\n ? messages().queueMessage\n : messages().steerResponse\n : messages().sendMessage\n }\n title={\n running()\n ? runningSubmitIntent() === \"queue\"\n ? messages().queueMessage\n : messages().steerResponse\n : messages().sendMessage\n }\n onClick={() => void submit()}\n >\n <i class={submitting() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-arrow-up\"} aria-hidden=\"true\" />\n </button>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-chat-composer__stop\"\n disabled={stopping()}\n aria-label={stopping() ? messages().stopping : messages().stopResponse}\n title={stopping() ? messages().stopping : messages().stopResponse}\n onClick={() => reportChatFailure(() => props.onStop?.(), props.onError)}\n >\n <i class={stopping() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-player-stop\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </>\n }\n >\n {(content) => content()}\n </Show>\n </footer>\n </section>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["createSignal","createUniqueId","onCleanup","onMount","splitProps","positionTooltipSurface","ChatContextPopup","props","local","rest","id","open","setOpen","pinned","trigger","surface","timer","clear","clearTimeout","undefined","position","show","showPopover","close","restoreFocus","hidePopover","focus","preview","event","pointerType","setTimeout","leave","contains","document","activeElement","resize","ResizeObserver","observe","outside","path","composedPath","includes","escape","key","preventDefault","stopPropagation","Boolean","addEventListener","window","disconnect","removeEventListener","_$ssrElement","_$mergeProps","type","aria-expanded","_$escape","children","_$ssr","_tmpl$","_$ssrAttribute","content"],"sources":["chat/ChatContextPopup.tsx"],"sourcesContent":["import { createSignal, createUniqueId, type JSX, onCleanup, onMount, splitProps } from \"solid-js\";\nimport { positionTooltipSurface } from \"../feedback/tooltip-position\";\n\nexport type ChatContextPopupProps = Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"content\" | \"ref\" | \"onClick\" | \"onPointerEnter\" | \"onPointerLeave\"> & { content: JSX.Element };\n\n/** Context details support hover preview and deliberate click-to-pin without changing tooltip behavior. */\nexport function ChatContextPopup(props: ChatContextPopupProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"content\", \"children\"]);\n const id = `chat-context-${createUniqueId()}`;\n const [open, setOpen] = createSignal(false);\n let pinned = false;\n let trigger: HTMLButtonElement | undefined;\n let surface: HTMLDivElement | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const clear = () => {\n clearTimeout(timer);\n timer = undefined;\n };\n const position = () => {\n if (open() && surface && trigger) positionTooltipSurface(surface, trigger, \"top\");\n };\n const show = () => {\n clear();\n if (!surface || open()) return;\n surface.showPopover();\n setOpen(true);\n position();\n };\n const close = (restoreFocus = false) => {\n clear();\n pinned = false;\n if (open()) surface?.hidePopover();\n setOpen(false);\n if (restoreFocus) trigger?.focus();\n };\n const preview = (event: PointerEvent) => {\n clear();\n if (event.pointerType !== \"touch\" && !open()) timer = setTimeout(show, 250);\n };\n const leave = () => {\n clear();\n timer = setTimeout(() => {\n if (!pinned && !surface?.contains(document.activeElement)) close();\n }, 180);\n };\n onMount(() => {\n const resize = new ResizeObserver(position);\n if (surface) resize.observe(surface);\n const outside = (event: PointerEvent) => {\n const path = event.composedPath();\n if (!path.includes(trigger!) && !path.includes(surface!)) close();\n };\n const escape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && open()) {\n event.preventDefault();\n event.stopPropagation();\n close(Boolean(surface?.contains(document.activeElement)));\n }\n };\n document.addEventListener(\"pointerdown\", outside);\n document.addEventListener(\"keydown\", escape);\n window.addEventListener(\"resize\", position);\n window.addEventListener(\"scroll\", position, true);\n onCleanup(() => {\n resize.disconnect();\n clear();\n document.removeEventListener(\"pointerdown\", outside);\n document.removeEventListener(\"keydown\", escape);\n window.removeEventListener(\"resize\", position);\n window.removeEventListener(\"scroll\", position, true);\n });\n });\n return (\n <>\n <button\n type=\"button\"\n {...rest}\n ref={trigger}\n aria-expanded={open()}\n aria-controls={id}\n aria-haspopup=\"dialog\"\n onPointerEnter={preview}\n onPointerLeave={leave}\n onClick={() => {\n if (pinned) close();\n else {\n pinned = true;\n show();\n }\n }}\n >\n {local.children}\n </button>\n <div\n ref={surface}\n id={id}\n popover=\"manual\"\n role=\"dialog\"\n aria-label={props[\"aria-label\"]}\n class=\"k2b-chat-context-popup\"\n onPointerEnter={clear}\n onPointerLeave={leave}\n onFocusIn={clear}\n onFocusOut={(event) => {\n const next = event.relatedTarget;\n if (!(next instanceof Node) || (!surface?.contains(next) && next !== trigger)) close();\n }}\n >\n {local.content}\n </div>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createSignal","createUniqueId","onCleanup","onMount","splitProps","positionTooltipSurface","ChatContextPopup","props","local","rest","id","open","setOpen","pinned","trigger","surface","timer","clear","clearTimeout","undefined","position","show","showPopover","close","restoreFocus","hidePopover","focus","preview","event","pointerType","setTimeout","leave","contains","document","activeElement","resize","ResizeObserver","observe","outside","path","composedPath","includes","escape","key","preventDefault","stopPropagation","Boolean","addEventListener","window","disconnect","removeEventListener","_$ssrElement","_$mergeProps","type","aria-expanded","_$escape","children","_$ssr","_tmpl$","_$ssrAttribute","content"],"sources":["chat/ChatContextPopup.tsx"],"sourcesContent":["import { createSignal, createUniqueId, type JSX, onCleanup, onMount, splitProps } from \"solid-js\";\nimport { positionTooltipSurface } from \"../feedback/tooltip-position\";\n\nexport type ChatContextPopupProps = Omit<\n JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n \"content\" | \"ref\" | \"onClick\" | \"onPointerEnter\" | \"onPointerLeave\"\n> & { content: JSX.Element };\n\n/** Context details support hover preview and deliberate click-to-pin without changing tooltip behavior. */\nexport function ChatContextPopup(props: ChatContextPopupProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"content\", \"children\"]);\n const id = `chat-context-${createUniqueId()}`;\n const [open, setOpen] = createSignal(false);\n let pinned = false;\n let trigger: HTMLButtonElement | undefined;\n let surface: HTMLDivElement | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const clear = () => {\n clearTimeout(timer);\n timer = undefined;\n };\n const position = () => {\n if (open() && surface && trigger) positionTooltipSurface(surface, trigger, \"top\");\n };\n const show = () => {\n clear();\n if (!surface || open()) return;\n surface.showPopover();\n setOpen(true);\n position();\n };\n const close = (restoreFocus = false) => {\n clear();\n pinned = false;\n if (open()) surface?.hidePopover();\n setOpen(false);\n if (restoreFocus) trigger?.focus();\n };\n const preview = (event: PointerEvent) => {\n clear();\n if (event.pointerType !== \"touch\" && !open()) timer = setTimeout(show, 250);\n };\n const leave = () => {\n clear();\n timer = setTimeout(() => {\n if (!pinned && !surface?.contains(document.activeElement)) close();\n }, 180);\n };\n onMount(() => {\n const resize = new ResizeObserver(position);\n if (surface) resize.observe(surface);\n const outside = (event: PointerEvent) => {\n const path = event.composedPath();\n if (!path.includes(trigger!) && !path.includes(surface!)) close();\n };\n const escape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && open()) {\n event.preventDefault();\n event.stopPropagation();\n close(Boolean(surface?.contains(document.activeElement)));\n }\n };\n document.addEventListener(\"pointerdown\", outside);\n document.addEventListener(\"keydown\", escape);\n window.addEventListener(\"resize\", position);\n window.addEventListener(\"scroll\", position, true);\n onCleanup(() => {\n resize.disconnect();\n clear();\n document.removeEventListener(\"pointerdown\", outside);\n document.removeEventListener(\"keydown\", escape);\n window.removeEventListener(\"resize\", position);\n window.removeEventListener(\"scroll\", position, true);\n });\n });\n return (\n <>\n <button\n type=\"button\"\n {...rest}\n ref={trigger}\n aria-expanded={open()}\n aria-controls={id}\n aria-haspopup=\"dialog\"\n onPointerEnter={preview}\n onPointerLeave={leave}\n onClick={() => {\n if (pinned) close();\n else {\n pinned = true;\n show();\n }\n }}\n >\n {local.children}\n </button>\n <div\n ref={surface}\n id={id}\n popover=\"manual\"\n role=\"dialog\"\n aria-label={props[\"aria-label\"]}\n class=\"k2b-chat-context-popup\"\n onPointerEnter={clear}\n onPointerLeave={leave}\n onFocusIn={clear}\n onFocusOut={(event) => {\n const next = event.relatedTarget;\n if (!(next instanceof Node) || (!surface?.contains(next) && next !== trigger)) close();\n }}\n >\n {local.content}\n </div>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}