@qodalis/vue-cli 2.0.0-beta.9 → 2.0.0-rc.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.
- package/README.md +227 -19
- package/dist/index.d.mts +85 -51
- package/dist/index.d.ts +85 -51
- package/dist/index.js +354 -853
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +392 -866
- package/dist/index.mjs.map +1 -1
- package/dist/package.json +7 -6
- package/dist/styles.css +8 -0
- package/package.json +7 -6
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Cli.ts","../src/cliInjection.ts","../src/CliConfigProvider.ts","../src/CliPanel.ts","../src/CliProvider.ts","../src/useCliEngine.ts","../src/useCli.ts","../src/index.ts"],"sourcesContent":["import {\n defineComponent,\n ref,\n onMounted,\n onBeforeUnmount,\n PropType,\n h,\n inject,\n} from 'vue';\nimport { ICliCommandProcessor, ICliModule, CliEngineSnapshot } from '@qodalis/cli-core';\nimport { CliEngine, CliEngineOptions } from '@qodalis/cli';\nimport { CliInjectionKey } from './cliInjection';\nimport { CliConfigKey } from './CliConfigProvider';\n\n/**\n * Props accepted by the Vue `Cli` component.\n */\nexport interface CliProps {\n modules?: ICliModule[];\n processors?: ICliCommandProcessor[];\n options?: CliEngineOptions;\n services?: Record<string, any>;\n snapshot?: CliEngineSnapshot;\n style?: Record<string, string>;\n class?: string;\n}\n\nexport const Cli = defineComponent({\n name: 'Cli',\n props: {\n modules: {\n type: Array as PropType<ICliModule[]>,\n default: undefined,\n },\n processors: {\n type: Array as PropType<ICliCommandProcessor[]>,\n default: undefined,\n },\n options: {\n type: Object as PropType<CliEngineOptions>,\n default: undefined,\n },\n services: {\n type: Object as PropType<Record<string, any>>,\n default: undefined,\n },\n snapshot: {\n type: Object as PropType<CliEngineSnapshot>,\n default: undefined,\n },\n style: {\n type: Object as PropType<Record<string, string>>,\n default: undefined,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n emits: ['ready'],\n setup(props, { emit }) {\n const containerRef = ref<HTMLElement | null>(null);\n const ctx = inject(CliInjectionKey, null);\n const config = inject(CliConfigKey, null);\n let engine: CliEngine | null = null;\n\n // If inside a CliProvider, don't create our own engine\n if (ctx) {\n return () => null;\n }\n\n // Merge: local props override config context\n const modules = props.modules ?? config?.modules;\n const processors = props.processors ?? config?.processors;\n const options = props.options ?? config?.options;\n const services = props.services ?? config?.services;\n\n onMounted(async () => {\n if (!containerRef.value) return;\n\n const engineOptions = props.snapshot\n ? { ...options, snapshot: props.snapshot }\n : options;\n engine = new CliEngine(containerRef.value, engineOptions);\n\n engine.registerService('cli-framework', 'Vue');\n\n if (services) {\n for (const [token, value] of Object.entries(services)) {\n engine.registerService(token, value);\n }\n }\n\n if (modules) {\n engine.registerModules(modules);\n }\n\n if (processors) {\n engine.registerProcessors(processors);\n }\n\n await engine.start();\n emit('ready', engine);\n });\n\n onBeforeUnmount(() => {\n engine?.destroy();\n engine = null;\n });\n\n return () =>\n h('div', {\n ref: containerRef,\n style: { height: '100%', ...props.style },\n class: props.class,\n });\n },\n});\n","import { InjectionKey, Ref } from 'vue';\nimport { CliEngine } from '@qodalis/cli';\n\nexport interface CliContextValue {\n engine: Ref<CliEngine | null>;\n}\n\nexport const CliInjectionKey: InjectionKey<CliContextValue> =\n Symbol('qodalis-cli');\n","import { defineComponent, provide, PropType, InjectionKey } from 'vue';\nimport { ICliCommandProcessor, ICliModule } from '@qodalis/cli-core';\nimport { CliEngineOptions } from '@qodalis/cli';\n\nexport interface CliConfigValue {\n modules?: ICliModule[];\n processors?: ICliCommandProcessor[];\n options?: CliEngineOptions;\n services?: Record<string, any>;\n}\n\nexport const CliConfigKey: InjectionKey<CliConfigValue> =\n Symbol('qodalis-cli-config');\n\nexport const CliConfigProvider = defineComponent({\n name: 'CliConfigProvider',\n props: {\n modules: {\n type: Array as PropType<ICliModule[]>,\n default: undefined,\n },\n processors: {\n type: Array as PropType<ICliCommandProcessor[]>,\n default: undefined,\n },\n options: {\n type: Object as PropType<CliEngineOptions>,\n default: undefined,\n },\n services: {\n type: Object as PropType<Record<string, any>>,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n provide(CliConfigKey, {\n modules: props.modules,\n processors: props.processors,\n options: props.options,\n services: props.services,\n });\n\n return () => slots.default?.();\n },\n});\n","import {\n defineComponent,\n ref,\n computed,\n inject,\n PropType,\n h,\n onMounted,\n onBeforeUnmount,\n} from 'vue';\nimport { ICliCommandProcessor, ICliModule, CliPanelConfig, CliPanelPosition, CliPanelHideAlignment, CliEngineSnapshot, derivePanelThemeStyles, loadPanelPosition, savePanelPosition } from '@qodalis/cli-core';\nimport { CliEngine, CliEngineOptions } from '@qodalis/cli';\nimport { Cli } from './Cli';\nimport { CliConfigKey } from './CliConfigProvider';\n\nexport interface CliPanelOptions extends CliEngineOptions, CliPanelConfig {}\n\ninterface TerminalPane {\n id: number;\n widthPercent: number;\n snapshot?: CliEngineSnapshot;\n}\n\ninterface TerminalTab {\n id: number;\n title: string;\n isEditing: boolean;\n panes: TerminalPane[];\n}\n\ninterface TabContextMenu {\n visible: boolean;\n x: number;\n y: number;\n tabId: number;\n}\n\nconst MIN_PANE_WIDTH_PERCENT = 10;\n\nfunction normalizePanes(panes: TerminalPane[]) {\n const total = panes.reduce((s, p) => s + p.widthPercent, 0);\n if (total === 0) return;\n const scale = 100 / total;\n panes.forEach((p) => {\n p.widthPercent *= scale;\n });\n}\n\n/* ─── SVG helpers ────────────────────────────────────────── */\n\nconst svgAttrs = {\n width: '20',\n height: '20',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': '1.8',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n};\n\nconst terminalIcon = () =>\n h('svg', { ...svgAttrs, width: '22', height: '22', 'stroke-width': '2' }, [\n h('polyline', { points: '4 17 10 11 4 5' }),\n h('line', { x1: '12', y1: '19', x2: '20', y2: '19' }),\n ]);\nconst maximizeIcon = () =>\n h('svg', svgAttrs, [\n h('polyline', { points: '15 3 21 3 21 9' }),\n h('polyline', { points: '9 21 3 21 3 15' }),\n h('line', { x1: '21', y1: '3', x2: '14', y2: '10' }),\n h('line', { x1: '3', y1: '21', x2: '10', y2: '14' }),\n ]);\nconst restoreIcon = () =>\n h('svg', svgAttrs, [\n h('polyline', { points: '4 14 10 14 10 20' }),\n h('polyline', { points: '20 10 14 10 14 4' }),\n h('line', { x1: '14', y1: '10', x2: '21', y2: '3' }),\n h('line', { x1: '3', y1: '21', x2: '10', y2: '14' }),\n ]);\nconst closeIcon = () =>\n h('svg', svgAttrs, [\n h('line', { x1: '18', y1: '6', x2: '6', y2: '18' }),\n h('line', { x1: '6', y1: '6', x2: '18', y2: '18' }),\n ]);\nconst hideIcon = () =>\n h('svg', svgAttrs, [\n h('line', { x1: '5', y1: '18', x2: '19', y2: '18' }),\n h('polyline', { points: '9 14 12 17 15 14' }),\n ]);\n\nfunction collapseChevron(position: CliPanelPosition, isCollapsed: boolean) {\n let points: string;\n switch (position) {\n case 'top':\n points = isCollapsed ? '6 9 12 15 18 9' : '18 15 12 9 6 15';\n break;\n case 'left':\n points = isCollapsed ? '9 18 15 12 9 6' : '15 6 9 12 15 18';\n break;\n case 'right':\n points = isCollapsed ? '15 6 9 12 15 18' : '9 18 15 12 9 6';\n break;\n default: // bottom\n points = isCollapsed ? '18 15 12 9 6 15' : '6 9 12 15 18 9';\n break;\n }\n return h('svg', svgAttrs, [h('polyline', { points })]);\n}\n\nfunction hideTabChevron(position: CliPanelPosition) {\n let points: string;\n switch (position) {\n case 'top': points = '6 9 12 15 18 9'; break;\n case 'left': points = '9 18 15 12 9 6'; break;\n case 'right': points = '15 6 9 12 15 18'; break;\n default: points = '18 15 12 9 6 15'; break;\n }\n return h('svg', { class: 'cli-panel-hide-tab-arrow', ...svgAttrs, width: '14', height: '14', 'stroke-width': '2.5' }, [\n h('polyline', { points }),\n ]);\n}\n\nfunction positionIcon(pos: string, size = 20) {\n let fillRect: any;\n switch (pos) {\n case 'top':\n fillRect = h('rect', { x: '4', y: '4', width: '16', height: '5', rx: '1', fill: 'currentColor', stroke: 'none', opacity: '0.5' });\n break;\n case 'left':\n fillRect = h('rect', { x: '4', y: '4', width: '5', height: '16', rx: '1', fill: 'currentColor', stroke: 'none', opacity: '0.5' });\n break;\n case 'right':\n fillRect = h('rect', { x: '15', y: '4', width: '5', height: '16', rx: '1', fill: 'currentColor', stroke: 'none', opacity: '0.5' });\n break;\n default: // bottom\n fillRect = h('rect', { x: '4', y: '15', width: '16', height: '5', rx: '1', fill: 'currentColor', stroke: 'none', opacity: '0.5' });\n break;\n }\n return h('svg', { ...svgAttrs, width: String(size), height: String(size) }, [\n h('rect', { x: '3', y: '3', width: '18', height: '18', rx: '2' }),\n fillRect,\n ]);\n}\n\n/* ─── Component ──────────────────────────────────────────── */\n\nexport const CliPanel = defineComponent({\n name: 'CliPanel',\n props: {\n options: {\n type: Object as PropType<CliPanelOptions>,\n default: undefined,\n },\n modules: { type: Array as PropType<ICliModule[]>, default: undefined },\n processors: {\n type: Array as PropType<ICliCommandProcessor[]>,\n default: undefined,\n },\n services: {\n type: Object as PropType<Record<string, any>>,\n default: undefined,\n },\n onClose: {\n type: Function as PropType<() => void>,\n default: undefined,\n },\n style: {\n type: Object as PropType<Record<string, string>>,\n default: undefined,\n },\n class: { type: String, default: undefined },\n },\n setup(props) {\n const config = inject(CliConfigKey, null);\n\n // Merge: local props override config context\n const mergedOptions = computed(() => props.options ?? config?.options as CliPanelOptions | undefined);\n const mergedModules = computed(() => props.modules ?? config?.modules);\n const mergedProcessors = computed(() => props.processors ?? config?.processors);\n const mergedServices = computed(() => props.services ?? config?.services);\n\n const visible = ref(true);\n const collapsed = ref(mergedOptions.value?.isCollapsed ?? true);\n const maximized = ref(false);\n const panelHeight = ref(600);\n const panelWidth = ref(400);\n const prevHeight = ref(600);\n const prevWidth = ref(400);\n const initialized = ref(false);\n const hidden = ref(props.options?.isHidden ?? false);\n let preHideCollapsed = true;\n\n const position = ref<CliPanelPosition>(loadPanelPosition() ?? mergedOptions.value?.position ?? 'bottom');\n const closable = computed(() => mergedOptions.value?.closable ?? true);\n const resizable = computed(() => mergedOptions.value?.resizable ?? true);\n const isHorizontal = computed(() => position.value === 'left' || position.value === 'right');\n const hideable = computed(() => mergedOptions.value?.hideable ?? true);\n const hideAlignment = computed<CliPanelHideAlignment>(() => mergedOptions.value?.hideAlignment ?? 'center');\n const syncTheme = computed(() => mergedOptions.value?.syncTheme ?? false);\n const themeStyles = ref<Record<string, string>>({});\n\n const tabs = ref<TerminalTab[]>([]);\n const activeTabId = ref(0);\n const activePaneId = ref(0);\n let nextTabId = 1;\n let nextPaneId = 1;\n\n const contextMenu = ref<TabContextMenu>({\n visible: false,\n x: 0,\n y: 0,\n tabId: 0,\n });\n\n const engineMap = new Map<number, CliEngine>();\n\n const paneResizing = ref(false);\n let paneResizeState = {\n tabId: 0,\n dividerIndex: 0,\n startX: 0,\n startWidths: [] as number[],\n containerWidth: 0,\n };\n\n const panelResizing = ref(false);\n let panelResizeState = { startY: 0, startHeight: 0, startX: 0, startWidth: 0 };\n\n // Terminal height is handled via CSS flex layout (height: 100% default in Cli)\n\n /* ─── Tab management ─────────────────────────────── */\n\n function addTab() {\n const paneId = nextPaneId++;\n const tabId = nextTabId++;\n const pane: TerminalPane = { id: paneId, widthPercent: 100 };\n const tab: TerminalTab = {\n id: tabId,\n title: `Terminal ${tabId}`,\n isEditing: false,\n panes: [pane],\n };\n tabs.value.push(tab);\n activeTabId.value = tabId;\n activePaneId.value = paneId;\n }\n\n let themeObserver: MutationObserver | undefined;\n\n function syncThemeFromEngine() {\n const engine = engineMap.values().next().value;\n if (!engine) return;\n const theme = (engine as CliEngine).getTerminal().options.theme;\n if (theme) themeStyles.value = derivePanelThemeStyles(theme);\n }\n\n function setupThemeSync() {\n if (!syncTheme.value) return;\n setTimeout(() => {\n syncThemeFromEngine();\n const container = document.querySelector('.cli-panel-wrapper .terminal-container');\n if (!container) return;\n themeObserver?.disconnect();\n themeObserver = new MutationObserver(syncThemeFromEngine);\n themeObserver.observe(container, { attributes: true, attributeFilter: ['style'] });\n }, 200);\n }\n\n onMounted(() => {\n document.addEventListener('click', closePositionDropdown);\n });\n\n onBeforeUnmount(() => {\n themeObserver?.disconnect();\n document.removeEventListener('click', closePositionDropdown);\n });\n\n function toggle() {\n collapsed.value = !collapsed.value;\n if (!collapsed.value && !initialized.value) {\n initialized.value = true;\n addTab();\n setupThemeSync();\n }\n }\n\n function closeTab(id: number) {\n const idx = tabs.value.findIndex((t) => t.id === id);\n if (idx === -1) return;\n tabs.value.splice(idx, 1);\n if (tabs.value.length === 0) {\n initialized.value = false;\n collapsed.value = true;\n return;\n }\n if (activeTabId.value === id) {\n const newIdx = Math.min(idx, tabs.value.length - 1);\n selectTab(tabs.value[newIdx].id);\n }\n }\n\n function selectTab(id: number) {\n activeTabId.value = id;\n const tab = tabs.value.find((t) => t.id === id);\n if (tab && tab.panes.length > 0) {\n activePaneId.value = tab.panes[0].id;\n }\n }\n\n /* ─── Split / close pane ─────────────────────────── */\n\n function splitRight(tabId?: number) {\n const tab = tabs.value.find(\n (t) => t.id === (tabId ?? activeTabId.value),\n );\n if (!tab) return;\n const idx = tab.panes.findIndex((p) => p.id === activePaneId.value);\n const insertIdx = idx === -1 ? tab.panes.length : idx + 1;\n const newPaneId = nextPaneId++;\n tab.panes.splice(insertIdx, 0, { id: newPaneId, widthPercent: 0 });\n const evenWidth = 100 / tab.panes.length;\n tab.panes.forEach((p) => {\n p.widthPercent = evenWidth;\n });\n normalizePanes(tab.panes);\n activePaneId.value = newPaneId;\n }\n\n function closePane(tabId: number, paneId: number) {\n const tab = tabs.value.find((t) => t.id === tabId);\n if (!tab) return;\n if (tab.panes.length <= 1) {\n closeTab(tabId);\n return;\n }\n const idx = tab.panes.findIndex((p) => p.id === paneId);\n if (idx === -1) return;\n tab.panes.splice(idx, 1);\n const total = tab.panes.reduce((s, p) => s + p.widthPercent, 0);\n if (total > 0)\n tab.panes.forEach((p) => {\n p.widthPercent = (p.widthPercent / total) * 100;\n });\n normalizePanes(tab.panes);\n if (activePaneId.value === paneId) {\n activePaneId.value =\n tab.panes[Math.min(idx, tab.panes.length - 1)].id;\n }\n }\n\n /* ─── Rename ─────────────────────────────────────── */\n\n function startRename(tabId: number) {\n tabs.value.forEach((t) => {\n t.isEditing = t.id === tabId;\n });\n }\n\n function commitRename(tabId: number, value: string) {\n const trimmed = value.trim();\n const tab = tabs.value.find((t) => t.id === tabId);\n if (tab) {\n if (trimmed) tab.title = trimmed;\n tab.isEditing = false;\n }\n }\n\n /* ─── Context menu ───────────────────────────────── */\n\n function closeContextMenu() {\n contextMenu.value = { ...contextMenu.value, visible: false };\n }\n\n function onDocClick() {\n if (contextMenu.value.visible) closeContextMenu();\n }\n onMounted(() => document.addEventListener('click', onDocClick));\n onBeforeUnmount(() =>\n document.removeEventListener('click', onDocClick),\n );\n\n /* ─── Panel resize ───────────────────────────────── */\n\n function onPanelResizeStart(e: MouseEvent) {\n if (!resizable.value) return;\n e.preventDefault();\n if (collapsed.value) toggle();\n panelResizing.value = true;\n panelResizeState = {\n startY: e.clientY,\n startHeight: panelHeight.value,\n startX: e.clientX,\n startWidth: panelWidth.value,\n };\n }\n\n function onPanelResizeMove(e: MouseEvent) {\n if (!panelResizing.value) return;\n if (isHorizontal.value) {\n const deltaX = position.value === 'left'\n ? e.clientX - panelResizeState.startX\n : panelResizeState.startX - e.clientX;\n let next = Math.max(100, panelResizeState.startWidth + deltaX);\n if (next > window.innerWidth) next = window.innerWidth;\n panelWidth.value = next;\n } else {\n const deltaY = position.value === 'top'\n ? e.clientY - panelResizeState.startY\n : panelResizeState.startY - e.clientY;\n let next = Math.max(100, panelResizeState.startHeight + deltaY);\n if (next > window.innerHeight) next = window.innerHeight;\n panelHeight.value = next;\n }\n }\n\n function onPanelResizeEnd() {\n panelResizing.value = false;\n }\n\n onMounted(() => {\n document.addEventListener('mousemove', onPanelResizeMove);\n document.addEventListener('mouseup', onPanelResizeEnd);\n });\n onBeforeUnmount(() => {\n document.removeEventListener('mousemove', onPanelResizeMove);\n document.removeEventListener('mouseup', onPanelResizeEnd);\n });\n\n /* ─── Pane resize ────────────────────────────────── */\n\n function onPaneResizeStart(\n e: MouseEvent,\n tabId: number,\n dividerIndex: number,\n ) {\n e.preventDefault();\n const tab = tabs.value.find((t) => t.id === tabId);\n if (!tab) return;\n paneResizing.value = true;\n const container = (e.target as HTMLElement).closest(\n '.cli-panel-panes-container',\n );\n paneResizeState = {\n tabId,\n dividerIndex,\n startX: e.clientX,\n startWidths: tab.panes.map((p) => p.widthPercent),\n containerWidth: container ? container.clientWidth : 1,\n };\n document.body.classList.add('cli-pane-resizing');\n }\n\n function onPaneResizeMove(e: MouseEvent) {\n if (!paneResizing.value) return;\n const s = paneResizeState;\n const deltaPct = ((e.clientX - s.startX) / s.containerWidth) * 100;\n const i = s.dividerIndex;\n let leftW = s.startWidths[i] + deltaPct;\n let rightW = s.startWidths[i + 1] - deltaPct;\n if (leftW < MIN_PANE_WIDTH_PERCENT) {\n leftW = MIN_PANE_WIDTH_PERCENT;\n rightW =\n s.startWidths[i] +\n s.startWidths[i + 1] -\n MIN_PANE_WIDTH_PERCENT;\n }\n if (rightW < MIN_PANE_WIDTH_PERCENT) {\n rightW = MIN_PANE_WIDTH_PERCENT;\n leftW =\n s.startWidths[i] +\n s.startWidths[i + 1] -\n MIN_PANE_WIDTH_PERCENT;\n }\n const tab = tabs.value.find((t) => t.id === s.tabId);\n if (tab) {\n tab.panes[i].widthPercent = leftW;\n tab.panes[i + 1].widthPercent = rightW;\n }\n }\n\n function onPaneResizeEnd() {\n if (!paneResizing.value) return;\n paneResizing.value = false;\n document.body.classList.remove('cli-pane-resizing');\n }\n\n onMounted(() => {\n document.addEventListener('mousemove', onPaneResizeMove);\n document.addEventListener('mouseup', onPaneResizeEnd);\n });\n onBeforeUnmount(() => {\n document.removeEventListener('mousemove', onPaneResizeMove);\n document.removeEventListener('mouseup', onPaneResizeEnd);\n });\n\n /* ─── Maximize ───────────────────────────────────── */\n\n function toggleMaximize() {\n if (!maximized.value) {\n if (isHorizontal.value) {\n prevWidth.value = panelWidth.value;\n panelWidth.value = window.innerWidth;\n } else {\n prevHeight.value = panelHeight.value;\n panelHeight.value = window.innerHeight;\n }\n } else {\n if (isHorizontal.value) {\n panelWidth.value = prevWidth.value;\n } else {\n panelHeight.value = prevHeight.value;\n }\n }\n maximized.value = !maximized.value;\n }\n\n /* ─── Close handler ──────────────────────────────── */\n\n function handleClose() {\n visible.value = false;\n props.onClose?.();\n }\n\n function handleHide() {\n preHideCollapsed = collapsed.value;\n hidden.value = true;\n }\n\n function handleUnhide() {\n hidden.value = false;\n collapsed.value = preHideCollapsed;\n }\n\n const positionDropdownOpen = ref(false);\n\n function closePositionDropdown() {\n positionDropdownOpen.value = false;\n }\n\n function togglePositionDropdown(e: MouseEvent) {\n e.stopPropagation();\n positionDropdownOpen.value = !positionDropdownOpen.value;\n }\n\n function selectPosition(pos: CliPanelPosition) {\n positionDropdownOpen.value = false;\n position.value = pos;\n savePanelPosition(pos);\n }\n\n /* ─── Render ─────────────────────────────────────── */\n\n return () => {\n if (!visible.value) return null;\n\n const wrapperClass = [\n 'cli-panel-wrapper',\n collapsed.value && 'collapsed',\n maximized.value && 'maximized',\n panelResizing.value && 'resizing',\n props.class,\n ]\n .filter(Boolean)\n .join(' ');\n\n const wrapperStyle = {\n ...(isHorizontal.value ? { width: `${panelWidth.value}px` } : { height: `${panelHeight.value}px` }),\n ...(hidden.value ? { display: 'none' } : {}),\n ...themeStyles.value,\n ...props.style,\n };\n\n const headerEl = h('div', { class: 'cli-panel-header' }, [\n h(\n 'div',\n {\n class: 'cli-panel-resize-bar',\n onMousedown: onPanelResizeStart,\n },\n [h('div', { class: 'cli-panel-resize-grip' })],\n ),\n h('div', { class: 'cli-panel-header-content' }, [\n h('p', { class: 'cli-panel-title' }, [\n h('span', { class: 'cli-panel-title-icon' }, [\n terminalIcon(),\n ]),\n 'CLI',\n ]),\n h('div', { class: 'cli-panel-action-buttons' }, [\n h('div', {\n class: 'cli-panel-btn-position-wrapper',\n onClick: (e: MouseEvent) => e.stopPropagation(),\n }, [\n h('button', {\n class: 'cli-panel-btn cli-panel-btn-position',\n title: 'Move panel',\n onClick: togglePositionDropdown,\n }, [positionIcon(position.value)]),\n positionDropdownOpen.value\n ? h('div', { class: 'cli-panel-position-dropdown' },\n (['bottom', 'top', 'left', 'right'] as CliPanelPosition[]).map(pos =>\n h('button', {\n class: ['cli-panel-position-dropdown-item', position.value === pos ? 'active' : ''].filter(Boolean).join(' '),\n onClick: () => selectPosition(pos),\n }, [\n positionIcon(pos, 16),\n pos.charAt(0).toUpperCase() + pos.slice(1),\n ]),\n ),\n )\n : null,\n ]),\n hideable.value\n ? h('button', {\n class: 'cli-panel-btn cli-panel-btn-hide',\n title: 'Hide',\n onClick: handleHide,\n }, [hideIcon()])\n : null,\n h(\n 'button',\n {\n class: 'cli-panel-btn',\n title: maximized.value ? 'Restore' : 'Maximize',\n disabled: collapsed.value,\n onClick: toggleMaximize,\n },\n [maximized.value ? restoreIcon() : maximizeIcon()],\n ),\n h(\n 'button',\n {\n class: 'cli-panel-btn',\n title: collapsed.value ? 'Expand' : 'Collapse',\n onClick: toggle,\n },\n [collapseChevron(position.value, collapsed.value)],\n ),\n closable.value\n ? h(\n 'button',\n {\n class: 'cli-panel-btn cli-panel-btn-close',\n title: 'Close',\n onClick: handleClose,\n },\n [closeIcon()],\n )\n : null,\n ]),\n ]),\n ]);\n\n const contentEl =\n initialized.value\n ? h('div', { class: 'cli-panel-content', style: collapsed.value ? { display: 'none' } : undefined }, [\n // Tab bar\n h('div', { class: 'cli-panel-tabs' }, [\n h(\n 'ul',\n { class: 'cli-panel-tab-list' },\n tabs.value.map((tab) =>\n h(\n 'li',\n {\n key: tab.id,\n class: [\n 'cli-panel-tab',\n tab.id ===\n activeTabId.value &&\n 'active',\n ]\n .filter(Boolean)\n .join(' '),\n onClick: () => selectTab(tab.id),\n onDblclick: () =>\n startRename(tab.id),\n onContextmenu: (\n e: MouseEvent,\n ) => {\n e.preventDefault();\n e.stopPropagation();\n contextMenu.value = {\n visible: true,\n x: e.clientX,\n y: e.clientY,\n tabId: tab.id,\n };\n },\n },\n tab.isEditing\n ? [\n h('input', {\n class: 'cli-panel-tab-rename-input',\n type: 'text',\n value: tab.title,\n onKeydown: (\n e: KeyboardEvent,\n ) => {\n if (\n e.key ===\n 'Enter'\n )\n commitRename(\n tab.id,\n (\n e.target as HTMLInputElement\n ).value,\n );\n else if (\n e.key ===\n 'Escape'\n ) {\n tab.isEditing = false;\n }\n },\n onBlur: (\n e: FocusEvent,\n ) =>\n commitRename(\n tab.id,\n (\n e.target as HTMLInputElement\n ).value,\n ),\n onClick: (\n e: MouseEvent,\n ) =>\n e.stopPropagation(),\n onDblclick: (\n e: MouseEvent,\n ) =>\n e.stopPropagation(),\n }),\n ]\n : [\n h(\n 'span',\n {\n class: 'cli-panel-tab-title',\n },\n tab.title,\n ),\n h(\n 'button',\n {\n class: 'cli-panel-tab-close-btn',\n title: 'Close tab',\n onClick: (\n e: MouseEvent,\n ) => {\n e.stopPropagation();\n closeTab(\n tab.id,\n );\n },\n },\n '\\u00d7',\n ),\n ],\n ),\n ),\n ),\n h(\n 'button',\n {\n class: 'cli-panel-add-tab',\n title: 'New terminal',\n onClick: addTab,\n },\n '+',\n ),\n ]),\n // Terminal instances\n h(\n 'div',\n { class: 'cli-panel-instances' },\n tabs.value.map((tab) =>\n h(\n 'div',\n {\n key: tab.id,\n class: 'cli-panel-instance',\n style: {\n display:\n tab.id === activeTabId.value\n ? undefined\n : 'none',\n },\n },\n [\n h(\n 'div',\n {\n class: [\n 'cli-panel-panes-container',\n paneResizing.value &&\n 'resizing',\n ]\n .filter(Boolean)\n .join(' '),\n },\n tab.panes.flatMap((pane, i) => {\n const nodes: any[] = [];\n if (i > 0) {\n nodes.push(\n h(\n 'div',\n {\n class: 'cli-panel-pane-divider',\n onMousedown: (\n e: MouseEvent,\n ) =>\n onPaneResizeStart(\n e,\n tab.id,\n i - 1,\n ),\n },\n [\n h('div', {\n class: 'cli-panel-pane-divider-grip',\n }),\n ],\n ),\n );\n }\n nodes.push(\n h(\n 'div',\n {\n class: [\n 'cli-panel-pane',\n pane.id ===\n activePaneId.value &&\n tab.id ===\n activeTabId.value &&\n 'active-pane',\n ]\n .filter(\n Boolean,\n )\n .join(' '),\n style: {\n flex: `${pane.widthPercent} 1 0`,\n },\n onClick: () => {\n activePaneId.value =\n pane.id;\n activeTabId.value =\n tab.id;\n },\n },\n [\n tab.panes.length >\n 1\n ? h(\n 'button',\n {\n class: 'cli-panel-pane-close-btn',\n title: 'Close pane',\n onClick:\n (\n e: MouseEvent,\n ) => {\n e.stopPropagation();\n closePane(\n tab.id,\n pane.id,\n );\n },\n },\n '\\u00d7',\n )\n : null,\n h(Cli, {\n options:\n mergedOptions.value,\n modules:\n mergedModules.value,\n processors:\n mergedProcessors.value,\n services:\n mergedServices.value,\n snapshot: pane.snapshot,\n style: {\n height: '100%',\n },\n onReady: (engine: CliEngine) => {\n engineMap.set(pane.id, engine);\n },\n }),\n ],\n ),\n );\n return nodes;\n }),\n ),\n ],\n ),\n ),\n ),\n ])\n : null;\n\n const contextMenuEl = contextMenu.value.visible\n ? h(\n 'div',\n {\n class: 'cli-panel-context-menu',\n style: {\n left: `${contextMenu.value.x}px`,\n top: `${contextMenu.value.y}px`,\n },\n onClick: (e: MouseEvent) => e.stopPropagation(),\n },\n [\n h(\n 'button',\n {\n class: 'cli-panel-context-menu-item',\n onClick: () => {\n closeContextMenu();\n startRename(contextMenu.value.tabId);\n },\n },\n 'Rename',\n ),\n h(\n 'button',\n {\n class: 'cli-panel-context-menu-item',\n onClick: () => {\n const tab = tabs.value.find(\n (t) =>\n t.id === contextMenu.value.tabId,\n );\n closeContextMenu();\n if (!tab) return;\n\n const sourceEngine = engineMap.get(tab.panes[0]?.id);\n const snapshot = sourceEngine?.snapshot();\n\n const paneId = nextPaneId++;\n const tabId = nextTabId++;\n const idx = tabs.value.indexOf(tab);\n tabs.value.splice(idx + 1, 0, {\n id: tabId,\n title: `${tab.title} (copy)`,\n isEditing: false,\n panes: [\n { id: paneId, widthPercent: 100, snapshot },\n ],\n });\n activeTabId.value = tabId;\n activePaneId.value = paneId;\n },\n },\n 'Duplicate',\n ),\n h(\n 'button',\n {\n class: 'cli-panel-context-menu-item',\n onClick: () => {\n closeContextMenu();\n splitRight(contextMenu.value.tabId);\n },\n },\n 'Split Right',\n ),\n h('div', {\n class: 'cli-panel-context-menu-separator',\n }),\n h(\n 'button',\n {\n class: 'cli-panel-context-menu-item',\n onClick: () => {\n closeContextMenu();\n closeTab(contextMenu.value.tabId);\n },\n },\n 'Close',\n ),\n h(\n 'button',\n {\n class: 'cli-panel-context-menu-item',\n disabled: tabs.value.length <= 1,\n onClick: () => {\n const id = contextMenu.value.tabId;\n closeContextMenu();\n tabs.value = tabs.value.filter(\n (t) => t.id === id,\n );\n activeTabId.value = id;\n },\n },\n 'Close Others',\n ),\n h(\n 'button',\n {\n class: 'cli-panel-context-menu-item',\n onClick: () => {\n const id = contextMenu.value.tabId;\n closeContextMenu();\n const idx = tabs.value.findIndex(\n (t) => t.id === id,\n );\n if (idx !== -1)\n tabs.value = tabs.value.slice(\n 0,\n idx + 1,\n );\n },\n },\n 'Close to the Right',\n ),\n h('div', {\n class: 'cli-panel-context-menu-separator',\n }),\n h(\n 'button',\n {\n class: 'cli-panel-context-menu-item destructive',\n onClick: () => {\n closeContextMenu();\n tabs.value = [];\n initialized.value = false;\n collapsed.value = true;\n },\n },\n 'Close All',\n ),\n ],\n )\n : null;\n\n const hideTabEl = hidden.value\n ? h('button', {\n class: 'cli-panel-hide-tab',\n 'data-position': position.value,\n 'data-hide-align': hideAlignment.value,\n style: themeStyles.value,\n title: 'Show CLI',\n onClick: handleUnhide,\n }, [\n h('svg', { class: 'cli-panel-hide-tab-icon', ...svgAttrs, width: '16', height: '16', 'stroke-width': '2' }, [\n h('polyline', { points: '4 17 10 11 4 5' }),\n h('line', { x1: '12', y1: '19', x2: '20', y2: '19' }),\n ]),\n h('span', { class: 'cli-panel-hide-tab-label' }, 'CLI'),\n hideTabChevron(position.value),\n ])\n : null;\n\n return h('div', {}, [\n hideTabEl,\n h(\n 'div',\n {\n class: wrapperClass,\n style: wrapperStyle,\n 'data-position': position.value,\n 'data-resizable': String(resizable.value),\n 'data-closable': String(closable.value),\n 'data-hideable': String(hideable.value),\n },\n [headerEl, contentEl],\n ),\n contextMenuEl,\n ]);\n };\n },\n});\n","import { defineComponent, ref, PropType, h, provide } from 'vue';\nimport { ICliCommandProcessor, ICliModule } from '@qodalis/cli-core';\nimport { CliEngineOptions } from '@qodalis/cli';\nimport { CliInjectionKey } from './cliInjection';\nimport { useCliEngine } from './useCliEngine';\n\nexport const CliProvider = defineComponent({\n name: 'CliProvider',\n props: {\n modules: {\n type: Array as PropType<ICliModule[]>,\n default: undefined,\n },\n processors: {\n type: Array as PropType<ICliCommandProcessor[]>,\n default: undefined,\n },\n options: {\n type: Object as PropType<CliEngineOptions>,\n default: undefined,\n },\n services: {\n type: Object as PropType<Record<string, any>>,\n default: undefined,\n },\n style: {\n type: Object as PropType<Record<string, string>>,\n default: undefined,\n },\n },\n emits: ['ready'],\n setup(props, { slots, emit }) {\n const containerRef = ref<HTMLElement | null>(null);\n const engine = useCliEngine(containerRef, {\n modules: props.modules,\n processors: props.processors,\n options: props.options,\n services: props.services,\n });\n\n provide(CliInjectionKey, { engine });\n\n return () =>\n h('div', { style: { height: '100%' } }, [\n h('div', {\n ref: containerRef,\n style: { height: '100%', ...props.style },\n }),\n slots.default?.(),\n ]);\n },\n});\n","import { ref, onMounted, onBeforeUnmount, Ref, shallowRef } from 'vue';\nimport { CliEngine, CliEngineOptions } from '@qodalis/cli';\nimport { ICliCommandProcessor, ICliModule } from '@qodalis/cli-core';\n\nexport interface UseCliEngineConfig {\n modules?: ICliModule[];\n processors?: ICliCommandProcessor[];\n options?: CliEngineOptions;\n services?: Record<string, any>;\n}\n\nexport function useCliEngine(\n containerRef: Ref<HTMLElement | null>,\n config?: UseCliEngineConfig,\n): Ref<CliEngine | null> {\n const engine = shallowRef<CliEngine | null>(null);\n\n onMounted(async () => {\n if (!containerRef.value) return;\n\n const e = new CliEngine(containerRef.value, config?.options);\n\n e.registerService('cli-framework', 'Vue');\n\n if (config?.services) {\n for (const [token, value] of Object.entries(config.services)) {\n e.registerService(token, value);\n }\n }\n\n if (config?.modules) {\n e.registerModules(config.modules);\n }\n\n if (config?.processors) {\n e.registerProcessors(config.processors);\n }\n\n await e.start();\n engine.value = e;\n });\n\n onBeforeUnmount(() => {\n engine.value?.destroy();\n engine.value = null;\n });\n\n return engine;\n}\n","import { inject } from 'vue';\nimport { CliInjectionKey, CliContextValue } from './cliInjection';\n\nexport function useCli(): CliContextValue {\n const ctx = inject(CliInjectionKey);\n if (!ctx) {\n throw new Error(\n 'useCli() must be used inside a <CliProvider> component',\n );\n }\n return ctx;\n}\n","export { Cli } from './Cli';\nexport type { CliProps } from './Cli';\nexport { CliPanel } from './CliPanel';\nexport type { CliPanelOptions } from './CliPanel';\nexport { CliProvider } from './CliProvider';\nexport { CliConfigProvider, CliConfigKey } from './CliConfigProvider';\nexport type { CliConfigValue } from './CliConfigProvider';\nexport { useCli } from './useCli';\nexport { useCliEngine } from './useCliEngine';\nexport { CliInjectionKey } from './cliInjection';\nexport type { CliContextValue } from './cliInjection';\nexport type { UseCliEngineConfig } from './useCliEngine';\n\n// Re-export commonly used types from @qodalis/cli for convenience\nexport type { CliEngineOptions } from '@qodalis/cli';\nexport { CliEngine } from '@qodalis/cli';\n"],"mappings":"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","names":["defineComponent","defineComponent","defineComponent","ref","inject","h","onMounted","onBeforeUnmount","h","defineComponent","inject","ref","onMounted","onBeforeUnmount","defineComponent","ref","h","provide","onMounted","onBeforeUnmount","CliEngine","defineComponent","ref","provide","h","inject","inject","CliEngine"]}
|
|
1
|
+
{"version":3,"sources":["../src/Cli.ts","../src/cliInjection.ts","../src/CliConfigProvider.ts","../src/CliPanel.ts","../src/CliProvider.ts","../src/useCliEngine.ts","../src/useCli.ts","../src/index.ts"],"sourcesContent":["import {\n defineComponent,\n ref,\n onMounted,\n onBeforeUnmount,\n PropType,\n h,\n inject,\n} from 'vue';\nimport { ICliModule, CliEngineSnapshot } from '@qodalis/cli-core';\nimport { CliEngine, CliEngineOptions, createCliEngine, resolveCliHostConfig } from '@qodalis/cli';\nimport { CliInjectionKey } from './cliInjection';\nimport { CliConfigKey } from './CliConfigProvider';\n\n/**\n * Props accepted by the Vue `Cli` component.\n */\nexport interface CliProps {\n modules?: ICliModule[];\n options?: CliEngineOptions;\n services?: Record<string, any>;\n snapshot?: CliEngineSnapshot;\n style?: Record<string, string>;\n class?: string;\n}\n\nexport const Cli = defineComponent({\n name: 'Cli',\n props: {\n modules: {\n type: Array as PropType<ICliModule[]>,\n default: undefined,\n },\n options: {\n type: Object as PropType<CliEngineOptions>,\n default: undefined,\n },\n services: {\n type: Object as PropType<Record<string, any>>,\n default: undefined,\n },\n snapshot: {\n type: Object as PropType<CliEngineSnapshot>,\n default: undefined,\n },\n style: {\n type: Object as PropType<Record<string, string>>,\n default: undefined,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n emits: ['ready'],\n setup(props, { emit }) {\n const containerRef = ref<HTMLElement | null>(null);\n const ctx = inject(CliInjectionKey, null);\n const config = inject(CliConfigKey, null);\n let engine: CliEngine | null = null;\n\n // If inside a CliProvider, don't create our own engine\n if (ctx) {\n return () => null;\n }\n\n // Local props override the config context.\n const hostConfig = resolveCliHostConfig(props, config);\n\n onMounted(async () => {\n if (!containerRef.value) return;\n\n engine = createCliEngine(containerRef.value, { ...hostConfig, snapshot: props.snapshot, framework: 'Vue' });\n await engine.start();\n emit('ready', engine);\n });\n\n onBeforeUnmount(() => {\n engine?.destroy();\n engine = null;\n });\n\n return () =>\n h('div', {\n ref: containerRef,\n style: { height: '100%', ...props.style },\n class: props.class,\n });\n },\n});\n","import { InjectionKey, Ref } from 'vue';\nimport { CliEngine } from '@qodalis/cli';\n\nexport interface CliContextValue {\n engine: Ref<CliEngine | null>;\n}\n\nexport const CliInjectionKey: InjectionKey<CliContextValue> =\n Symbol('qodalis-cli');\n","import { defineComponent, provide, PropType, InjectionKey } from 'vue';\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliEngineOptions } from '@qodalis/cli';\n\nexport interface CliConfigValue {\n modules?: ICliModule[];\n options?: CliEngineOptions;\n services?: Record<string, any>;\n}\n\nexport const CliConfigKey: InjectionKey<CliConfigValue> =\n Symbol('qodalis-cli-config');\n\nexport const CliConfigProvider = defineComponent({\n name: 'CliConfigProvider',\n props: {\n modules: {\n type: Array as PropType<ICliModule[]>,\n default: undefined,\n },\n options: {\n type: Object as PropType<CliEngineOptions>,\n default: undefined,\n },\n services: {\n type: Object as PropType<Record<string, any>>,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n provide(CliConfigKey, {\n modules: props.modules,\n options: props.options,\n services: props.services,\n });\n\n return () => slots.default?.();\n },\n});\n","import { defineComponent, computed, inject, watch, PropType, h, onBeforeUnmount, onMounted, shallowRef, VNode, Fragment } from 'vue';\nimport { ICliModule, CliPanelConfig, CliPanelPosition, ICliPanelRef } from '@qodalis/cli-core';\nimport {\n CliEngine,\n CliEngineOptions,\n CliPanelController,\n CliPanelSnapshot,\n CLOSE_GLYPH,\n CLOSE_ICON,\n HIDE_ICON,\n HIDE_TAB_TERMINAL_ICON,\n MAXIMIZE_ICON,\n PANEL_LABELS,\n RESTORE_ICON,\n SvgIcon,\n TERMINAL_ICON,\n collapseChevronIcon,\n contextMenuItems,\n contextMenuStyle,\n glowLineClass,\n handleRenameKey,\n hideTabChevronIcon,\n joinClasses,\n mergeCliOptions,\n openStatusDropdown,\n paneClass,\n paneStyle,\n panelTabClass,\n panelTabDotClass,\n panelWrapperClass,\n panelWrapperStyle,\n panesContainerClass,\n panesContainerWidth,\n positionIcon,\n positionOptions,\n resolveCliHostConfig,\n runContextMenuAction,\n statusIndicators,\n svgAttrs,\n} from '@qodalis/cli';\nimport { Cli } from './Cli';\nimport { CliConfigKey } from './CliConfigProvider';\n\nexport interface CliPanelOptions extends CliEngineOptions, CliPanelConfig {}\n\n/** The methods exposed through a template ref. */\nconst PANEL_REF_METHODS: Array<keyof ICliPanelRef<CliEngine>> = [\n 'open', 'collapse', 'toggleCollapse', 'hide', 'unhide', 'toggleHide', 'close',\n 'maximize', 'restore', 'toggleMaximize', 'resize', 'setPosition',\n 'addTab', 'closeTab', 'selectTab', 'renameTab', 'splitPane', 'closePane', 'getEngine', 'getState',\n];\n\nfunction icon(svg: SvgIcon, className?: string): VNode {\n return h('svg', { class: className, ...svgAttrs(svg) }, svg.shapes.map((shape) => h(shape.tag, shape.attrs)));\n}\n\nconst stop = (e: Event) => e.stopPropagation();\n\nexport const CliPanel = defineComponent({\n name: 'CliPanel',\n props: {\n options: { type: Object as PropType<CliPanelOptions>, default: undefined },\n modules: { type: Array as PropType<ICliModule[]>, default: undefined },\n services: { type: Object as PropType<Record<string, any>>, default: undefined },\n onClose: { type: Function as PropType<() => void>, default: undefined },\n collapsed: { type: Boolean, default: undefined },\n hidden: { type: Boolean, default: undefined },\n maximized: { type: Boolean, default: undefined },\n activeTabId: { type: Number, default: undefined },\n position: { type: String as PropType<CliPanelPosition>, default: undefined },\n height: { type: Number, default: undefined },\n width: { type: Number, default: undefined },\n style: { type: Object as PropType<Record<string, string>>, default: undefined },\n class: { type: String, default: undefined },\n },\n emits: [\n 'update:collapsed', 'update:hidden', 'update:maximized',\n 'update:activeTabId', 'update:position', 'update:height', 'update:width',\n 'close', 'tab-added', 'tab-closed', 'pane-split', 'pane-closed',\n ],\n setup(props, { expose, emit }) {\n const config = inject(CliConfigKey, null);\n\n // Merge: local props override config context\n const mergedOptions = computed(() => mergeCliOptions<CliPanelOptions>(props.options, config?.options));\n const hostConfig = computed(() => resolveCliHostConfig(props, config));\n\n const controlled = () => ({\n collapsed: props.collapsed,\n hidden: props.hidden,\n maximized: props.maximized,\n activeTabId: props.activeTabId,\n position: props.position,\n height: props.height,\n width: props.width,\n });\n\n const controller = new CliPanelController({\n config: mergedOptions.value,\n controlled: controlled(),\n callbacks: {\n onCollapsedChange: (v) => emit('update:collapsed', v),\n onHiddenChange: (v) => emit('update:hidden', v),\n onMaximizedChange: (v) => emit('update:maximized', v),\n onActiveTabIdChange: (v) => emit('update:activeTabId', v),\n onPositionChange: (v) => emit('update:position', v),\n onHeightChange: (v) => emit('update:height', v),\n onWidthChange: (v) => emit('update:width', v),\n onClose: () => {\n emit('close');\n props.onClose?.();\n },\n onTabAdded: (e) => emit('tab-added', e),\n onTabClosed: (e) => emit('tab-closed', e),\n onPaneSplit: (e) => emit('pane-split', e),\n onPaneClosed: (e) => emit('pane-closed', e),\n },\n });\n\n const state = shallowRef<CliPanelSnapshot>(controller.getSnapshot());\n const unsubscribe = controller.subscribe(() => {\n state.value = controller.getSnapshot();\n });\n\n watch(controlled, (values) => controller.setControlled(values));\n watch(mergedOptions, (options) => controller.setOptions(options));\n\n const root = shallowRef<HTMLElement | null>(null);\n onMounted(() => controller.setRootElement(root.value));\n onBeforeUnmount(() => {\n unsubscribe();\n controller.destroy();\n });\n\n const exposed: Record<string, unknown> = {};\n for (const method of PANEL_REF_METHODS) {\n exposed[method] = (controller[method] as (...args: unknown[]) => unknown).bind(controller);\n }\n expose(exposed);\n\n /* ─── Render helpers ─────────────────────────────── */\n\n const openDropdown = (e: MouseEvent, dropdown?: 'services' | 'servers') => {\n if (!dropdown) return;\n e.stopPropagation();\n const anchor = e.currentTarget as Element;\n if (dropdown === 'services') controller.toggleServicesDropdown(anchor);\n else controller.toggleServersDropdown(anchor);\n };\n\n const renderHeader = (s: CliPanelSnapshot) => {\n const indicators = statusIndicators(s);\n return h('div', { class: 'cli-panel-header' }, [\n h(\n 'div',\n {\n class: 'cli-panel-resize-bar',\n onMousedown: (e: MouseEvent) => {\n if (!s.resizable) return;\n e.preventDefault();\n controller.startPanelResize(e.clientX, e.clientY);\n },\n },\n [h('div', { class: 'cli-panel-resize-grip' })],\n ),\n h('div', { class: 'cli-panel-header-content' }, [\n h('p', { class: 'cli-panel-title' }, [h('span', { class: 'cli-panel-title-icon' }, [icon(TERMINAL_ICON)]), PANEL_LABELS.title]),\n s.showStatusIndicators\n ? h(\n 'div',\n { class: 'cli-panel-status-indicators' },\n indicators.map((item) =>\n h(\n 'span',\n {\n key: item.key,\n class: joinClasses('cli-panel-status-item', item.itemClass),\n onClick: item.dropdown ? (e: MouseEvent) => openDropdown(e, item.dropdown) : undefined,\n },\n [\n item.dotClass ? h('span', { class: `cli-panel-status-dot ${item.dotClass}` }) : null,\n item.icon ? h('span', { class: joinClasses('cli-panel-status-icon', item.iconClass) }, item.icon) : null,\n h('span', { class: 'cli-panel-status-label' }, item.label),\n ],\n ),\n ),\n )\n : null,\n // Compact indicators for left/right positions (CSS controls visibility).\n h(\n 'div',\n { class: 'cli-panel-status-indicators-compact' },\n indicators.map((item) =>\n h(\n 'span',\n {\n key: item.key,\n class: joinClasses('cli-panel-status-compact-item', item.compactClass),\n title: item.title,\n onClick: item.dropdown ? (e: MouseEvent) => openDropdown(e, item.dropdown) : undefined,\n },\n [\n item.compactDotClass ? h('span', { class: item.compactDotClass }) : null,\n item.dotClass ? h('span', { class: `cli-panel-status-dot ${item.dotClass}` }) : null,\n item.icon ? h('span', { class: joinClasses('cli-panel-status-icon', item.iconClass) }, item.icon) : null,\n ],\n ),\n ),\n ),\n h('div', { class: 'cli-panel-action-buttons' }, [\n h('div', { class: 'cli-panel-btn-position-wrapper', onClick: stop }, [\n h(\n 'button',\n {\n class: 'cli-panel-btn cli-panel-btn-position',\n title: PANEL_LABELS.movePanel,\n onClick: () => controller.togglePositionDropdown(),\n },\n [icon(positionIcon(s.position))],\n ),\n s.positionDropdownOpen\n ? h(\n 'div',\n { class: 'cli-panel-position-dropdown' },\n positionOptions(s).map((opt) =>\n h(\n 'button',\n { key: opt.position, class: opt.className, onClick: () => controller.setPosition(opt.position) },\n [icon(positionIcon(opt.position, 16)), opt.label],\n ),\n ),\n )\n : null,\n ]),\n s.hideable\n ? h('button', { class: 'cli-panel-btn cli-panel-btn-hide', title: PANEL_LABELS.hide, onClick: () => controller.hide() }, [icon(HIDE_ICON)])\n : null,\n h(\n 'button',\n {\n class: 'cli-panel-btn',\n title: s.maximized ? PANEL_LABELS.restore : PANEL_LABELS.maximize,\n disabled: s.collapsed,\n onClick: () => controller.toggleMaximize(),\n },\n [icon(s.maximized ? RESTORE_ICON : MAXIMIZE_ICON)],\n ),\n h(\n 'button',\n {\n class: 'cli-panel-btn',\n title: s.collapsed ? PANEL_LABELS.expand : PANEL_LABELS.collapse,\n onClick: () => controller.toggle(),\n },\n [icon(collapseChevronIcon(s.position, s.collapsed))],\n ),\n s.closable\n ? h('button', { class: 'cli-panel-btn cli-panel-btn-close', title: PANEL_LABELS.close, onClick: () => controller.close() }, [icon(CLOSE_ICON)])\n : null,\n ]),\n ]),\n h('div', { class: glowLineClass(s) }),\n ]);\n };\n\n const renderTabs = (s: CliPanelSnapshot) =>\n h('div', { class: 'cli-panel-tabs' }, [\n h(\n 'ul',\n { class: 'cli-panel-tab-list' },\n s.tabs.map((tab) =>\n h(\n 'li',\n {\n key: tab.id,\n class: panelTabClass(s, tab),\n onClick: () => controller.selectTab(tab.id),\n onDblclick: () => controller.startRename(tab.id),\n onContextmenu: (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n controller.openContextMenu(tab.id, e.clientX, e.clientY);\n },\n },\n tab.isEditing\n ? [\n h('input', {\n class: 'cli-panel-tab-rename-input',\n type: 'text',\n value: tab.title,\n onVnodeMounted: (vnode: VNode) => {\n const input = vnode.el as HTMLInputElement;\n input.focus();\n input.select();\n },\n onKeydown: (e: KeyboardEvent) =>\n handleRenameKey(controller, tab.id, e.key, (e.target as HTMLInputElement).value),\n onBlur: (e: FocusEvent) => controller.commitRename(tab.id, (e.target as HTMLInputElement).value),\n onClick: stop,\n onDblclick: stop,\n }),\n ]\n : [\n h('span', { class: panelTabDotClass(s, tab) }),\n h('span', { class: 'cli-panel-tab-title' }, tab.title),\n h(\n 'button',\n {\n class: 'cli-panel-tab-close-btn',\n title: PANEL_LABELS.closeTab,\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n controller.closeTab(tab.id);\n },\n },\n CLOSE_GLYPH,\n ),\n ],\n ),\n ),\n ),\n h('button', { class: 'cli-panel-add-tab', title: PANEL_LABELS.newTerminal, onClick: () => controller.addTab() }, '+'),\n ]);\n\n const renderInstances = (s: CliPanelSnapshot) =>\n h(\n 'div',\n { class: 'cli-panel-instances' },\n s.tabs.map((tab) =>\n h('div', { key: tab.id, class: 'cli-panel-instance', style: { display: tab.id === s.activeTabId ? undefined : 'none' } }, [\n h(\n 'div',\n { class: panesContainerClass(s) },\n tab.panes.flatMap((pane, i) => [\n i > 0\n ? h(\n 'div',\n {\n key: `divider-${pane.id}`,\n class: 'cli-panel-pane-divider',\n onMousedown: (e: MouseEvent) => {\n e.preventDefault();\n controller.startPaneResize(tab.id, i - 1, e.clientX, panesContainerWidth(e.target));\n },\n },\n [h('div', { class: 'cli-panel-pane-divider-grip' })],\n )\n : null,\n h(\n 'div',\n {\n key: pane.id,\n class: paneClass(s, tab.id, pane.id),\n style: paneStyle(pane.widthPercent),\n onClick: () => controller.activatePane(tab.id, pane.id),\n },\n [\n tab.panes.length > 1\n ? h(\n 'button',\n {\n class: 'cli-panel-pane-close-btn',\n title: PANEL_LABELS.closePane,\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n controller.closePane(pane.id);\n },\n },\n CLOSE_GLYPH,\n )\n : null,\n h(Cli, {\n options: mergedOptions.value,\n modules: hostConfig.value.modules,\n services: hostConfig.value.services,\n snapshot: pane.snapshot,\n style: { height: '100%' },\n onReady: (engine: CliEngine) => controller.registerEngine(tab.id, pane.id, engine),\n }),\n ],\n ),\n ]),\n ),\n ]),\n ),\n );\n\n const renderContextMenu = (s: CliPanelSnapshot) =>\n h(\n 'div',\n { class: 'cli-panel-context-menu', style: contextMenuStyle(s), onClick: stop },\n contextMenuItems(s).flatMap((item) => [\n item.separatorBefore ? h('div', { class: 'cli-panel-context-menu-separator' }) : null,\n h(\n 'button',\n {\n class: joinClasses('cli-panel-context-menu-item', item.destructive && 'destructive'),\n disabled: item.disabled,\n onClick: () => runContextMenuAction(controller, item.action),\n },\n item.label,\n ),\n ]),\n );\n\n const renderStatusDropdown = (s: CliPanelSnapshot) => {\n const dropdown = openStatusDropdown(s);\n if (!dropdown) return null;\n return h('div', { class: 'cli-panel-services-dropdown', style: dropdown.style, onClick: stop }, [\n h('div', { class: 'cli-panel-services-dropdown-header' }, dropdown.header),\n h(\n 'div',\n { class: 'cli-panel-services-dropdown-list' },\n dropdown.rows.map((row) =>\n h('div', { key: row.key, class: 'cli-panel-services-dropdown-item' }, [\n h('span', { class: row.dotClass }),\n h('div', { class: 'cli-panel-svc-info' }, [\n h('span', { class: 'cli-panel-svc-name' }, row.name),\n row.description ? h('span', { class: 'cli-panel-svc-desc' }, row.description) : null,\n ]),\n dropdown.kind === 'servers'\n ? h('div', { class: 'cli-panel-srv-meta' }, [\n h('span', { class: 'cli-panel-svc-status' }, row.status),\n ...row.meta.map((m) => h('span', { key: m, class: 'cli-panel-svc-desc' }, m)),\n ])\n : h('span', { class: 'cli-panel-svc-status' }, row.status),\n ]),\n ),\n ),\n dropdown.rows.length === 0 ? h('div', { class: 'cli-panel-services-dropdown-empty' }, dropdown.emptyText) : null,\n ]);\n };\n\n /* ─── Render ─────────────────────────────────────── */\n\n return () => {\n const s = state.value;\n if (!s.visible) return null;\n\n return h(Fragment, [\n s.hidden\n ? h(\n 'button',\n {\n class: 'cli-panel-hide-tab',\n 'data-position': s.position,\n 'data-hide-align': s.hideAlignment,\n style: s.themeStyles,\n title: PANEL_LABELS.showCli,\n onClick: () => controller.unhide(),\n },\n [\n icon(HIDE_TAB_TERMINAL_ICON, 'cli-panel-hide-tab-icon'),\n h('span', { class: 'cli-panel-hide-tab-label' }, PANEL_LABELS.title),\n icon(hideTabChevronIcon(s.position), 'cli-panel-hide-tab-arrow'),\n ],\n )\n : null,\n h(\n 'div',\n {\n ref: root,\n class: panelWrapperClass(s, props.class),\n style: { ...panelWrapperStyle(s), ...props.style },\n 'data-position': s.position,\n 'data-resizable': String(s.resizable),\n 'data-closable': String(s.closable),\n 'data-hideable': String(s.hideable),\n },\n [\n renderHeader(s),\n s.initialized\n ? h('div', { class: 'cli-panel-content', style: s.collapsed ? { display: 'none' } : undefined }, [\n renderTabs(s),\n renderInstances(s),\n ])\n : null,\n ],\n ),\n s.contextMenu.visible ? renderContextMenu(s) : null,\n renderStatusDropdown(s),\n ]);\n };\n },\n});\n","import { defineComponent, ref, PropType, h, provide } from 'vue';\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliEngineOptions } from '@qodalis/cli';\nimport { CliInjectionKey } from './cliInjection';\nimport { useCliEngine } from './useCliEngine';\n\nexport const CliProvider = defineComponent({\n name: 'CliProvider',\n props: {\n modules: {\n type: Array as PropType<ICliModule[]>,\n default: undefined,\n },\n options: {\n type: Object as PropType<CliEngineOptions>,\n default: undefined,\n },\n services: {\n type: Object as PropType<Record<string, any>>,\n default: undefined,\n },\n style: {\n type: Object as PropType<Record<string, string>>,\n default: undefined,\n },\n },\n emits: ['ready'],\n setup(props, { slots, emit }) {\n const containerRef = ref<HTMLElement | null>(null);\n const engine = useCliEngine(containerRef, {\n modules: props.modules,\n options: props.options,\n services: props.services,\n });\n\n provide(CliInjectionKey, { engine });\n\n return () =>\n h('div', { style: { height: '100%' } }, [\n h('div', {\n ref: containerRef,\n style: { height: '100%', ...props.style },\n }),\n slots.default?.(),\n ]);\n },\n});\n","import { onMounted, onBeforeUnmount, Ref, shallowRef } from 'vue';\nimport { CliEngine, CreateCliEngineConfig, createCliEngine } from '@qodalis/cli';\n\nexport type UseCliEngineConfig = Omit<CreateCliEngineConfig, 'framework'>;\n\nexport function useCliEngine(\n containerRef: Ref<HTMLElement | null>,\n config?: UseCliEngineConfig,\n): Ref<CliEngine | null> {\n const engine = shallowRef<CliEngine | null>(null);\n\n onMounted(async () => {\n if (!containerRef.value) return;\n\n const e = createCliEngine(containerRef.value, { ...config, framework: 'Vue' });\n await e.start();\n engine.value = e;\n });\n\n onBeforeUnmount(() => {\n engine.value?.destroy();\n engine.value = null;\n });\n\n return engine;\n}\n","import { inject } from 'vue';\nimport { CliInjectionKey, CliContextValue } from './cliInjection';\n\nexport function useCli(): CliContextValue {\n const ctx = inject(CliInjectionKey);\n if (!ctx) {\n throw new Error(\n 'useCli() must be used inside a <CliProvider> component',\n );\n }\n return ctx;\n}\n","export { Cli } from './Cli';\nexport type { CliProps } from './Cli';\nexport { CliPanel } from './CliPanel';\nexport type { CliPanelOptions } from './CliPanel';\nexport { CliProvider } from './CliProvider';\nexport { CliConfigProvider, CliConfigKey } from './CliConfigProvider';\nexport type { CliConfigValue } from './CliConfigProvider';\nexport { useCli } from './useCli';\nexport { useCliEngine } from './useCliEngine';\nexport { CliInjectionKey } from './cliInjection';\nexport type { CliContextValue } from './cliInjection';\nexport type { UseCliEngineConfig } from './useCliEngine';\n\n// Re-export commonly used types from @qodalis/cli for convenience\nexport type { CliEngineOptions } from '@qodalis/cli';\nexport { CliEngine } from '@qodalis/cli';\n"],"mappings":"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","names":["defineComponent","defineComponent","defineComponent","inject","h","onBeforeUnmount","onMounted","resolveCliHostConfig","h","defineComponent","inject","resolveCliHostConfig","onMounted","onBeforeUnmount","defineComponent","ref","h","provide","onMounted","onBeforeUnmount","shallowRef","createCliEngine","defineComponent","ref","provide","h","inject","inject","CliEngine"]}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qodalis/vue-cli",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-rc.1",
|
|
4
4
|
"description": "Vue 3 wrapper for the @qodalis CLI terminal engine.",
|
|
5
5
|
"author": "Nicolae Lupei, Qodalis Solutions",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
"types": "./dist/index.d.ts",
|
|
27
27
|
"import": "./dist/index.mjs",
|
|
28
28
|
"require": "./dist/index.js"
|
|
29
|
-
}
|
|
29
|
+
},
|
|
30
|
+
"./styles.css": "./dist/styles.css"
|
|
30
31
|
},
|
|
31
32
|
"files": [
|
|
32
33
|
"dist"
|
|
@@ -35,12 +36,12 @@
|
|
|
35
36
|
"vue": "^3.3.0"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
|
-
"@qodalis/cli": "workspace
|
|
39
|
-
"@qodalis/cli-core": "workspace
|
|
39
|
+
"@qodalis/cli": "workspace:^",
|
|
40
|
+
"@qodalis/cli-core": "workspace:^"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
|
-
"tsup": "^
|
|
43
|
-
"typescript": "^
|
|
43
|
+
"tsup": "^9.0.0",
|
|
44
|
+
"typescript": "^6.0.0",
|
|
44
45
|
"vue": "^3.3.0"
|
|
45
46
|
},
|
|
46
47
|
"scripts": {
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* @qodalis/vue-cli — all-in-one stylesheet
|
|
2
|
+
*
|
|
3
|
+
* Import this single file instead of manually importing xterm and cli-panel CSS:
|
|
4
|
+
* import '@qodalis/vue-cli/styles.css';
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '@xterm/xterm/css/xterm.css';
|
|
8
|
+
@import '@qodalis/cli/assets/cli-panel.css';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qodalis/vue-cli",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-rc.1",
|
|
4
4
|
"description": "Vue 3 wrapper for the @qodalis CLI terminal engine.",
|
|
5
5
|
"author": "Nicolae Lupei, Qodalis Solutions",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
"types": "./dist/index.d.ts",
|
|
27
27
|
"import": "./dist/index.mjs",
|
|
28
28
|
"require": "./dist/index.js"
|
|
29
|
-
}
|
|
29
|
+
},
|
|
30
|
+
"./styles.css": "./dist/styles.css"
|
|
30
31
|
},
|
|
31
32
|
"files": [
|
|
32
33
|
"dist"
|
|
@@ -35,12 +36,12 @@
|
|
|
35
36
|
"vue": "^3.3.0"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
|
-
"@qodalis/cli": "2.0.0-
|
|
39
|
-
"@qodalis/cli-core": "2.0.0-
|
|
39
|
+
"@qodalis/cli": "2.0.0-rc.1",
|
|
40
|
+
"@qodalis/cli-core": "2.0.0-rc.1"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
|
-
"tsup": "^
|
|
43
|
-
"typescript": "^
|
|
43
|
+
"tsup": "^9.0.0",
|
|
44
|
+
"typescript": "^6.0.0",
|
|
44
45
|
"vue": "^3.3.0"
|
|
45
46
|
},
|
|
46
47
|
"scripts": {
|