Skip to content

Commit e17fa19

Browse files
committed
use store instead
1 parent ab84ff0 commit e17fa19

File tree

6 files changed

+160
-153
lines changed

6 files changed

+160
-153
lines changed

src/components/graph/selectionToolbox/HelpButton.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ import Button from 'primevue/button'
1818
import { computed } from 'vue'
1919
2020
import { useNodeLibrarySidebarTab } from '@/composables/sidebarTabs/useNodeLibrarySidebarTab'
21-
import { useNodeHelp } from '@/composables/useNodeHelp'
2221
import { useCanvasStore } from '@/stores/graphStore'
2322
import type { ComfyNodeDefImpl } from '@/stores/nodeDefStore'
2423
import { useNodeDefStore } from '@/stores/nodeDefStore'
24+
import { useNodeHelpStore } from '@/stores/workspace/nodeHelpStore'
2525
import { useSidebarTabStore } from '@/stores/workspace/sidebarTabStore'
2626
import { isLGraphNode } from '@/utils/litegraphUtil'
2727
2828
const canvasStore = useCanvasStore()
2929
const nodeDefStore = useNodeDefStore()
3030
const sidebarTabStore = useSidebarTabStore()
31-
const { openHelp } = useNodeHelp()
31+
const nodeHelpStore = useNodeHelpStore()
3232
const { id: nodeLibraryTabId } = useNodeLibrarySidebarTab()
3333
3434
const nodeDef = computed<ComfyNodeDefImpl | null>(() => {
@@ -44,6 +44,6 @@ const showHelp = () => {
4444
if (sidebarTabStore.activeSidebarTabId !== nodeLibraryTabId) {
4545
sidebarTabStore.toggleSidebarTab(nodeLibraryTabId)
4646
}
47-
openHelp(def)
47+
nodeHelpStore.openHelp(def)
4848
}
4949
</script>

src/components/sidebar/tabs/NodeLibrarySidebarTab.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
</template>
7373

7474
<script setup lang="ts">
75+
import { storeToRefs } from 'pinia'
7576
import Button from 'primevue/button'
7677
import Divider from 'primevue/divider'
7778
import Popover from 'primevue/popover'
@@ -85,7 +86,6 @@ import NodeSearchFilter from '@/components/searchbox/NodeSearchFilter.vue'
8586
import SidebarTabTemplate from '@/components/sidebar/tabs/SidebarTabTemplate.vue'
8687
import NodeHelpPage from '@/components/sidebar/tabs/nodeLibrary/NodeHelpPage.vue'
8788
import NodeTreeLeaf from '@/components/sidebar/tabs/nodeLibrary/NodeTreeLeaf.vue'
88-
import { useNodeHelp } from '@/composables/useNodeHelp'
8989
import { useTreeExpansion } from '@/composables/useTreeExpansion'
9090
import { useLitegraphService } from '@/services/litegraphService'
9191
import { useNodeBookmarkStore } from '@/stores/nodeBookmarkStore'
@@ -94,6 +94,7 @@ import {
9494
buildNodeDefTree,
9595
useNodeDefStore
9696
} from '@/stores/nodeDefStore'
97+
import { useNodeHelpStore } from '@/stores/workspace/nodeHelpStore'
9798
import type { TreeNode } from '@/types/treeExplorerTypes'
9899
import type { TreeExplorerNode } from '@/types/treeExplorerTypes'
99100
import { FuseFilterWithValue } from '@/utils/fuseUtil'
@@ -103,6 +104,7 @@ import NodeBookmarkTreeExplorer from './nodeLibrary/NodeBookmarkTreeExplorer.vue
103104
104105
const nodeDefStore = useNodeDefStore()
105106
const nodeBookmarkStore = useNodeBookmarkStore()
107+
const nodeHelpStore = useNodeHelpStore()
106108
const expandedKeys = ref<Record<string, boolean>>({})
107109
const { expandNode, toggleNodeOnEvent } = useTreeExpansion(expandedKeys)
108110
@@ -114,7 +116,8 @@ const alphabeticalSort = ref(false)
114116
115117
const searchQuery = ref<string>('')
116118
117-
const { currentHelpNode, isHelpOpen, openHelp, closeHelp } = useNodeHelp()
119+
const { currentHelpNode, isHelpOpen } = storeToRefs(nodeHelpStore)
120+
const { openHelp, closeHelp } = nodeHelpStore
118121
119122
const root = computed(() => {
120123
const root = filteredRoot.value || nodeDefStore.nodeTree

src/components/sidebar/tabs/nodeLibrary/NodeHelpPage.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,20 @@
7777
</template>
7878

7979
<script setup lang="ts">
80+
import { storeToRefs } from 'pinia'
8081
import Button from 'primevue/button'
8182
import Column from 'primevue/column'
8283
import DataTable from 'primevue/datatable'
8384
import ProgressSpinner from 'primevue/progressspinner'
8485
import { computed } from 'vue'
8586
86-
import { useNodeHelp } from '@/composables/useNodeHelp'
8787
import type { ComfyNodeDefImpl } from '@/stores/nodeDefStore'
88+
import { useNodeHelpStore } from '@/stores/workspace/nodeHelpStore'
8889
8990
const { node } = defineProps<{ node: ComfyNodeDefImpl }>()
9091
91-
const { renderedHelpHtml, isLoading, error } = useNodeHelp()
92+
const nodeHelpStore = useNodeHelpStore()
93+
const { renderedHelpHtml, isLoading, error } = storeToRefs(nodeHelpStore)
9294
9395
defineEmits<{
9496
(e: 'close'): void

src/composables/useNodeHelp.ts

Lines changed: 0 additions & 68 deletions
This file was deleted.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { defineStore } from 'pinia'
2+
import { computed, ref, watch } from 'vue'
3+
4+
import { i18n } from '@/i18n'
5+
import { nodeHelpService } from '@/services/nodeHelpService'
6+
import type { ComfyNodeDefImpl } from '@/stores/nodeDefStore'
7+
import { renderMarkdownToHtml } from '@/utils/markdownRendererUtil'
8+
import { getNodeHelpBaseUrl } from '@/utils/nodeHelpUtil'
9+
10+
export const useNodeHelpStore = defineStore('nodeHelp', () => {
11+
const currentHelpNode = ref<ComfyNodeDefImpl | null>(null)
12+
const isHelpOpen = computed(() => currentHelpNode.value !== null)
13+
const helpContent = ref<string>('')
14+
const isLoading = ref<boolean>(false)
15+
const errorMsg = ref<string | null>(null)
16+
17+
function openHelp(nodeDef: ComfyNodeDefImpl) {
18+
currentHelpNode.value = nodeDef
19+
}
20+
21+
function closeHelp() {
22+
currentHelpNode.value = null
23+
}
24+
25+
// Base URL for relative assets in node docs markdown
26+
const baseUrl = computed(() => {
27+
const node = currentHelpNode.value
28+
if (!node) return ''
29+
return getNodeHelpBaseUrl(node)
30+
})
31+
32+
// Watch for help node changes and fetch its docs markdown
33+
watch(
34+
() => currentHelpNode.value,
35+
async (node) => {
36+
helpContent.value = ''
37+
errorMsg.value = null
38+
39+
if (node) {
40+
isLoading.value = true
41+
try {
42+
const locale = i18n.global.locale.value || 'en'
43+
helpContent.value = await nodeHelpService.fetchNodeHelp(node, locale)
44+
} catch (e: any) {
45+
errorMsg.value = e.message
46+
helpContent.value = node.description || ''
47+
} finally {
48+
isLoading.value = false
49+
}
50+
}
51+
},
52+
{ immediate: true }
53+
)
54+
55+
const renderedHelpHtml = computed(() => {
56+
return renderMarkdownToHtml(helpContent.value, baseUrl.value)
57+
})
58+
59+
return {
60+
currentHelpNode,
61+
isHelpOpen,
62+
openHelp,
63+
closeHelp,
64+
baseUrl,
65+
renderedHelpHtml,
66+
isLoading,
67+
error: errorMsg
68+
}
69+
})

0 commit comments

Comments
 (0)