@fuzdev/fuz_ui 0.169.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +93 -0
- package/dist/Alert.svelte +108 -0
- package/dist/Alert.svelte.d.ts +16 -0
- package/dist/Alert.svelte.d.ts.map +1 -0
- package/dist/ApiDeclarationList.svelte +35 -0
- package/dist/ApiDeclarationList.svelte.d.ts +9 -0
- package/dist/ApiDeclarationList.svelte.d.ts.map +1 -0
- package/dist/ApiIndex.svelte +65 -0
- package/dist/ApiIndex.svelte.d.ts +23 -0
- package/dist/ApiIndex.svelte.d.ts.map +1 -0
- package/dist/ApiModule.svelte +124 -0
- package/dist/ApiModule.svelte.d.ts +22 -0
- package/dist/ApiModule.svelte.d.ts.map +1 -0
- package/dist/Breadcrumb.svelte +83 -0
- package/dist/Breadcrumb.svelte.d.ts +23 -0
- package/dist/Breadcrumb.svelte.d.ts.map +1 -0
- package/dist/Card.svelte +157 -0
- package/dist/Card.svelte.d.ts +13 -0
- package/dist/Card.svelte.d.ts.map +1 -0
- package/dist/ColorSchemeInput.svelte +65 -0
- package/dist/ColorSchemeInput.svelte.d.ts +11 -0
- package/dist/ColorSchemeInput.svelte.d.ts.map +1 -0
- package/dist/Contextmenu.svelte +30 -0
- package/dist/Contextmenu.svelte.d.ts +32 -0
- package/dist/Contextmenu.svelte.d.ts.map +1 -0
- package/dist/ContextmenuEntry.svelte +74 -0
- package/dist/ContextmenuEntry.svelte.d.ts +12 -0
- package/dist/ContextmenuEntry.svelte.d.ts.map +1 -0
- package/dist/ContextmenuLinkEntry.svelte +112 -0
- package/dist/ContextmenuLinkEntry.svelte.d.ts +12 -0
- package/dist/ContextmenuLinkEntry.svelte.d.ts.map +1 -0
- package/dist/ContextmenuRoot.svelte +372 -0
- package/dist/ContextmenuRoot.svelte.d.ts +71 -0
- package/dist/ContextmenuRoot.svelte.d.ts.map +1 -0
- package/dist/ContextmenuRootForSafariCompatibility.svelte +541 -0
- package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts +79 -0
- package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts.map +1 -0
- package/dist/ContextmenuSeparator.svelte +16 -0
- package/dist/ContextmenuSeparator.svelte.d.ts +4 -0
- package/dist/ContextmenuSeparator.svelte.d.ts.map +1 -0
- package/dist/ContextmenuSubmenu.svelte +116 -0
- package/dist/ContextmenuSubmenu.svelte.d.ts +10 -0
- package/dist/ContextmenuSubmenu.svelte.d.ts.map +1 -0
- package/dist/ContextmenuTextEntry.svelte +21 -0
- package/dist/ContextmenuTextEntry.svelte.d.ts +10 -0
- package/dist/ContextmenuTextEntry.svelte.d.ts.map +1 -0
- package/dist/CopyToClipboard.svelte +81 -0
- package/dist/CopyToClipboard.svelte.d.ts +18 -0
- package/dist/CopyToClipboard.svelte.d.ts.map +1 -0
- package/dist/DeclarationDetail.svelte +340 -0
- package/dist/DeclarationDetail.svelte.d.ts +8 -0
- package/dist/DeclarationDetail.svelte.d.ts.map +1 -0
- package/dist/DeclarationLink.svelte +50 -0
- package/dist/DeclarationLink.svelte.d.ts +8 -0
- package/dist/DeclarationLink.svelte.d.ts.map +1 -0
- package/dist/Details.svelte +51 -0
- package/dist/Details.svelte.d.ts +20 -0
- package/dist/Details.svelte.d.ts.map +1 -0
- package/dist/Dialog.svelte +217 -0
- package/dist/Dialog.svelte.d.ts +30 -0
- package/dist/Dialog.svelte.d.ts.map +1 -0
- package/dist/Dialogs.svelte +28 -0
- package/dist/Dialogs.svelte.d.ts +11 -0
- package/dist/Dialogs.svelte.d.ts.map +1 -0
- package/dist/Docs.svelte +179 -0
- package/dist/Docs.svelte.d.ts +13 -0
- package/dist/Docs.svelte.d.ts.map +1 -0
- package/dist/DocsContent.svelte +40 -0
- package/dist/DocsContent.svelte.d.ts +14 -0
- package/dist/DocsContent.svelte.d.ts.map +1 -0
- package/dist/DocsFooter.svelte +64 -0
- package/dist/DocsFooter.svelte.d.ts +15 -0
- package/dist/DocsFooter.svelte.d.ts.map +1 -0
- package/dist/DocsLink.svelte +41 -0
- package/dist/DocsLink.svelte.d.ts +12 -0
- package/dist/DocsLink.svelte.d.ts.map +1 -0
- package/dist/DocsList.svelte +44 -0
- package/dist/DocsList.svelte.d.ts +11 -0
- package/dist/DocsList.svelte.d.ts.map +1 -0
- package/dist/DocsMenu.svelte +55 -0
- package/dist/DocsMenu.svelte.d.ts +11 -0
- package/dist/DocsMenu.svelte.d.ts.map +1 -0
- package/dist/DocsMenuHeader.svelte +15 -0
- package/dist/DocsMenuHeader.svelte.d.ts +9 -0
- package/dist/DocsMenuHeader.svelte.d.ts.map +1 -0
- package/dist/DocsModulesList.svelte +32 -0
- package/dist/DocsModulesList.svelte.d.ts +7 -0
- package/dist/DocsModulesList.svelte.d.ts.map +1 -0
- package/dist/DocsPageLinks.svelte +61 -0
- package/dist/DocsPageLinks.svelte.d.ts +8 -0
- package/dist/DocsPageLinks.svelte.d.ts.map +1 -0
- package/dist/DocsPrimaryNav.svelte +93 -0
- package/dist/DocsPrimaryNav.svelte.d.ts +11 -0
- package/dist/DocsPrimaryNav.svelte.d.ts.map +1 -0
- package/dist/DocsSearch.svelte +48 -0
- package/dist/DocsSearch.svelte.d.ts +11 -0
- package/dist/DocsSearch.svelte.d.ts.map +1 -0
- package/dist/DocsSecondaryNav.svelte +63 -0
- package/dist/DocsSecondaryNav.svelte.d.ts +9 -0
- package/dist/DocsSecondaryNav.svelte.d.ts.map +1 -0
- package/dist/DocsTertiaryNav.svelte +118 -0
- package/dist/DocsTertiaryNav.svelte.d.ts +10 -0
- package/dist/DocsTertiaryNav.svelte.d.ts.map +1 -0
- package/dist/EcosystemLinks.svelte +53 -0
- package/dist/EcosystemLinks.svelte.d.ts +7 -0
- package/dist/EcosystemLinks.svelte.d.ts.map +1 -0
- package/dist/EcosystemLinksPanel.svelte +22 -0
- package/dist/EcosystemLinksPanel.svelte.d.ts +8 -0
- package/dist/EcosystemLinksPanel.svelte.d.ts.map +1 -0
- package/dist/GithubLink.svelte +75 -0
- package/dist/GithubLink.svelte.d.ts +14 -0
- package/dist/GithubLink.svelte.d.ts.map +1 -0
- package/dist/Glyph.svelte +28 -0
- package/dist/Glyph.svelte.d.ts +9 -0
- package/dist/Glyph.svelte.d.ts.map +1 -0
- package/dist/Hashlink.svelte +41 -0
- package/dist/Hashlink.svelte.d.ts +8 -0
- package/dist/Hashlink.svelte.d.ts.map +1 -0
- package/dist/HiddenPersonalLinks.svelte +6 -0
- package/dist/HiddenPersonalLinks.svelte.d.ts +27 -0
- package/dist/HiddenPersonalLinks.svelte.d.ts.map +1 -0
- package/dist/HueInput.svelte +127 -0
- package/dist/HueInput.svelte.d.ts +11 -0
- package/dist/HueInput.svelte.d.ts.map +1 -0
- package/dist/ImgOrSvg.svelte +58 -0
- package/dist/ImgOrSvg.svelte.d.ts +25 -0
- package/dist/ImgOrSvg.svelte.d.ts.map +1 -0
- package/dist/LibraryDetail.svelte +297 -0
- package/dist/LibraryDetail.svelte.d.ts +15 -0
- package/dist/LibraryDetail.svelte.d.ts.map +1 -0
- package/dist/LibrarySummary.svelte +151 -0
- package/dist/LibrarySummary.svelte.d.ts +16 -0
- package/dist/LibrarySummary.svelte.d.ts.map +1 -0
- package/dist/MdnLink.svelte +40 -0
- package/dist/MdnLink.svelte.d.ts +8 -0
- package/dist/MdnLink.svelte.d.ts.map +1 -0
- package/dist/Mdz.svelte +30 -0
- package/dist/Mdz.svelte.d.ts +10 -0
- package/dist/Mdz.svelte.d.ts.map +1 -0
- package/dist/MdzNodeView.svelte +93 -0
- package/dist/MdzNodeView.svelte.d.ts +9 -0
- package/dist/MdzNodeView.svelte.d.ts.map +1 -0
- package/dist/ModuleLink.svelte +48 -0
- package/dist/ModuleLink.svelte.d.ts +8 -0
- package/dist/ModuleLink.svelte.d.ts.map +1 -0
- package/dist/PasteFromClipboard.svelte +35 -0
- package/dist/PasteFromClipboard.svelte.d.ts +9 -0
- package/dist/PasteFromClipboard.svelte.d.ts.map +1 -0
- package/dist/PendingAnimation.svelte +62 -0
- package/dist/PendingAnimation.svelte.d.ts +13 -0
- package/dist/PendingAnimation.svelte.d.ts.map +1 -0
- package/dist/PendingButton.svelte +75 -0
- package/dist/PendingButton.svelte.d.ts +17 -0
- package/dist/PendingButton.svelte.d.ts.map +1 -0
- package/dist/ProjectLinks.svelte +54 -0
- package/dist/ProjectLinks.svelte.d.ts +19 -0
- package/dist/ProjectLinks.svelte.d.ts.map +1 -0
- package/dist/Redirect.svelte +44 -0
- package/dist/Redirect.svelte.d.ts +23 -0
- package/dist/Redirect.svelte.d.ts.map +1 -0
- package/dist/Spiders.svelte +57 -0
- package/dist/Spiders.svelte.d.ts +9 -0
- package/dist/Spiders.svelte.d.ts.map +1 -0
- package/dist/Svg.svelte +99 -0
- package/dist/Svg.svelte.d.ts +54 -0
- package/dist/Svg.svelte.d.ts.map +1 -0
- package/dist/Teleport.svelte +48 -0
- package/dist/Teleport.svelte.d.ts +15 -0
- package/dist/Teleport.svelte.d.ts.map +1 -0
- package/dist/ThemeInput.svelte +75 -0
- package/dist/ThemeInput.svelte.d.ts +15 -0
- package/dist/ThemeInput.svelte.d.ts.map +1 -0
- package/dist/Themed.svelte +101 -0
- package/dist/Themed.svelte.d.ts +24 -0
- package/dist/Themed.svelte.d.ts.map +1 -0
- package/dist/TomeContent.svelte +67 -0
- package/dist/TomeContent.svelte.d.ts +12 -0
- package/dist/TomeContent.svelte.d.ts.map +1 -0
- package/dist/TomeHeader.svelte +56 -0
- package/dist/TomeHeader.svelte.d.ts +4 -0
- package/dist/TomeHeader.svelte.d.ts.map +1 -0
- package/dist/TomeLink.svelte +29 -0
- package/dist/TomeLink.svelte.d.ts +10 -0
- package/dist/TomeLink.svelte.d.ts.map +1 -0
- package/dist/TomeSection.svelte +65 -0
- package/dist/TomeSection.svelte.d.ts +24 -0
- package/dist/TomeSection.svelte.d.ts.map +1 -0
- package/dist/TomeSectionHeader.svelte +90 -0
- package/dist/TomeSectionHeader.svelte.d.ts +13 -0
- package/dist/TomeSectionHeader.svelte.d.ts.map +1 -0
- package/dist/TypeLink.svelte +19 -0
- package/dist/TypeLink.svelte.d.ts +7 -0
- package/dist/TypeLink.svelte.d.ts.map +1 -0
- package/dist/alert.d.ts +7 -0
- package/dist/alert.d.ts.map +1 -0
- package/dist/alert.js +6 -0
- package/dist/api_search.svelte.d.ts +16 -0
- package/dist/api_search.svelte.d.ts.map +1 -0
- package/dist/api_search.svelte.js +61 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/context_helpers.d.ts +17 -0
- package/dist/context_helpers.d.ts.map +1 -0
- package/dist/context_helpers.js +19 -0
- package/dist/contextmenu_helpers.d.ts +16 -0
- package/dist/contextmenu_helpers.d.ts.map +1 -0
- package/dist/contextmenu_helpers.js +39 -0
- package/dist/contextmenu_state.svelte.d.ts +152 -0
- package/dist/contextmenu_state.svelte.d.ts.map +1 -0
- package/dist/contextmenu_state.svelte.js +424 -0
- package/dist/csp.d.ts +160 -0
- package/dist/csp.d.ts.map +1 -0
- package/dist/csp.js +354 -0
- package/dist/csp_of_ryanatkn.d.ts +6 -0
- package/dist/csp_of_ryanatkn.d.ts.map +1 -0
- package/dist/csp_of_ryanatkn.js +14 -0
- package/dist/declaration.svelte.d.ts +84 -0
- package/dist/declaration.svelte.d.ts.map +1 -0
- package/dist/declaration.svelte.js +66 -0
- package/dist/declaration_contextmenu.d.ts +4 -0
- package/dist/declaration_contextmenu.d.ts.map +1 -0
- package/dist/declaration_contextmenu.js +14 -0
- package/dist/dialog.d.ts +24 -0
- package/dist/dialog.d.ts.map +1 -0
- package/dist/dialog.js +12 -0
- package/dist/dimensions.svelte.d.ts +5 -0
- package/dist/dimensions.svelte.d.ts.map +1 -0
- package/dist/dimensions.svelte.js +4 -0
- package/dist/docs_helpers.svelte.d.ts +48 -0
- package/dist/docs_helpers.svelte.d.ts.map +1 -0
- package/dist/docs_helpers.svelte.js +99 -0
- package/dist/helpers.d.ts +2 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +16 -0
- package/dist/intersect.svelte.d.ts +47 -0
- package/dist/intersect.svelte.d.ts.map +1 -0
- package/dist/intersect.svelte.js +92 -0
- package/dist/library.svelte.d.ts +197 -0
- package/dist/library.svelte.d.ts.map +1 -0
- package/dist/library.svelte.js +130 -0
- package/dist/library_gen.d.ts +34 -0
- package/dist/library_gen.d.ts.map +1 -0
- package/dist/library_gen.js +123 -0
- package/dist/library_gen_helpers.d.ts +85 -0
- package/dist/library_gen_helpers.d.ts.map +1 -0
- package/dist/library_gen_helpers.js +188 -0
- package/dist/library_helpers.d.ts +54 -0
- package/dist/library_helpers.d.ts.map +1 -0
- package/dist/library_helpers.js +102 -0
- package/dist/logos.d.ts +134 -0
- package/dist/logos.d.ts.map +1 -0
- package/dist/logos.js +281 -0
- package/dist/mdz.d.ts +106 -0
- package/dist/mdz.d.ts.map +1 -0
- package/dist/mdz.js +1481 -0
- package/dist/mdz_components.d.ts +37 -0
- package/dist/mdz_components.d.ts.map +1 -0
- package/dist/mdz_components.js +12 -0
- package/dist/module.svelte.d.ts +47 -0
- package/dist/module.svelte.d.ts.map +1 -0
- package/dist/module.svelte.js +56 -0
- package/dist/module_contextmenu.d.ts +4 -0
- package/dist/module_contextmenu.d.ts.map +1 -0
- package/dist/module_contextmenu.js +14 -0
- package/dist/module_helpers.d.ts +69 -0
- package/dist/module_helpers.d.ts.map +1 -0
- package/dist/module_helpers.js +87 -0
- package/dist/rune_helpers.svelte.d.ts +6 -0
- package/dist/rune_helpers.svelte.d.ts.map +1 -0
- package/dist/rune_helpers.svelte.js +10 -0
- package/dist/storage.d.ts +13 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +43 -0
- package/dist/svelte_helpers.d.ts +37 -0
- package/dist/svelte_helpers.d.ts.map +1 -0
- package/dist/svelte_helpers.js +245 -0
- package/dist/themer.svelte.d.ts +24 -0
- package/dist/themer.svelte.d.ts.map +1 -0
- package/dist/themer.svelte.js +43 -0
- package/dist/tome.d.ts +80 -0
- package/dist/tome.d.ts.map +1 -0
- package/dist/tome.js +27 -0
- package/dist/ts_helpers.d.ts +110 -0
- package/dist/ts_helpers.d.ts.map +1 -0
- package/dist/ts_helpers.js +533 -0
- package/dist/tsdoc_helpers.d.ts +98 -0
- package/dist/tsdoc_helpers.d.ts.map +1 -0
- package/dist/tsdoc_helpers.js +221 -0
- package/package.json +128 -0
- package/src/lib/alert.ts +14 -0
- package/src/lib/api_search.svelte.ts +85 -0
- package/src/lib/constants.ts +3 -0
- package/src/lib/context_helpers.ts +47 -0
- package/src/lib/contextmenu_helpers.ts +63 -0
- package/src/lib/contextmenu_state.svelte.ts +515 -0
- package/src/lib/csp.ts +576 -0
- package/src/lib/csp_of_ryanatkn.ts +16 -0
- package/src/lib/declaration.svelte.ts +102 -0
- package/src/lib/declaration_contextmenu.ts +22 -0
- package/src/lib/dialog.ts +35 -0
- package/src/lib/dimensions.svelte.ts +4 -0
- package/src/lib/docs_helpers.svelte.ts +149 -0
- package/src/lib/helpers.ts +10 -0
- package/src/lib/intersect.svelte.ts +152 -0
- package/src/lib/library.svelte.ts +162 -0
- package/src/lib/library_gen.ts +160 -0
- package/src/lib/library_gen_helpers.ts +262 -0
- package/src/lib/library_helpers.ts +123 -0
- package/src/lib/logos.ts +302 -0
- package/src/lib/mdz.ts +1819 -0
- package/src/lib/mdz_components.ts +34 -0
- package/src/lib/module.svelte.ts +78 -0
- package/src/lib/module_contextmenu.ts +20 -0
- package/src/lib/module_helpers.ts +113 -0
- package/src/lib/rune_helpers.svelte.ts +10 -0
- package/src/lib/storage.ts +48 -0
- package/src/lib/svelte_helpers.ts +303 -0
- package/src/lib/themer.svelte.ts +68 -0
- package/src/lib/tome.ts +38 -0
- package/src/lib/ts_helpers.ts +662 -0
- package/src/lib/tsdoc_helpers.ts +259 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Snippet} from 'svelte';
|
|
3
|
+
import {swallow} from '@fuzdev/fuz_util/dom.js';
|
|
4
|
+
|
|
5
|
+
import {contextmenu_context, contextmenu_dimensions_context} from './contextmenu_state.svelte.js';
|
|
6
|
+
import type {Dimensions} from './dimensions.svelte.js';
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
icon,
|
|
10
|
+
menu,
|
|
11
|
+
children,
|
|
12
|
+
}: {
|
|
13
|
+
icon?: Snippet;
|
|
14
|
+
menu: Snippet;
|
|
15
|
+
children: Snippet;
|
|
16
|
+
} = $props();
|
|
17
|
+
|
|
18
|
+
const contextmenu = contextmenu_context.get();
|
|
19
|
+
|
|
20
|
+
const submenu = contextmenu.add_submenu();
|
|
21
|
+
|
|
22
|
+
const {layout} = contextmenu;
|
|
23
|
+
|
|
24
|
+
const selected = $derived(submenu.selected);
|
|
25
|
+
|
|
26
|
+
let el: HTMLElement | undefined = $state();
|
|
27
|
+
|
|
28
|
+
const parent_dimensions = contextmenu_dimensions_context.get();
|
|
29
|
+
const dimensions = contextmenu_dimensions_context.set();
|
|
30
|
+
|
|
31
|
+
let translate_x = $state(0);
|
|
32
|
+
let translate_y = $state(0);
|
|
33
|
+
$effect(() => {
|
|
34
|
+
if (el) update_position(el, layout, parent_dimensions);
|
|
35
|
+
});
|
|
36
|
+
const update_position = (el: HTMLElement, layout: Dimensions, parent_dimensions: Dimensions) => {
|
|
37
|
+
const {x, y, width, height} = el.getBoundingClientRect();
|
|
38
|
+
dimensions.width = width;
|
|
39
|
+
dimensions.height = height;
|
|
40
|
+
const base_x = x - translate_x;
|
|
41
|
+
const base_y = y - translate_y;
|
|
42
|
+
const overflow_right = base_x + width + parent_dimensions.width - layout.width;
|
|
43
|
+
if (overflow_right <= 0) {
|
|
44
|
+
translate_x = parent_dimensions.width;
|
|
45
|
+
} else {
|
|
46
|
+
const overflow_left = width - base_x;
|
|
47
|
+
if (overflow_left <= 0) {
|
|
48
|
+
translate_x = -width;
|
|
49
|
+
} else if (overflow_left > overflow_right) {
|
|
50
|
+
translate_x = parent_dimensions.width - overflow_right;
|
|
51
|
+
} else {
|
|
52
|
+
translate_x = overflow_left - width;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
translate_y = Math.min(0, layout.height - (base_y + height));
|
|
56
|
+
};
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<li role="none" style:--contextmenu_depth={submenu.depth}>
|
|
60
|
+
<!-- disabling the a11y warning because a parent element handles keyboard events -->
|
|
61
|
+
<div
|
|
62
|
+
class="menu_item plain selectable"
|
|
63
|
+
class:selected
|
|
64
|
+
role="menuitem"
|
|
65
|
+
aria-label="contextmenu submenmu"
|
|
66
|
+
aria-haspopup="menu"
|
|
67
|
+
tabindex="-1"
|
|
68
|
+
onmouseenter={(e) => {
|
|
69
|
+
swallow(e);
|
|
70
|
+
// This timeout fixes a bug on mobile where the mouseenter event
|
|
71
|
+
// fires immediately when the contextmenu appears,
|
|
72
|
+
// and then the newly mounted selected entry immediately receives a click event.
|
|
73
|
+
// The timeout ensures the click event is not passed through.
|
|
74
|
+
setTimeout(() => contextmenu.select(submenu));
|
|
75
|
+
}}
|
|
76
|
+
aria-expanded={selected}
|
|
77
|
+
>
|
|
78
|
+
<div class="content">
|
|
79
|
+
<div class="icon">
|
|
80
|
+
{@render icon?.()}
|
|
81
|
+
</div>
|
|
82
|
+
<div class="title">{@render children()}</div>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="chevron" aria-hidden="true"></div>
|
|
85
|
+
</div>
|
|
86
|
+
{#if selected}
|
|
87
|
+
<menu
|
|
88
|
+
bind:this={el}
|
|
89
|
+
class="pane unstyled"
|
|
90
|
+
style:transform="translate3d({translate_x}px, {translate_y}px, 0)"
|
|
91
|
+
style:max-height="{layout.height}px">{@render menu()}</menu
|
|
92
|
+
>
|
|
93
|
+
{/if}
|
|
94
|
+
</li>
|
|
95
|
+
|
|
96
|
+
<style>
|
|
97
|
+
li {
|
|
98
|
+
position: relative;
|
|
99
|
+
}
|
|
100
|
+
.chevron {
|
|
101
|
+
padding-left: 5px;
|
|
102
|
+
}
|
|
103
|
+
menu {
|
|
104
|
+
z-index: var(--contextmenu_depth);
|
|
105
|
+
position: absolute;
|
|
106
|
+
/* TODO this is a hack to avoid the pixel gap, probably change to 0 after adding transparent bg hitbox */
|
|
107
|
+
left: -1px;
|
|
108
|
+
top: 0;
|
|
109
|
+
max-width: var(--contextmenu_width);
|
|
110
|
+
width: 100%;
|
|
111
|
+
}
|
|
112
|
+
/* TODO hacky, needed because the base `.menu_item` added z-index */
|
|
113
|
+
.menu_item {
|
|
114
|
+
z-index: unset;
|
|
115
|
+
}
|
|
116
|
+
</style>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
icon?: Snippet;
|
|
4
|
+
menu: Snippet;
|
|
5
|
+
children: Snippet;
|
|
6
|
+
};
|
|
7
|
+
declare const ContextmenuSubmenu: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type ContextmenuSubmenu = ReturnType<typeof ContextmenuSubmenu>;
|
|
9
|
+
export default ContextmenuSubmenu;
|
|
10
|
+
//# sourceMappingURL=ContextmenuSubmenu.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextmenuSubmenu.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ContextmenuSubmenu.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAMnC,KAAK,gBAAgB,GAAI;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AAkFH,QAAA,MAAM,kBAAkB,sDAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import ContextmenuEntry from './ContextmenuEntry.svelte';
|
|
3
|
+
import type {ContextmenuRun} from './contextmenu_state.svelte.js';
|
|
4
|
+
|
|
5
|
+
const {
|
|
6
|
+
run,
|
|
7
|
+
content,
|
|
8
|
+
icon: icon_text,
|
|
9
|
+
}: {
|
|
10
|
+
run: ContextmenuRun;
|
|
11
|
+
content: string; // TODO @many rethink this API
|
|
12
|
+
icon: string; // TODO @many rethink this API
|
|
13
|
+
} = $props();
|
|
14
|
+
|
|
15
|
+
// TODO consider making this the implicit default entry, so consumers can simply declare `{run, content}`
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<ContextmenuEntry {run}>
|
|
19
|
+
{#snippet icon()}{icon_text}{/snippet}
|
|
20
|
+
{content}
|
|
21
|
+
</ContextmenuEntry>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ContextmenuRun } from './contextmenu_state.svelte.js';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
run: ContextmenuRun;
|
|
4
|
+
content: string;
|
|
5
|
+
icon: string;
|
|
6
|
+
};
|
|
7
|
+
declare const ContextmenuTextEntry: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type ContextmenuTextEntry = ReturnType<typeof ContextmenuTextEntry>;
|
|
9
|
+
export default ContextmenuTextEntry;
|
|
10
|
+
//# sourceMappingURL=ContextmenuTextEntry.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextmenuTextEntry.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ContextmenuTextEntry.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAEjE,KAAK,gBAAgB,GAAI;IACxB,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAqBH,QAAA,MAAM,oBAAoB,sDAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {OmitStrict} from '@fuzdev/fuz_util/types.js';
|
|
3
|
+
import type {Snippet} from 'svelte';
|
|
4
|
+
import type {SvelteHTMLElements} from 'svelte/elements';
|
|
5
|
+
import {scale, slide} from 'svelte/transition';
|
|
6
|
+
|
|
7
|
+
// TODO @many should this have the Button suffix?
|
|
8
|
+
|
|
9
|
+
// TODO add docs entry, see also PasteFromClipboard.svelte
|
|
10
|
+
|
|
11
|
+
const {
|
|
12
|
+
text,
|
|
13
|
+
copied_display_duration = 1000,
|
|
14
|
+
allow_copying_empty_string,
|
|
15
|
+
icon_button = true,
|
|
16
|
+
oncopy,
|
|
17
|
+
disabled: disabled_prop,
|
|
18
|
+
children,
|
|
19
|
+
class: class_prop,
|
|
20
|
+
...rest
|
|
21
|
+
}: OmitStrict<SvelteHTMLElements['button'], 'children'> & {
|
|
22
|
+
text: string | null;
|
|
23
|
+
copied_display_duration?: number;
|
|
24
|
+
allow_copying_empty_string?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Defaults to `true`, ignored if `children` is provided.
|
|
27
|
+
*/
|
|
28
|
+
icon_button?: boolean;
|
|
29
|
+
oncopy?: (text: string | null, e: MouseEvent) => void;
|
|
30
|
+
children?: Snippet<[copied: boolean, failed: boolean]>;
|
|
31
|
+
} = $props();
|
|
32
|
+
|
|
33
|
+
// These are for visual feedback
|
|
34
|
+
let copied = $state(false);
|
|
35
|
+
let failed = $state(false);
|
|
36
|
+
let copy_timeout: NodeJS.Timeout | undefined;
|
|
37
|
+
|
|
38
|
+
const copy = async (e: MouseEvent) => {
|
|
39
|
+
clearTimeout(copy_timeout);
|
|
40
|
+
if (text === null) return; // allows copying ''
|
|
41
|
+
|
|
42
|
+
copied = false;
|
|
43
|
+
failed = false;
|
|
44
|
+
|
|
45
|
+
try {
|
|
46
|
+
await navigator.clipboard.writeText(text);
|
|
47
|
+
copied = true;
|
|
48
|
+
} catch (_err) {
|
|
49
|
+
failed = true;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Reset after display duration
|
|
54
|
+
copy_timeout = setTimeout(() => {
|
|
55
|
+
copied = false;
|
|
56
|
+
}, copied_display_duration);
|
|
57
|
+
|
|
58
|
+
oncopy?.(text, e);
|
|
59
|
+
};
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
<button
|
|
63
|
+
type="button"
|
|
64
|
+
title="copy to clipboard"
|
|
65
|
+
{...rest}
|
|
66
|
+
class="copy_to_clipboard {class_prop}"
|
|
67
|
+
class:icon_button={children ? false : icon_button}
|
|
68
|
+
class:copied
|
|
69
|
+
class:failed
|
|
70
|
+
class:color_c={failed}
|
|
71
|
+
onclick={copy}
|
|
72
|
+
disabled={disabled_prop ?? (allow_copying_empty_string ? text === null : !text)}
|
|
73
|
+
>
|
|
74
|
+
{#if children}
|
|
75
|
+
{@render children(copied, failed)}
|
|
76
|
+
{:else if copied}
|
|
77
|
+
<div in:scale={{duration: 200}}>✓</div>
|
|
78
|
+
{:else}
|
|
79
|
+
<div in:slide>⧉</div>
|
|
80
|
+
{/if}
|
|
81
|
+
</button>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { OmitStrict } from '@fuzdev/fuz_util/types.js';
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
4
|
+
type $$ComponentProps = OmitStrict<SvelteHTMLElements['button'], 'children'> & {
|
|
5
|
+
text: string | null;
|
|
6
|
+
copied_display_duration?: number;
|
|
7
|
+
allow_copying_empty_string?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Defaults to `true`, ignored if `children` is provided.
|
|
10
|
+
*/
|
|
11
|
+
icon_button?: boolean;
|
|
12
|
+
oncopy?: (text: string | null, e: MouseEvent) => void;
|
|
13
|
+
children?: Snippet<[copied: boolean, failed: boolean]>;
|
|
14
|
+
};
|
|
15
|
+
declare const CopyToClipboard: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
16
|
+
type CopyToClipboard = ReturnType<typeof CopyToClipboard>;
|
|
17
|
+
export default CopyToClipboard;
|
|
18
|
+
//# sourceMappingURL=CopyToClipboard.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyToClipboard.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/CopyToClipboard.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAGvD,KAAK,gBAAgB,GAAI,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD,CAAC;AAgEH,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Code from '@fuzdev/fuz_code/Code.svelte';
|
|
3
|
+
|
|
4
|
+
import type {Declaration} from './declaration.svelte.js';
|
|
5
|
+
import Details from './Details.svelte';
|
|
6
|
+
import TypeLink from './TypeLink.svelte';
|
|
7
|
+
import ModuleLink from './ModuleLink.svelte';
|
|
8
|
+
import Mdz from './Mdz.svelte';
|
|
9
|
+
|
|
10
|
+
const {declaration}: {declaration: Declaration} = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<!-- Metadata -->
|
|
14
|
+
<p class="row justify_content_space_between">
|
|
15
|
+
<ModuleLink module_path={declaration.module_path} />
|
|
16
|
+
{#if declaration.url_github}
|
|
17
|
+
<!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
|
|
18
|
+
<a class="chip" href={declaration.url_github} target="_blank" rel="noopener">view source</a>
|
|
19
|
+
{/if}
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
<!-- eslint-disable-next-line @typescript-eslint/no-deprecated -->
|
|
23
|
+
{#if declaration.is_deprecated}
|
|
24
|
+
<p>
|
|
25
|
+
<strong>⚠️ deprecated:</strong>
|
|
26
|
+
<!-- eslint-disable-next-line @typescript-eslint/no-deprecated -->
|
|
27
|
+
{declaration.deprecated_message}
|
|
28
|
+
</p>
|
|
29
|
+
{/if}
|
|
30
|
+
|
|
31
|
+
<!-- type signature -->
|
|
32
|
+
{#if declaration.type_signature}
|
|
33
|
+
<Code content={declaration.type_signature} lang="ts" class="mb_lg" />
|
|
34
|
+
{/if}
|
|
35
|
+
|
|
36
|
+
<!-- documentation -->
|
|
37
|
+
{#if declaration.has_documentation}
|
|
38
|
+
<Mdz content={declaration.doc_comment!} />
|
|
39
|
+
{/if}
|
|
40
|
+
|
|
41
|
+
<!-- parameters -->
|
|
42
|
+
{#if declaration.parameters?.length}
|
|
43
|
+
<section>
|
|
44
|
+
{#each declaration.parameters as param (param)}
|
|
45
|
+
<section>
|
|
46
|
+
<h4>
|
|
47
|
+
<code
|
|
48
|
+
>{param.name}{#if param.optional}<strong>?</strong>{/if}</code
|
|
49
|
+
>
|
|
50
|
+
</h4>
|
|
51
|
+
{#if param.description}
|
|
52
|
+
<Mdz content={param.description} />
|
|
53
|
+
{/if}
|
|
54
|
+
<div class="row gap_md">
|
|
55
|
+
<strong>type</strong>
|
|
56
|
+
<TypeLink type={param.type} />
|
|
57
|
+
</div>
|
|
58
|
+
{#if param.optional || param.default_value}
|
|
59
|
+
<div class="row gap_md">
|
|
60
|
+
{#if param.optional}
|
|
61
|
+
<span class="chip">optional</span>
|
|
62
|
+
{/if}
|
|
63
|
+
{#if param.default_value}
|
|
64
|
+
<strong>default</strong>
|
|
65
|
+
<Code content={param.default_value} lang="ts" />
|
|
66
|
+
{/if}
|
|
67
|
+
</div>
|
|
68
|
+
{/if}
|
|
69
|
+
</section>
|
|
70
|
+
{/each}
|
|
71
|
+
</section>
|
|
72
|
+
{/if}
|
|
73
|
+
|
|
74
|
+
<!-- component props (for Svelte components) -->
|
|
75
|
+
{#if declaration.props?.length}
|
|
76
|
+
<section>
|
|
77
|
+
{#each declaration.props as prop (prop)}
|
|
78
|
+
<section>
|
|
79
|
+
<h4>
|
|
80
|
+
<code
|
|
81
|
+
>{prop.name}{#if prop.optional}<strong>?</strong>{/if}</code
|
|
82
|
+
>
|
|
83
|
+
</h4>
|
|
84
|
+
{#if prop.description}
|
|
85
|
+
<Mdz content={prop.description} />
|
|
86
|
+
{/if}
|
|
87
|
+
<div class="row gap_md mb_lg">
|
|
88
|
+
<strong>type</strong>
|
|
89
|
+
<TypeLink type={prop.type} />
|
|
90
|
+
</div>
|
|
91
|
+
{#if prop.optional || prop.bindable || prop.default_value}
|
|
92
|
+
<div class="row gap_md">
|
|
93
|
+
{#if prop.optional}
|
|
94
|
+
<span class="chip">optional</span>
|
|
95
|
+
{/if}
|
|
96
|
+
{#if prop.bindable}
|
|
97
|
+
<span class="chip">bindable</span>
|
|
98
|
+
{/if}
|
|
99
|
+
{#if prop.default_value}
|
|
100
|
+
<strong>default</strong>
|
|
101
|
+
<Code content={prop.default_value} lang="ts" />
|
|
102
|
+
{/if}
|
|
103
|
+
</div>
|
|
104
|
+
{/if}
|
|
105
|
+
</section>
|
|
106
|
+
{/each}
|
|
107
|
+
</section>
|
|
108
|
+
{/if}
|
|
109
|
+
|
|
110
|
+
<!-- returns -->
|
|
111
|
+
{#if declaration.return_type}
|
|
112
|
+
<section>
|
|
113
|
+
<h4>returns</h4>
|
|
114
|
+
<Code content={declaration.return_type} lang="ts" />
|
|
115
|
+
{#if declaration.return_description}
|
|
116
|
+
<Mdz content={declaration.return_description} />
|
|
117
|
+
{/if}
|
|
118
|
+
</section>
|
|
119
|
+
{/if}
|
|
120
|
+
|
|
121
|
+
<!-- generics -->
|
|
122
|
+
{#if declaration.generic_params?.length}
|
|
123
|
+
<section>
|
|
124
|
+
<h4>generics</h4>
|
|
125
|
+
{#each declaration.generic_params as generic (generic)}
|
|
126
|
+
<section>
|
|
127
|
+
<h4><code>{generic.name}</code></h4>
|
|
128
|
+
{#if generic.constraint}
|
|
129
|
+
<div class="row gap_md">
|
|
130
|
+
<strong>constraint</strong>
|
|
131
|
+
<TypeLink type={generic.constraint} />
|
|
132
|
+
</div>
|
|
133
|
+
{/if}
|
|
134
|
+
{#if generic.default_type}
|
|
135
|
+
<div class="row gap_md">
|
|
136
|
+
<strong>default</strong>
|
|
137
|
+
<TypeLink type={generic.default_type} />
|
|
138
|
+
</div>
|
|
139
|
+
{/if}
|
|
140
|
+
</section>
|
|
141
|
+
{/each}
|
|
142
|
+
</section>
|
|
143
|
+
{/if}
|
|
144
|
+
|
|
145
|
+
<!-- Extends/Implements -->
|
|
146
|
+
{#if declaration.extends?.length || declaration.implements?.length}
|
|
147
|
+
<section>
|
|
148
|
+
<h4>inheritance</h4>
|
|
149
|
+
{#if declaration.extends?.length}
|
|
150
|
+
<div>
|
|
151
|
+
<strong>extends:</strong>
|
|
152
|
+
<ul>
|
|
153
|
+
{#each declaration.extends as ext (ext)}
|
|
154
|
+
<li><TypeLink type={ext} /></li>
|
|
155
|
+
{/each}
|
|
156
|
+
</ul>
|
|
157
|
+
</div>
|
|
158
|
+
{/if}
|
|
159
|
+
{#if declaration.implements?.length}
|
|
160
|
+
<div>
|
|
161
|
+
<strong>implements:</strong>
|
|
162
|
+
<ul>
|
|
163
|
+
{#each declaration.implements as impl (impl)}
|
|
164
|
+
<li><TypeLink type={impl} /></li>
|
|
165
|
+
{/each}
|
|
166
|
+
</ul>
|
|
167
|
+
</div>
|
|
168
|
+
{/if}
|
|
169
|
+
</section>
|
|
170
|
+
{/if}
|
|
171
|
+
|
|
172
|
+
<!-- throws -->
|
|
173
|
+
{#if declaration.throws?.length}
|
|
174
|
+
<section>
|
|
175
|
+
<h4>throws</h4>
|
|
176
|
+
<ul>
|
|
177
|
+
{#each declaration.throws as thrown (thrown)}
|
|
178
|
+
<li>
|
|
179
|
+
{#if thrown.type}
|
|
180
|
+
<code>{thrown.type}</code> - {thrown.description}
|
|
181
|
+
{:else}
|
|
182
|
+
{thrown.description}
|
|
183
|
+
{/if}
|
|
184
|
+
</li>
|
|
185
|
+
{/each}
|
|
186
|
+
</ul>
|
|
187
|
+
</section>
|
|
188
|
+
{/if}
|
|
189
|
+
|
|
190
|
+
<!-- since -->
|
|
191
|
+
{#if declaration.since}
|
|
192
|
+
<section>
|
|
193
|
+
<h4>since</h4>
|
|
194
|
+
<p>{declaration.since}</p>
|
|
195
|
+
</section>
|
|
196
|
+
{/if}
|
|
197
|
+
|
|
198
|
+
<!-- examples -->
|
|
199
|
+
{#if declaration.examples?.length}
|
|
200
|
+
<section>
|
|
201
|
+
<h4>examples</h4>
|
|
202
|
+
{#each declaration.examples as example, i (example)}
|
|
203
|
+
<Details>
|
|
204
|
+
{#snippet summary()}Example {i + 1}{/snippet}
|
|
205
|
+
<Code content={example} lang="ts" />
|
|
206
|
+
</Details>
|
|
207
|
+
{/each}
|
|
208
|
+
</section>
|
|
209
|
+
{/if}
|
|
210
|
+
|
|
211
|
+
<!-- see also -->
|
|
212
|
+
{#if declaration.see_also?.length}
|
|
213
|
+
<section>
|
|
214
|
+
<h4>see also</h4>
|
|
215
|
+
<ul>
|
|
216
|
+
{#each declaration.see_also as ref (ref)}
|
|
217
|
+
<li>
|
|
218
|
+
<Mdz content={ref} />
|
|
219
|
+
</li>
|
|
220
|
+
{/each}
|
|
221
|
+
</ul>
|
|
222
|
+
</section>
|
|
223
|
+
{/if}
|
|
224
|
+
|
|
225
|
+
<!-- members (for classes) -->
|
|
226
|
+
{#if declaration.members?.length}
|
|
227
|
+
<section>
|
|
228
|
+
{#each declaration.members as member (member)}
|
|
229
|
+
<section>
|
|
230
|
+
<h4><code>{member.name}</code></h4>
|
|
231
|
+
{#if member.doc_comment}
|
|
232
|
+
<Mdz content={member.doc_comment} />
|
|
233
|
+
{/if}
|
|
234
|
+
{#if member.type_signature}
|
|
235
|
+
<p class="row gap_md">
|
|
236
|
+
<strong>type</strong>
|
|
237
|
+
<TypeLink
|
|
238
|
+
type={member.kind === 'constructor'
|
|
239
|
+
? `new ${member.type_signature}`
|
|
240
|
+
: member.type_signature}
|
|
241
|
+
/>
|
|
242
|
+
</p>
|
|
243
|
+
{/if}
|
|
244
|
+
{#if member.modifiers?.length}
|
|
245
|
+
<div class="row gap_md">
|
|
246
|
+
{#each member.modifiers as modifier (modifier)}
|
|
247
|
+
<span class="chip">{modifier}</span>
|
|
248
|
+
{/each}
|
|
249
|
+
</div>
|
|
250
|
+
{/if}
|
|
251
|
+
<!-- parameters for methods and constructors -->
|
|
252
|
+
{#if member.parameters?.length}
|
|
253
|
+
<section>
|
|
254
|
+
{#each member.parameters as param (param)}
|
|
255
|
+
<section>
|
|
256
|
+
<h5>
|
|
257
|
+
<code
|
|
258
|
+
>{param.name}{#if param.optional}<strong>?</strong>{/if}</code
|
|
259
|
+
>
|
|
260
|
+
</h5>
|
|
261
|
+
{#if param.description}
|
|
262
|
+
<Mdz content={param.description} />
|
|
263
|
+
{/if}
|
|
264
|
+
<div class="row gap_md">
|
|
265
|
+
<strong>type</strong>
|
|
266
|
+
<TypeLink type={param.type} />
|
|
267
|
+
</div>
|
|
268
|
+
{#if param.optional || param.default_value}
|
|
269
|
+
<div class="row gap_md">
|
|
270
|
+
{#if param.optional}
|
|
271
|
+
<span class="chip">optional</span>
|
|
272
|
+
{/if}
|
|
273
|
+
{#if param.default_value}
|
|
274
|
+
<strong>default</strong>
|
|
275
|
+
<Code content={param.default_value} lang="ts" />
|
|
276
|
+
{/if}
|
|
277
|
+
</div>
|
|
278
|
+
{/if}
|
|
279
|
+
</section>
|
|
280
|
+
{/each}
|
|
281
|
+
</section>
|
|
282
|
+
{/if}
|
|
283
|
+
<!-- return type for methods -->
|
|
284
|
+
{#if member.return_type}
|
|
285
|
+
<div class="row gap_md">
|
|
286
|
+
<strong>returns</strong>
|
|
287
|
+
<TypeLink type={member.return_type} />
|
|
288
|
+
</div>
|
|
289
|
+
{#if member.return_description}
|
|
290
|
+
<Mdz content={member.return_description} />
|
|
291
|
+
{/if}
|
|
292
|
+
{/if}
|
|
293
|
+
<!-- throws for methods and constructors -->
|
|
294
|
+
{#if member.throws?.length}
|
|
295
|
+
<div>
|
|
296
|
+
<strong>throws</strong>
|
|
297
|
+
<ul>
|
|
298
|
+
{#each member.throws as thrown (thrown)}
|
|
299
|
+
<li>
|
|
300
|
+
{#if thrown.type}
|
|
301
|
+
<code>{thrown.type}</code> - {thrown.description}
|
|
302
|
+
{:else}
|
|
303
|
+
{thrown.description}
|
|
304
|
+
{/if}
|
|
305
|
+
</li>
|
|
306
|
+
{/each}
|
|
307
|
+
</ul>
|
|
308
|
+
</div>
|
|
309
|
+
{/if}
|
|
310
|
+
</section>
|
|
311
|
+
{/each}
|
|
312
|
+
</section>
|
|
313
|
+
{/if}
|
|
314
|
+
|
|
315
|
+
<!-- properties (for types/interfaces) -->
|
|
316
|
+
{#if declaration.properties?.length}
|
|
317
|
+
<section>
|
|
318
|
+
{#each declaration.properties as prop (prop)}
|
|
319
|
+
<section>
|
|
320
|
+
<h4><code>{prop.name}</code></h4>
|
|
321
|
+
{#if prop.doc_comment}
|
|
322
|
+
<Mdz content={prop.doc_comment} />
|
|
323
|
+
{/if}
|
|
324
|
+
{#if prop.type_signature}
|
|
325
|
+
<div class="row gap_md">
|
|
326
|
+
<strong>type</strong>
|
|
327
|
+
<TypeLink type={prop.type_signature} />
|
|
328
|
+
</div>
|
|
329
|
+
{/if}
|
|
330
|
+
{#if prop.modifiers?.length}
|
|
331
|
+
<div class="row gap_md">
|
|
332
|
+
{#each prop.modifiers as modifier (modifier)}
|
|
333
|
+
<span class="chip">{modifier}</span>
|
|
334
|
+
{/each}
|
|
335
|
+
</div>
|
|
336
|
+
{/if}
|
|
337
|
+
</section>
|
|
338
|
+
{/each}
|
|
339
|
+
</section>
|
|
340
|
+
{/if}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Declaration } from './declaration.svelte.js';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
declaration: Declaration;
|
|
4
|
+
};
|
|
5
|
+
declare const DeclarationDetail: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type DeclarationDetail = ReturnType<typeof DeclarationDetail>;
|
|
7
|
+
export default DeclarationDetail;
|
|
8
|
+
//# sourceMappingURL=DeclarationDetail.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeclarationDetail.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DeclarationDetail.svelte"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAMxD,KAAK,gBAAgB,GAAI;IAAC,WAAW,EAAE,WAAW,CAAA;CAAC,CAAC;AAgVrD,QAAA,MAAM,iBAAiB,sDAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {SvelteHTMLElements} from 'svelte/elements';
|
|
3
|
+
|
|
4
|
+
import {library_context} from './library.svelte.js';
|
|
5
|
+
import {contextmenu_attachment} from './contextmenu_state.svelte.js';
|
|
6
|
+
import {create_declaration_contextmenu} from './declaration_contextmenu.js';
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
name,
|
|
10
|
+
children,
|
|
11
|
+
class: class_prop = 'chip',
|
|
12
|
+
...rest
|
|
13
|
+
}: SvelteHTMLElements['a'] & {
|
|
14
|
+
name: string;
|
|
15
|
+
} = $props();
|
|
16
|
+
|
|
17
|
+
const library = library_context.get();
|
|
18
|
+
|
|
19
|
+
const declaration = $derived(library.lookup_declaration(name));
|
|
20
|
+
|
|
21
|
+
const contextmenu_entries = $derived(
|
|
22
|
+
declaration ? create_declaration_contextmenu(declaration) : undefined,
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
// TODO @many support full https:// url variants - automatic detection? library prop?
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
{#if declaration}
|
|
29
|
+
<!-- TODO maybe colors per declaration.kind? -->
|
|
30
|
+
<!-- eslint-disable svelte/no-navigation-without-resolve -->
|
|
31
|
+
<a
|
|
32
|
+
{...rest}
|
|
33
|
+
class="declaration_link {class_prop}"
|
|
34
|
+
href={declaration.url_api}
|
|
35
|
+
{@attach contextmenu_attachment(contextmenu_entries)}
|
|
36
|
+
>
|
|
37
|
+
{#if children}
|
|
38
|
+
{@render children()}
|
|
39
|
+
{:else}
|
|
40
|
+
{name}
|
|
41
|
+
{/if}
|
|
42
|
+
</a>
|
|
43
|
+
{:else}
|
|
44
|
+
<!-- Fallback to plain text if not found -->
|
|
45
|
+
{#if children}
|
|
46
|
+
{@render children()}
|
|
47
|
+
{:else}
|
|
48
|
+
{name}
|
|
49
|
+
{/if}
|
|
50
|
+
{/if}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
2
|
+
type $$ComponentProps = SvelteHTMLElements['a'] & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
5
|
+
declare const DeclarationLink: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type DeclarationLink = ReturnType<typeof DeclarationLink>;
|
|
7
|
+
export default DeclarationLink;
|
|
8
|
+
//# sourceMappingURL=DeclarationLink.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeclarationLink.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DeclarationLink.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAMvD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG;IAClD,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AA+CH,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
|