hazo_ihelp 2.0.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/config/hazo_ihelp_config.ini +9 -0
- package/config/hazo_ihelp_config.ini.sample +23 -0
- package/dist/api/create_config_handler.d.ts +27 -0
- package/dist/api/create_config_handler.d.ts.map +1 -0
- package/dist/api/create_config_handler.js +122 -0
- package/dist/api/create_config_handler.js.map +1 -0
- package/dist/api/create_ihelp_handler.d.ts +60 -0
- package/dist/api/create_ihelp_handler.d.ts.map +1 -0
- package/dist/api/create_ihelp_handler.js +378 -0
- package/dist/api/create_ihelp_handler.js.map +1 -0
- package/dist/api/image_upload_handler.d.ts +29 -0
- package/dist/api/image_upload_handler.d.ts.map +1 -0
- package/dist/api/image_upload_handler.js +149 -0
- package/dist/api/image_upload_handler.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +4 -0
- package/dist/api/index.js.map +1 -0
- package/dist/components/editor/editor_collapsible_section.d.ts +11 -0
- package/dist/components/editor/editor_collapsible_section.d.ts.map +1 -0
- package/dist/components/editor/editor_collapsible_section.js +10 -0
- package/dist/components/editor/editor_collapsible_section.js.map +1 -0
- package/dist/components/editor/editor_context_keys_section.d.ts +13 -0
- package/dist/components/editor/editor_context_keys_section.d.ts.map +1 -0
- package/dist/components/editor/editor_context_keys_section.js +99 -0
- package/dist/components/editor/editor_context_keys_section.js.map +1 -0
- package/dist/components/editor/editor_form.d.ts +27 -0
- package/dist/components/editor/editor_form.d.ts.map +1 -0
- package/dist/components/editor/editor_form.js +25 -0
- package/dist/components/editor/editor_form.js.map +1 -0
- package/dist/components/editor/editor_import_export.d.ts +18 -0
- package/dist/components/editor/editor_import_export.d.ts.map +1 -0
- package/dist/components/editor/editor_import_export.js +117 -0
- package/dist/components/editor/editor_import_export.js.map +1 -0
- package/dist/components/editor/editor_tags_section.d.ts +10 -0
- package/dist/components/editor/editor_tags_section.d.ts.map +1 -0
- package/dist/components/editor/editor_tags_section.js +33 -0
- package/dist/components/editor/editor_tags_section.js.map +1 -0
- package/dist/components/editor/editor_topic_list.d.ts +14 -0
- package/dist/components/editor/editor_topic_list.d.ts.map +1 -0
- package/dist/components/editor/editor_topic_list.js +58 -0
- package/dist/components/editor/editor_topic_list.js.map +1 -0
- package/dist/components/editor/editor_topic_list_item.d.ts +10 -0
- package/dist/components/editor/editor_topic_list_item.d.ts.map +1 -0
- package/dist/components/editor/editor_topic_list_item.js +10 -0
- package/dist/components/editor/editor_topic_list_item.js.map +1 -0
- package/dist/components/ihelp_detail_panel.d.ts +16 -0
- package/dist/components/ihelp_detail_panel.d.ts.map +1 -0
- package/dist/components/ihelp_detail_panel.js +46 -0
- package/dist/components/ihelp_detail_panel.js.map +1 -0
- package/dist/components/ihelp_editor.d.ts +3 -0
- package/dist/components/ihelp_editor.d.ts.map +1 -0
- package/dist/components/ihelp_editor.js +169 -0
- package/dist/components/ihelp_editor.js.map +1 -0
- package/dist/components/ihelp_icon.d.ts +7 -0
- package/dist/components/ihelp_icon.d.ts.map +1 -0
- package/dist/components/ihelp_icon.js +14 -0
- package/dist/components/ihelp_icon.js.map +1 -0
- package/dist/components/ihelp_provider.d.ts +21 -0
- package/dist/components/ihelp_provider.d.ts.map +1 -0
- package/dist/components/ihelp_provider.js +83 -0
- package/dist/components/ihelp_provider.js.map +1 -0
- package/dist/components/ihelp_rich_editor.d.ts +15 -0
- package/dist/components/ihelp_rich_editor.d.ts.map +1 -0
- package/dist/components/ihelp_rich_editor.js +182 -0
- package/dist/components/ihelp_rich_editor.js.map +1 -0
- package/dist/components/ihelp_search_dialog.d.ts +3 -0
- package/dist/components/ihelp_search_dialog.d.ts.map +1 -0
- package/dist/components/ihelp_search_dialog.js +454 -0
- package/dist/components/ihelp_search_dialog.js.map +1 -0
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/resizable_image.d.ts +17 -0
- package/dist/components/resizable_image.d.ts.map +1 -0
- package/dist/components/resizable_image.js +170 -0
- package/dist/components/resizable_image.js.map +1 -0
- package/dist/components/ui/badge.d.ts +9 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +17 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +50 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +20 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +26 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/input.d.ts +6 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +12 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/label.d.ts +6 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +12 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +13 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/select.d.ts +14 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +29 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +11 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +6 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +12 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/config/parse_config.d.ts +10 -0
- package/dist/config/parse_config.d.ts.map +1 -0
- package/dist/config/parse_config.js +76 -0
- package/dist/config/parse_config.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use_ihelp.d.ts +3 -0
- package/dist/hooks/use_ihelp.d.ts.map +1 -0
- package/dist/hooks/use_ihelp.js +52 -0
- package/dist/hooks/use_ihelp.js.map +1 -0
- package/dist/hooks/use_ihelp_config.d.ts +19 -0
- package/dist/hooks/use_ihelp_config.d.ts.map +1 -0
- package/dist/hooks/use_ihelp_config.js +62 -0
- package/dist/hooks/use_ihelp_config.js.map +1 -0
- package/dist/hooks/use_ihelp_editor.d.ts +3 -0
- package/dist/hooks/use_ihelp_editor.d.ts.map +1 -0
- package/dist/hooks/use_ihelp_editor.js +93 -0
- package/dist/hooks/use_ihelp_editor.js.map +1 -0
- package/dist/hooks/use_ihelp_search.d.ts +3 -0
- package/dist/hooks/use_ihelp_search.d.ts.map +1 -0
- package/dist/hooks/use_ihelp_search.js +68 -0
- package/dist/hooks/use_ihelp_search.js.map +1 -0
- package/dist/index.client.d.ts +13 -0
- package/dist/index.client.d.ts.map +1 -0
- package/dist/index.client.js +15 -0
- package/dist/index.client.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +595 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +6 -0
- package/dist/utils/cn.js.map +1 -0
- package/migrations/001_create_ihelp_tables.sql +58 -0
- package/package.json +108 -0
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect, useMemo, useCallback } from 'react';
|
|
4
|
+
import { Search, ChevronLeft, FolderTree, ChevronRight } from 'lucide-react';
|
|
5
|
+
import { cn } from '../utils/cn.js';
|
|
6
|
+
import { Badge } from './ui/badge.js';
|
|
7
|
+
import { Input } from './ui/input.js';
|
|
8
|
+
import { IhelpDetailPanel } from './ihelp_detail_panel.js';
|
|
9
|
+
import { useIhelpContext } from './ihelp_provider.js';
|
|
10
|
+
import { use_ihelp } from '../hooks/use_ihelp.js';
|
|
11
|
+
import { Dialog, DialogContent, DialogTitle, } from './ui/dialog.js';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Internal: Scoped scrollbar styles (injected once)
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
const SCROLLBAR_STYLE_ID = 'ihelp-scrollbar-css';
|
|
16
|
+
function ensureScrollbarStyles() {
|
|
17
|
+
if (typeof document === 'undefined')
|
|
18
|
+
return;
|
|
19
|
+
if (document.getElementById(SCROLLBAR_STYLE_ID))
|
|
20
|
+
return;
|
|
21
|
+
const style = document.createElement('style');
|
|
22
|
+
style.id = SCROLLBAR_STYLE_ID;
|
|
23
|
+
style.textContent = `
|
|
24
|
+
.ihelp-dialog ::-webkit-scrollbar { width: 6px; }
|
|
25
|
+
.ihelp-dialog ::-webkit-scrollbar-track { background: transparent; }
|
|
26
|
+
.ihelp-dialog ::-webkit-scrollbar-thumb {
|
|
27
|
+
background: rgba(255,255,255,0.12);
|
|
28
|
+
border-radius: 3px;
|
|
29
|
+
}
|
|
30
|
+
.ihelp-dialog ::-webkit-scrollbar-thumb:hover {
|
|
31
|
+
background: rgba(255,255,255,0.22);
|
|
32
|
+
}
|
|
33
|
+
.ihelp-dialog { scrollbar-color: rgba(255,255,255,0.12) transparent; scrollbar-width: thin; }
|
|
34
|
+
`;
|
|
35
|
+
document.head.appendChild(style);
|
|
36
|
+
}
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Internal: Build CSS custom property style object from theme
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Build a style object that sets both real CSS properties (backgroundColor,
|
|
42
|
+
* color) and custom property tokens (--ihelp-*) so child elements can
|
|
43
|
+
* reference them. The real properties guarantee the background renders
|
|
44
|
+
* even when the host dialog doesn't forward inline styles.
|
|
45
|
+
*/
|
|
46
|
+
function themeToStyle(theme) {
|
|
47
|
+
if (!theme)
|
|
48
|
+
return undefined;
|
|
49
|
+
const s = {};
|
|
50
|
+
// CSS custom properties for child consumption
|
|
51
|
+
if (theme.background)
|
|
52
|
+
s['--ihelp-bg'] = theme.background;
|
|
53
|
+
if (theme.foreground)
|
|
54
|
+
s['--ihelp-fg'] = theme.foreground;
|
|
55
|
+
if (theme.muted_foreground)
|
|
56
|
+
s['--ihelp-muted'] = theme.muted_foreground;
|
|
57
|
+
if (theme.border)
|
|
58
|
+
s['--ihelp-border'] = theme.border;
|
|
59
|
+
if (theme.accent)
|
|
60
|
+
s['--ihelp-accent'] = theme.accent;
|
|
61
|
+
if (theme.accent_foreground)
|
|
62
|
+
s['--ihelp-accent-fg'] = theme.accent_foreground;
|
|
63
|
+
if (theme.primary)
|
|
64
|
+
s['--ihelp-primary'] = theme.primary;
|
|
65
|
+
if (theme.primary_foreground)
|
|
66
|
+
s['--ihelp-primary-fg'] = theme.primary_foreground;
|
|
67
|
+
// Real CSS properties so the background actually renders
|
|
68
|
+
if (theme.background)
|
|
69
|
+
s['backgroundColor'] = theme.background;
|
|
70
|
+
if (theme.foreground)
|
|
71
|
+
s['color'] = theme.foreground;
|
|
72
|
+
return Object.keys(s).length > 0 ? s : undefined;
|
|
73
|
+
}
|
|
74
|
+
/** Default labels used when none are provided. */
|
|
75
|
+
const DEFAULT_LABELS = {
|
|
76
|
+
search_placeholder: 'Search help topics...',
|
|
77
|
+
dialog_title: 'Help',
|
|
78
|
+
more_info_prefix: 'More Info:',
|
|
79
|
+
related_topics: 'Related topics',
|
|
80
|
+
loading: 'Loading...',
|
|
81
|
+
no_results: 'No results found',
|
|
82
|
+
no_topics: 'No topics available',
|
|
83
|
+
select_prompt: 'Select a topic to view details',
|
|
84
|
+
browse_all: 'Browse all topics',
|
|
85
|
+
showing_help_for: 'Showing help for:',
|
|
86
|
+
};
|
|
87
|
+
// Try to load HazoUiDialog at runtime (optional peer dependency).
|
|
88
|
+
// Resolution is deferred to useEffect to avoid SSR/client mismatch.
|
|
89
|
+
let _hazoUiResolved = false;
|
|
90
|
+
let _HazoUiDialogComponent = null;
|
|
91
|
+
let _hazoUiPromise = null;
|
|
92
|
+
function getHazoUiPromise() {
|
|
93
|
+
if (!_hazoUiPromise) {
|
|
94
|
+
_hazoUiPromise = import('hazo_ui').then((mod) => { _HazoUiDialogComponent = mod.HazoUiDialog; _hazoUiResolved = true; }, () => { _hazoUiResolved = true; /* hazo_ui not installed — use fallback */ });
|
|
95
|
+
}
|
|
96
|
+
return _hazoUiPromise;
|
|
97
|
+
}
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Internal: Topic Card
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
/**
|
|
102
|
+
* Render a tag label in a friendlier way for non-expert users.
|
|
103
|
+
* Strips jargon symbols and abbreviations, using the variant to
|
|
104
|
+
* provide visual context instead.
|
|
105
|
+
*/
|
|
106
|
+
function friendlyTagLabel(label) {
|
|
107
|
+
return label
|
|
108
|
+
.replace(/[≤<>]/g, ' ') // strip math symbols
|
|
109
|
+
.replace(/\s+/g, ' ') // collapse whitespace
|
|
110
|
+
.trim();
|
|
111
|
+
}
|
|
112
|
+
/** Variant icon prefix for tags — simple unicode, no jargon */
|
|
113
|
+
const TAG_ICONS = {
|
|
114
|
+
success: '✓',
|
|
115
|
+
warning: '!',
|
|
116
|
+
info: 'ⓘ',
|
|
117
|
+
default: '•',
|
|
118
|
+
};
|
|
119
|
+
function TopicCard({ topic, is_selected, onSelect, hide_category = false, compact = false, }) {
|
|
120
|
+
// Compact mode: child topics render as a slim row instead of a full card
|
|
121
|
+
if (compact) {
|
|
122
|
+
return (_jsxs("button", { type: "button", onClick: () => onSelect(topic.id), className: cn('w-full flex items-center gap-2 text-left rounded-lg px-3 py-[7px] transition-all duration-150 border-l-2', is_selected
|
|
123
|
+
? 'border-l-[var(--ihelp-primary,#38bdf8)] bg-[var(--ihelp-primary,#38bdf8)]/[0.08] text-[var(--ihelp-fg,var(--foreground))] font-medium'
|
|
124
|
+
: 'border-l-transparent text-[var(--ihelp-fg,var(--foreground))]/70 hover:bg-white/[0.04] hover:text-[var(--ihelp-fg,var(--foreground))]'), children: [_jsx("span", { className: "text-[12px] truncate flex-1", children: topic.title }), topic.tags.length > 0 && (_jsx("span", { className: "flex gap-1 shrink-0", children: topic.tags.slice(0, 2).map((tag) => (_jsx("span", { className: cn('text-[9px] font-semibold px-[5px] py-[1px] rounded-full', tag.variant === 'success' && 'text-emerald-400 bg-emerald-500/10', tag.variant === 'warning' && 'text-amber-400 bg-amber-500/10', tag.variant === 'info' && 'text-sky-400 bg-sky-500/10', (!tag.variant || tag.variant === 'default') && 'text-slate-400 bg-white/[0.06]'), title: tag.label, children: TAG_ICONS[tag.variant || 'default'] }, tag.id))) }))] }));
|
|
125
|
+
}
|
|
126
|
+
return (_jsxs("button", { type: "button", onClick: () => onSelect(topic.id), className: cn('w-full text-left rounded-xl border px-4 py-3 transition-all duration-200', is_selected
|
|
127
|
+
? 'border-[var(--ihelp-primary,#38bdf8)]/50 bg-white/[0.07] shadow-[inset_0_0_0_1px_rgba(56,189,248,0.15),0_0_20px_-5px_rgba(56,189,248,0.25)]'
|
|
128
|
+
: 'border-transparent bg-white/[0.03] hover:bg-white/[0.06] hover:border-white/[0.08]'), children: [!hide_category && topic.category && (_jsx("p", { className: "text-[10px] text-[var(--ihelp-muted,var(--muted-foreground))]/60 mb-1 tracking-wider uppercase", children: topic.category })), _jsx("p", { className: "font-bold text-[13px] leading-snug text-[var(--ihelp-fg,var(--foreground))]", children: topic.title }), topic.description && (_jsx("p", { className: "text-[11px] text-[var(--ihelp-muted,var(--muted-foreground))]/80 mt-1 line-clamp-2 leading-relaxed", children: topic.description })), topic.tags.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1.5 mt-2.5", children: topic.tags.map((tag) => (_jsxs(Badge, { variant: tag.variant, className: "text-[10px] px-1.5 py-0", children: [TAG_ICONS[tag.variant || 'default'], " ", friendlyTagLabel(tag.label)] }, tag.id))) }))] }));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Build a two-level tree: Category → root topics → child topics.
|
|
132
|
+
*
|
|
133
|
+
* Categories with a single root topic that has no children are flattened
|
|
134
|
+
* to avoid unnecessary nesting.
|
|
135
|
+
*/
|
|
136
|
+
function buildTree(topics) {
|
|
137
|
+
const map = new Map();
|
|
138
|
+
// Create tree nodes
|
|
139
|
+
for (const t of topics) {
|
|
140
|
+
map.set(t.id, { ...t, tree_children: [] });
|
|
141
|
+
}
|
|
142
|
+
// Link parent → children (within the topic data)
|
|
143
|
+
for (const node of map.values()) {
|
|
144
|
+
if (node.parent_id && map.has(node.parent_id)) {
|
|
145
|
+
map.get(node.parent_id).tree_children.push(node);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Collect root topics (no parent or parent not in dataset)
|
|
149
|
+
const root_topics = [];
|
|
150
|
+
for (const node of map.values()) {
|
|
151
|
+
if (!node.parent_id || !map.has(node.parent_id)) {
|
|
152
|
+
root_topics.push(node);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Group root topics by category
|
|
156
|
+
const by_category = new Map();
|
|
157
|
+
for (const node of root_topics) {
|
|
158
|
+
const cat = node.category || 'General';
|
|
159
|
+
if (!by_category.has(cat))
|
|
160
|
+
by_category.set(cat, []);
|
|
161
|
+
by_category.get(cat).push(node);
|
|
162
|
+
}
|
|
163
|
+
// Build final tree: each category becomes a virtual group node
|
|
164
|
+
const result = [];
|
|
165
|
+
for (const [cat, nodes] of by_category) {
|
|
166
|
+
// Single root with no children → no need for category wrapper
|
|
167
|
+
if (nodes.length === 1 && nodes[0].tree_children.length === 0) {
|
|
168
|
+
result.push(nodes[0]);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
// Create synthetic category group node
|
|
172
|
+
const group = {
|
|
173
|
+
id: `__cat__${cat}`,
|
|
174
|
+
parent_id: null,
|
|
175
|
+
scope_id: null,
|
|
176
|
+
category: cat,
|
|
177
|
+
title: cat,
|
|
178
|
+
description: null,
|
|
179
|
+
content: null,
|
|
180
|
+
icon: null,
|
|
181
|
+
sort_order: nodes[0].sort_order,
|
|
182
|
+
is_published: true,
|
|
183
|
+
created_at: '',
|
|
184
|
+
changed_at: null,
|
|
185
|
+
tags: [],
|
|
186
|
+
context_keys: [],
|
|
187
|
+
tree_children: nodes,
|
|
188
|
+
is_category_group: true,
|
|
189
|
+
};
|
|
190
|
+
result.push(group);
|
|
191
|
+
}
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
function TopicTreeItem({ node, depth, selected_id, onSelect, }) {
|
|
195
|
+
const has_children = node.tree_children.length > 0;
|
|
196
|
+
const is_group = !!node.is_category_group;
|
|
197
|
+
/** Recursively check if any descendant is selected */
|
|
198
|
+
function hasSelectedDescendant(n) {
|
|
199
|
+
return n.tree_children.some((c) => c.id === selected_id || hasSelectedDescendant(c));
|
|
200
|
+
}
|
|
201
|
+
/** Count all real (non-group) leaf & branch topics in the subtree */
|
|
202
|
+
function countTopics(n) {
|
|
203
|
+
if (n.tree_children.length === 0)
|
|
204
|
+
return 1;
|
|
205
|
+
return n.tree_children.reduce((sum, c) => sum + countTopics(c), is_group ? 0 : 1);
|
|
206
|
+
}
|
|
207
|
+
const has_selected_child = has_children && hasSelectedDescendant(node);
|
|
208
|
+
const [expanded, setExpanded] = useState(depth < 1 || has_selected_child);
|
|
209
|
+
// Category group nodes and root-level parents → accordion header
|
|
210
|
+
if (has_children && (is_group || depth === 0)) {
|
|
211
|
+
return (_jsxs("div", { className: "mb-0.5", children: [_jsxs("button", { type: "button", onClick: () => {
|
|
212
|
+
setExpanded((prev) => !prev);
|
|
213
|
+
// Only select real topics, not synthetic category groups
|
|
214
|
+
if (!is_group)
|
|
215
|
+
onSelect(node.id);
|
|
216
|
+
}, className: cn('w-full flex items-center gap-2 text-left rounded-lg px-3 py-2 transition-all duration-150', 'hover:bg-white/[0.04]', expanded
|
|
217
|
+
? 'text-[var(--ihelp-fg,var(--foreground))]'
|
|
218
|
+
: 'text-[var(--ihelp-fg,var(--foreground))]/80'), children: [_jsx(ChevronRight, { className: cn('h-3 w-3 shrink-0 text-[var(--ihelp-muted,var(--muted-foreground))]/50 transition-transform duration-200', expanded && 'rotate-90') }), _jsx("span", { className: "text-[12px] font-semibold tracking-wide flex-1 truncate", children: node.title }), _jsx("span", { className: "text-[10px] font-semibold text-[var(--ihelp-muted,var(--muted-foreground))]/40 bg-white/[0.05] px-[6px] py-[1px] rounded-full", children: countTopics(node) })] }), expanded && (_jsx("div", { className: "pl-2 mt-0.5 mb-1 ml-[14px] border-l border-white/[0.04] flex flex-col gap-px", children: node.tree_children.map((child) => (_jsx(TopicTreeItem, { node: child, depth: depth + 1, selected_id: selected_id, onSelect: onSelect }, child.id))) }))] }));
|
|
219
|
+
}
|
|
220
|
+
// Nested parents (depth > 0 with children) — simpler collapsible
|
|
221
|
+
if (has_children) {
|
|
222
|
+
return (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => {
|
|
223
|
+
setExpanded((prev) => !prev);
|
|
224
|
+
onSelect(node.id);
|
|
225
|
+
}, className: cn('w-full flex items-center gap-1.5 text-left rounded-md px-2.5 py-1.5 text-[12px] transition-all duration-150', 'text-[var(--ihelp-fg,var(--foreground))]/80', 'hover:bg-white/[0.04] hover:text-[var(--ihelp-fg,var(--foreground))]', selected_id === node.id && 'bg-white/[0.06] text-[var(--ihelp-fg,var(--foreground))] font-medium'), children: [_jsx(ChevronRight, { className: cn('h-2.5 w-2.5 shrink-0 text-[var(--ihelp-muted,var(--muted-foreground))]/40 transition-transform duration-200', expanded && 'rotate-90') }), _jsx("span", { className: "truncate font-medium", children: node.title })] }), expanded && (_jsx("div", { className: "pl-2 ml-3 border-l border-white/[0.03] flex flex-col gap-px", children: node.tree_children.map((child) => (_jsx(TopicTreeItem, { node: child, depth: depth + 1, selected_id: selected_id, onSelect: onSelect }, child.id))) }))] }));
|
|
226
|
+
}
|
|
227
|
+
// Leaf nodes — compact row with left accent on selection
|
|
228
|
+
return (_jsx("button", { type: "button", onClick: () => onSelect(node.id), className: cn('w-full flex items-center gap-1.5 text-left rounded-md px-3 py-[7px] text-[12px] transition-all duration-150', 'border-l-2', selected_id === node.id
|
|
229
|
+
? 'border-l-[var(--ihelp-primary,#38bdf8)] bg-[var(--ihelp-primary,#38bdf8)]/[0.08] text-[var(--ihelp-fg,var(--foreground))] font-medium'
|
|
230
|
+
: 'border-l-transparent text-[var(--ihelp-fg,var(--foreground))]/70 hover:bg-white/[0.04] hover:text-[var(--ihelp-fg,var(--foreground))]'), children: _jsx("span", { className: "truncate", children: node.title }) }));
|
|
231
|
+
}
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
// Internal: Group topics by category
|
|
234
|
+
// ---------------------------------------------------------------------------
|
|
235
|
+
function groupByCategory(topics) {
|
|
236
|
+
const groups = new Map();
|
|
237
|
+
for (const t of topics) {
|
|
238
|
+
const key = t.category || 'General';
|
|
239
|
+
if (!groups.has(key))
|
|
240
|
+
groups.set(key, []);
|
|
241
|
+
groups.get(key).push(t);
|
|
242
|
+
}
|
|
243
|
+
return groups;
|
|
244
|
+
}
|
|
245
|
+
// ---------------------------------------------------------------------------
|
|
246
|
+
// Internal: Category Accordion (A + C hybrid)
|
|
247
|
+
// ---------------------------------------------------------------------------
|
|
248
|
+
/**
|
|
249
|
+
* Build a parent→children map from a flat list of topics.
|
|
250
|
+
* Root topics (no parent_id, or parent not in the list) become group leaders.
|
|
251
|
+
*/
|
|
252
|
+
function groupByParent(topics) {
|
|
253
|
+
const id_set = new Set(topics.map((t) => t.id));
|
|
254
|
+
const children = new Map();
|
|
255
|
+
const roots = [];
|
|
256
|
+
for (const t of topics) {
|
|
257
|
+
if (t.parent_id && id_set.has(t.parent_id)) {
|
|
258
|
+
if (!children.has(t.parent_id))
|
|
259
|
+
children.set(t.parent_id, []);
|
|
260
|
+
children.get(t.parent_id).push(t);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
roots.push(t);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return { roots, children };
|
|
267
|
+
}
|
|
268
|
+
function CategoryAccordion({ category, topics, selected_topic_id, onSelect, default_open = true, }) {
|
|
269
|
+
const has_selection = topics.some((t) => t.id === selected_topic_id);
|
|
270
|
+
const [open, setOpen] = useState(default_open || has_selection);
|
|
271
|
+
const { roots, children } = useMemo(() => groupByParent(topics), [topics]);
|
|
272
|
+
// Auto-expand when a topic in this group becomes selected
|
|
273
|
+
useEffect(() => {
|
|
274
|
+
if (has_selection && !open)
|
|
275
|
+
setOpen(true);
|
|
276
|
+
}, [has_selection]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
277
|
+
return (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => setOpen((prev) => !prev), className: cn('w-full flex items-center gap-2 text-left rounded-lg px-3 py-2 transition-all duration-150', 'hover:bg-white/[0.04]', open ? 'text-[var(--ihelp-fg,var(--foreground))]' : 'text-[var(--ihelp-fg,var(--foreground))]/80'), children: [_jsx(ChevronRight, { className: cn('h-3 w-3 shrink-0 text-[var(--ihelp-muted,var(--muted-foreground))]/50 transition-transform duration-200', open && 'rotate-90') }), _jsx("span", { className: "text-[12px] font-semibold tracking-wide flex-1", children: category }), _jsx("span", { className: "text-[10px] font-semibold text-[var(--ihelp-muted,var(--muted-foreground))]/40 bg-white/[0.05] px-[6px] py-[1px] rounded-full", children: topics.length })] }), open && (_jsx("div", { className: "pl-2 mt-1 mb-2 ml-[14px] border-l border-white/[0.04] flex flex-col gap-1.5", children: roots.map((topic) => {
|
|
278
|
+
const subs = children.get(topic.id);
|
|
279
|
+
return (_jsxs("div", { children: [_jsx(TopicCard, { topic: topic, is_selected: selected_topic_id === topic.id, onSelect: onSelect, hide_category: true }), subs && subs.length > 0 && (_jsx("div", { className: "ml-3 mt-1 mb-1 pl-2 border-l border-white/[0.03] flex flex-col gap-px", children: subs.map((child) => (_jsx(TopicCard, { topic: child, is_selected: selected_topic_id === child.id, onSelect: onSelect, hide_category: true, compact: true }, child.id))) }))] }, topic.id));
|
|
280
|
+
}) }))] }));
|
|
281
|
+
}
|
|
282
|
+
// ---------------------------------------------------------------------------
|
|
283
|
+
// Internal: Dialog body content (shared between HazoUiDialog and fallback)
|
|
284
|
+
// ---------------------------------------------------------------------------
|
|
285
|
+
function SearchDialogBody({ search, nav_stack, current_nav, selected_topic_id, setSelectedTopicId, push_nav, pop_nav, context_result, tree, selected_topic, handleSearchChange, handleNavigate, toggleBrowse, asset_base_url, provider_scope_id, theme, labels: labels_prop, }) {
|
|
286
|
+
const labels = { ...DEFAULT_LABELS, ...labels_prop };
|
|
287
|
+
// Inject scoped scrollbar CSS once
|
|
288
|
+
useEffect(() => { ensureScrollbarStyles(); }, []);
|
|
289
|
+
// Detect OS for shortcut hint (only on client to avoid hydration mismatch)
|
|
290
|
+
const [shortcut_hint, setShortcutHint] = useState('');
|
|
291
|
+
useEffect(() => {
|
|
292
|
+
const is_mac = /Mac|iPhone|iPad/.test(navigator.userAgent);
|
|
293
|
+
setShortcutHint(is_mac ? '\u2318K' : 'Ctrl+K');
|
|
294
|
+
}, []);
|
|
295
|
+
// Topics to show in the left pane
|
|
296
|
+
const left_topics = useMemo(() => {
|
|
297
|
+
if (!current_nav)
|
|
298
|
+
return [];
|
|
299
|
+
switch (current_nav.view) {
|
|
300
|
+
case 'context_home':
|
|
301
|
+
// Fall back to all topics if the context query returned nothing
|
|
302
|
+
return context_result.topics.length > 0
|
|
303
|
+
? context_result.topics
|
|
304
|
+
: search.all_topics;
|
|
305
|
+
case 'search':
|
|
306
|
+
return search.results;
|
|
307
|
+
case 'browse':
|
|
308
|
+
return search.all_topics;
|
|
309
|
+
default:
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
}, [current_nav, context_result.topics, search.results, search.all_topics]);
|
|
313
|
+
// Auto-select the first topic when topics load and nothing is selected
|
|
314
|
+
useEffect(() => {
|
|
315
|
+
if (selected_topic_id)
|
|
316
|
+
return;
|
|
317
|
+
if (current_nav?.view === 'browse' && tree.length > 0) {
|
|
318
|
+
setSelectedTopicId(tree[0].id);
|
|
319
|
+
}
|
|
320
|
+
else if (left_topics.length > 0) {
|
|
321
|
+
setSelectedTopicId(left_topics[0].id);
|
|
322
|
+
}
|
|
323
|
+
}, [left_topics, tree, selected_topic_id, current_nav, setSelectedTopicId]);
|
|
324
|
+
const theme_style = themeToStyle(theme);
|
|
325
|
+
return (_jsxs("div", { className: "ihelp-dialog flex h-full min-h-0 flex-1", style: theme_style, children: [_jsxs("div", { className: "w-[42%] border-r border-white/[0.06] flex flex-col shrink-0", style: { backgroundColor: 'rgba(0,0,0,0.12)' }, children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-3 shrink-0 border-b border-white/[0.06]", children: [nav_stack.length > 1 && (_jsx("button", { type: "button", onClick: pop_nav, className: "h-7 w-7 shrink-0 rounded-md flex items-center justify-center text-[var(--ihelp-muted,var(--muted-foreground))] hover:text-[var(--ihelp-fg,var(--foreground))] hover:bg-white/[0.06] transition-colors", children: _jsx(ChevronLeft, { className: "h-4 w-4" }) })), _jsxs("div", { className: "relative flex-1 min-w-0", children: [_jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--ihelp-muted,var(--muted-foreground))]" }), _jsx(Input, { placeholder: `${labels.search_placeholder} ${shortcut_hint}`, value: search.query, onChange: (e) => handleSearchChange(e.target.value), className: "pl-10 h-10 rounded-lg !border !border-white/[0.08] !bg-transparent shadow-none focus-visible:ring-1 focus-visible:ring-[var(--ihelp-primary,#38bdf8)]/40 focus-visible:border-[var(--ihelp-primary,#38bdf8)]/30 !text-[var(--ihelp-fg,inherit)] placeholder:!text-[var(--ihelp-muted,var(--muted-foreground))] transition-all" })] }), _jsx("button", { type: "button", onClick: toggleBrowse, className: cn('h-8 w-8 shrink-0 rounded-md flex items-center justify-center transition-colors', current_nav?.view === 'browse'
|
|
326
|
+
? 'bg-[var(--ihelp-primary,#38bdf8)]/15 text-[var(--ihelp-primary,#38bdf8)]'
|
|
327
|
+
: 'text-[var(--ihelp-muted,var(--muted-foreground))] hover:text-[var(--ihelp-fg,var(--foreground))] hover:bg-white/[0.06]'), title: labels.browse_all, children: _jsx(FolderTree, { className: "h-4 w-4" }) })] }), current_nav?.view === 'context_home' && (_jsx("div", { className: "shrink-0 px-3 py-1.5 border-b border-white/[0.06]", children: _jsxs("p", { className: "text-[11px] text-[var(--ihelp-primary,#38bdf8)] font-medium tracking-wide", children: [labels.showing_help_for, " ", _jsx("span", { className: "font-semibold", children: current_nav.context_key?.replace(/\./g, ' \u203A ') ?? '' })] }) })), _jsx("div", { className: "flex-1 overflow-y-auto px-3 py-2 flex flex-col gap-1", children: (search.loading || (current_nav?.view === 'context_home' && context_result.loading)) ? (_jsx("div", { className: "flex items-center justify-center py-12", children: _jsxs("div", { className: "flex flex-col items-center gap-2", children: [_jsx("div", { className: "h-5 w-5 border-2 border-[var(--ihelp-primary,#38bdf8)]/30 border-t-[var(--ihelp-primary,#38bdf8)] rounded-full animate-spin" }), _jsx("p", { className: "text-xs text-[var(--ihelp-muted,var(--muted-foreground))]/60", children: labels.loading })] }) })) : current_nav?.view === 'browse' ? (tree.length === 0 ? (_jsx("p", { className: "text-sm text-[var(--ihelp-muted,var(--muted-foreground))]/60 p-4 text-center", children: labels.no_topics })) : (tree.map((node) => (_jsx(TopicTreeItem, { node: node, depth: 0, selected_id: selected_topic_id, onSelect: (id) => setSelectedTopicId(id) }, node.id))))) : left_topics.length === 0 ? (_jsx("p", { className: "text-sm text-[var(--ihelp-muted,var(--muted-foreground))]/60 p-4 text-center", children: search.query ? labels.no_results : labels.no_topics })) : ((() => {
|
|
328
|
+
const grouped = groupByCategory(left_topics);
|
|
329
|
+
const entries = Array.from(grouped.entries());
|
|
330
|
+
// Single category: show cards directly without accordion
|
|
331
|
+
if (entries.length === 1) {
|
|
332
|
+
return (_jsx("div", { className: "flex flex-col gap-1.5", children: entries[0][1].map((topic) => (_jsx(TopicCard, { topic: topic, is_selected: selected_topic_id === topic.id, onSelect: (id) => setSelectedTopicId(id) }, topic.id))) }));
|
|
333
|
+
}
|
|
334
|
+
// Multiple categories: use accordion
|
|
335
|
+
return entries.map(([category, topics], idx) => (_jsx(CategoryAccordion, { category: category, topics: topics, selected_topic_id: selected_topic_id, onSelect: (id) => setSelectedTopicId(id), default_open: idx === 0 }, category)));
|
|
336
|
+
})()) })] }), _jsx("div", { className: "flex-1 overflow-y-auto p-5", style: {
|
|
337
|
+
backgroundImage: 'linear-gradient(155deg, rgba(80,200,255,0.22) 0%, rgba(60,160,210,0.13) 40%, rgba(140,190,220,0.08) 100%)',
|
|
338
|
+
backgroundColor: 'rgba(255,255,255,0.09)',
|
|
339
|
+
}, children: selected_topic ? (_jsx(IhelpDetailPanel, { topic: selected_topic, onNavigate: handleNavigate, asset_base_url: asset_base_url, provider_scope_id: provider_scope_id, labels: labels })) : (_jsx("div", { className: "flex items-center justify-center h-full text-sm text-[var(--ihelp-muted,var(--muted-foreground))]", children: labels.select_prompt })) })] }));
|
|
340
|
+
}
|
|
341
|
+
// ---------------------------------------------------------------------------
|
|
342
|
+
// IhelpSearchDialog
|
|
343
|
+
// ---------------------------------------------------------------------------
|
|
344
|
+
export function IhelpSearchDialog({ open, onOpenChange, initial_context_key, className, }) {
|
|
345
|
+
const ctx = useIhelpContext();
|
|
346
|
+
const { search } = ctx;
|
|
347
|
+
// Navigation stack
|
|
348
|
+
const [nav_stack, setNavStack] = useState([]);
|
|
349
|
+
const [selected_topic_id, setSelectedTopicId] = useState(null);
|
|
350
|
+
// Context-scoped topics (only fetched when context_key is provided)
|
|
351
|
+
const context_key_for_fetch = initial_context_key ?? '__none__';
|
|
352
|
+
const context_result = use_ihelp(context_key_for_fetch, ctx.api_base_url, ctx.scope_id);
|
|
353
|
+
// Reset state when dialog opens
|
|
354
|
+
useEffect(() => {
|
|
355
|
+
if (open) {
|
|
356
|
+
setSelectedTopicId(null);
|
|
357
|
+
search.set_query('');
|
|
358
|
+
if (initial_context_key) {
|
|
359
|
+
setNavStack([{ view: 'context_home', context_key: initial_context_key }]);
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
setNavStack([{ view: 'browse' }]);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}, [open, initial_context_key]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
366
|
+
// Current nav state
|
|
367
|
+
const current_nav = nav_stack.length > 0 ? nav_stack[nav_stack.length - 1] : null;
|
|
368
|
+
// Push a new state onto the stack
|
|
369
|
+
const push_nav = useCallback((state) => {
|
|
370
|
+
setNavStack((prev) => [...prev, state]);
|
|
371
|
+
}, []);
|
|
372
|
+
// Pop back
|
|
373
|
+
const pop_nav = useCallback(() => {
|
|
374
|
+
setNavStack((prev) => {
|
|
375
|
+
if (prev.length <= 1)
|
|
376
|
+
return prev;
|
|
377
|
+
return prev.slice(0, -1);
|
|
378
|
+
});
|
|
379
|
+
setSelectedTopicId(null);
|
|
380
|
+
}, []);
|
|
381
|
+
// Resolve selected topic from all_topics
|
|
382
|
+
const selected_topic = useMemo(() => {
|
|
383
|
+
if (!selected_topic_id)
|
|
384
|
+
return null;
|
|
385
|
+
return search.all_topics.find((t) => t.id === selected_topic_id) ?? null;
|
|
386
|
+
}, [selected_topic_id, search.all_topics]);
|
|
387
|
+
// Build tree for browse view
|
|
388
|
+
const tree = useMemo(() => buildTree(search.all_topics), [search.all_topics]);
|
|
389
|
+
// Handle search input change
|
|
390
|
+
const handleSearchChange = useCallback((value) => {
|
|
391
|
+
search.set_query(value);
|
|
392
|
+
if (value.trim()) {
|
|
393
|
+
if (current_nav?.view !== 'search') {
|
|
394
|
+
push_nav({ view: 'search', query: value });
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
else if (current_nav?.view === 'search') {
|
|
398
|
+
pop_nav();
|
|
399
|
+
}
|
|
400
|
+
}, [current_nav, push_nav, pop_nav, search]);
|
|
401
|
+
// Handle topic selection from detail panel child navigation
|
|
402
|
+
const handleNavigate = useCallback((topic_id) => {
|
|
403
|
+
setSelectedTopicId(topic_id);
|
|
404
|
+
}, []);
|
|
405
|
+
// Toggle browse
|
|
406
|
+
const toggleBrowse = useCallback(() => {
|
|
407
|
+
if (current_nav?.view === 'browse') {
|
|
408
|
+
pop_nav();
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
push_nav({ view: 'browse' });
|
|
412
|
+
}
|
|
413
|
+
}, [current_nav, push_nav, pop_nav]);
|
|
414
|
+
const bodyProps = {
|
|
415
|
+
search,
|
|
416
|
+
nav_stack,
|
|
417
|
+
current_nav,
|
|
418
|
+
selected_topic_id,
|
|
419
|
+
setSelectedTopicId,
|
|
420
|
+
push_nav,
|
|
421
|
+
pop_nav,
|
|
422
|
+
context_result,
|
|
423
|
+
tree,
|
|
424
|
+
selected_topic,
|
|
425
|
+
handleSearchChange,
|
|
426
|
+
handleNavigate,
|
|
427
|
+
toggleBrowse,
|
|
428
|
+
asset_base_url: ctx.asset_base_url,
|
|
429
|
+
provider_scope_id: ctx.scope_id,
|
|
430
|
+
theme: ctx.theme,
|
|
431
|
+
labels: ctx.labels,
|
|
432
|
+
};
|
|
433
|
+
// Resolve HazoUiDialog (async loaded optional dep — client-only)
|
|
434
|
+
const [HazoDialog, setHazoDialog] = useState(null);
|
|
435
|
+
useEffect(() => {
|
|
436
|
+
if (_hazoUiResolved) {
|
|
437
|
+
if (_HazoUiDialogComponent)
|
|
438
|
+
setHazoDialog(() => _HazoUiDialogComponent);
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
getHazoUiPromise().then(() => {
|
|
442
|
+
if (_HazoUiDialogComponent)
|
|
443
|
+
setHazoDialog(() => _HazoUiDialogComponent);
|
|
444
|
+
});
|
|
445
|
+
}, []);
|
|
446
|
+
const theme_style = themeToStyle(ctx.theme);
|
|
447
|
+
// Use HazoUiDialog if available, otherwise fallback to built-in dialog
|
|
448
|
+
if (HazoDialog) {
|
|
449
|
+
return (_jsx(HazoDialog, { open: open, onOpenChange: onOpenChange, title: "Help", sizeWidth: "min(95vw, 1100px)", sizeHeight: "min(85vh, 640px)", fixedSize: true, showCancelButton: false, actionButtonText: "", footerContent: null, openAnimation: "fade", closeAnimation: "fade", className: className, contentClassName: "!p-0 !overflow-hidden", headerClassName: "!hidden", footerClassName: "!hidden", bodyBackgroundColor: ctx.theme?.background, footerBackgroundColor: ctx.theme?.background, style: ctx.theme?.background ? { backgroundColor: ctx.theme.background, color: ctx.theme.foreground } : undefined, children: _jsx(SearchDialogBody, { ...bodyProps }) }));
|
|
450
|
+
}
|
|
451
|
+
// Fallback: use the built-in shadcn Dialog
|
|
452
|
+
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: cn('max-w-[1100px] w-[95vw] h-[640px] p-0 gap-0 flex flex-col overflow-hidden !rounded-2xl !border-white/10 !bg-transparent', className), style: theme_style, children: [_jsx(DialogTitle, { className: "sr-only", children: "Help search" }), _jsx(SearchDialogBody, { ...bodyProps })] }) }));
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=ihelp_search_dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ihelp_search_dialog.js","sourceRoot":"","sources":["../../src/components/ihelp_search_dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { IhelpProvider, useIhelpContext } from './ihelp_provider.js';
|
|
2
|
+
export { IhelpIcon } from './ihelp_icon.js';
|
|
3
|
+
export { IhelpDetailPanel } from './ihelp_detail_panel.js';
|
|
4
|
+
export { IhelpSearchDialog } from './ihelp_search_dialog.js';
|
|
5
|
+
export { IhelpRichEditor } from './ihelp_rich_editor.js';
|
|
6
|
+
export { IhelpEditor } from './ihelp_editor.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { IhelpProvider, useIhelpContext } from './ihelp_provider.js';
|
|
2
|
+
export { IhelpIcon } from './ihelp_icon.js';
|
|
3
|
+
export { IhelpDetailPanel } from './ihelp_detail_panel.js';
|
|
4
|
+
export { IhelpSearchDialog } from './ihelp_search_dialog.js';
|
|
5
|
+
export { IhelpRichEditor } from './ihelp_rich_editor.js';
|
|
6
|
+
export { IhelpEditor } from './ihelp_editor.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Node } from '@tiptap/core';
|
|
2
|
+
declare module '@tiptap/core' {
|
|
3
|
+
interface Commands<ReturnType> {
|
|
4
|
+
resizableImage: {
|
|
5
|
+
setImage: (options: {
|
|
6
|
+
src: string;
|
|
7
|
+
alt?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
width?: number;
|
|
10
|
+
height?: number;
|
|
11
|
+
align?: string;
|
|
12
|
+
}) => ReturnType;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export declare const ResizableImage: Node<any, any>;
|
|
17
|
+
//# sourceMappingURL=resizable_image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizable_image.d.ts","sourceRoot":"","sources":["../../src/components/resizable_image.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAsC,MAAM,cAAc,CAAC;AAGxE,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,cAAc,EAAE;YACd,QAAQ,EAAE,CAAC,OAAO,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,GAAG,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,KAAK,UAAU,CAAC;SACnI,CAAC;KACH;CACF;AA+LD,eAAO,MAAM,cAAc,gBA0DzB,CAAC"}
|