@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.
Files changed (323) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/dist/Alert.svelte +108 -0
  4. package/dist/Alert.svelte.d.ts +16 -0
  5. package/dist/Alert.svelte.d.ts.map +1 -0
  6. package/dist/ApiDeclarationList.svelte +35 -0
  7. package/dist/ApiDeclarationList.svelte.d.ts +9 -0
  8. package/dist/ApiDeclarationList.svelte.d.ts.map +1 -0
  9. package/dist/ApiIndex.svelte +65 -0
  10. package/dist/ApiIndex.svelte.d.ts +23 -0
  11. package/dist/ApiIndex.svelte.d.ts.map +1 -0
  12. package/dist/ApiModule.svelte +124 -0
  13. package/dist/ApiModule.svelte.d.ts +22 -0
  14. package/dist/ApiModule.svelte.d.ts.map +1 -0
  15. package/dist/Breadcrumb.svelte +83 -0
  16. package/dist/Breadcrumb.svelte.d.ts +23 -0
  17. package/dist/Breadcrumb.svelte.d.ts.map +1 -0
  18. package/dist/Card.svelte +157 -0
  19. package/dist/Card.svelte.d.ts +13 -0
  20. package/dist/Card.svelte.d.ts.map +1 -0
  21. package/dist/ColorSchemeInput.svelte +65 -0
  22. package/dist/ColorSchemeInput.svelte.d.ts +11 -0
  23. package/dist/ColorSchemeInput.svelte.d.ts.map +1 -0
  24. package/dist/Contextmenu.svelte +30 -0
  25. package/dist/Contextmenu.svelte.d.ts +32 -0
  26. package/dist/Contextmenu.svelte.d.ts.map +1 -0
  27. package/dist/ContextmenuEntry.svelte +74 -0
  28. package/dist/ContextmenuEntry.svelte.d.ts +12 -0
  29. package/dist/ContextmenuEntry.svelte.d.ts.map +1 -0
  30. package/dist/ContextmenuLinkEntry.svelte +112 -0
  31. package/dist/ContextmenuLinkEntry.svelte.d.ts +12 -0
  32. package/dist/ContextmenuLinkEntry.svelte.d.ts.map +1 -0
  33. package/dist/ContextmenuRoot.svelte +372 -0
  34. package/dist/ContextmenuRoot.svelte.d.ts +71 -0
  35. package/dist/ContextmenuRoot.svelte.d.ts.map +1 -0
  36. package/dist/ContextmenuRootForSafariCompatibility.svelte +541 -0
  37. package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts +79 -0
  38. package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts.map +1 -0
  39. package/dist/ContextmenuSeparator.svelte +16 -0
  40. package/dist/ContextmenuSeparator.svelte.d.ts +4 -0
  41. package/dist/ContextmenuSeparator.svelte.d.ts.map +1 -0
  42. package/dist/ContextmenuSubmenu.svelte +116 -0
  43. package/dist/ContextmenuSubmenu.svelte.d.ts +10 -0
  44. package/dist/ContextmenuSubmenu.svelte.d.ts.map +1 -0
  45. package/dist/ContextmenuTextEntry.svelte +21 -0
  46. package/dist/ContextmenuTextEntry.svelte.d.ts +10 -0
  47. package/dist/ContextmenuTextEntry.svelte.d.ts.map +1 -0
  48. package/dist/CopyToClipboard.svelte +81 -0
  49. package/dist/CopyToClipboard.svelte.d.ts +18 -0
  50. package/dist/CopyToClipboard.svelte.d.ts.map +1 -0
  51. package/dist/DeclarationDetail.svelte +340 -0
  52. package/dist/DeclarationDetail.svelte.d.ts +8 -0
  53. package/dist/DeclarationDetail.svelte.d.ts.map +1 -0
  54. package/dist/DeclarationLink.svelte +50 -0
  55. package/dist/DeclarationLink.svelte.d.ts +8 -0
  56. package/dist/DeclarationLink.svelte.d.ts.map +1 -0
  57. package/dist/Details.svelte +51 -0
  58. package/dist/Details.svelte.d.ts +20 -0
  59. package/dist/Details.svelte.d.ts.map +1 -0
  60. package/dist/Dialog.svelte +217 -0
  61. package/dist/Dialog.svelte.d.ts +30 -0
  62. package/dist/Dialog.svelte.d.ts.map +1 -0
  63. package/dist/Dialogs.svelte +28 -0
  64. package/dist/Dialogs.svelte.d.ts +11 -0
  65. package/dist/Dialogs.svelte.d.ts.map +1 -0
  66. package/dist/Docs.svelte +179 -0
  67. package/dist/Docs.svelte.d.ts +13 -0
  68. package/dist/Docs.svelte.d.ts.map +1 -0
  69. package/dist/DocsContent.svelte +40 -0
  70. package/dist/DocsContent.svelte.d.ts +14 -0
  71. package/dist/DocsContent.svelte.d.ts.map +1 -0
  72. package/dist/DocsFooter.svelte +64 -0
  73. package/dist/DocsFooter.svelte.d.ts +15 -0
  74. package/dist/DocsFooter.svelte.d.ts.map +1 -0
  75. package/dist/DocsLink.svelte +41 -0
  76. package/dist/DocsLink.svelte.d.ts +12 -0
  77. package/dist/DocsLink.svelte.d.ts.map +1 -0
  78. package/dist/DocsList.svelte +44 -0
  79. package/dist/DocsList.svelte.d.ts +11 -0
  80. package/dist/DocsList.svelte.d.ts.map +1 -0
  81. package/dist/DocsMenu.svelte +55 -0
  82. package/dist/DocsMenu.svelte.d.ts +11 -0
  83. package/dist/DocsMenu.svelte.d.ts.map +1 -0
  84. package/dist/DocsMenuHeader.svelte +15 -0
  85. package/dist/DocsMenuHeader.svelte.d.ts +9 -0
  86. package/dist/DocsMenuHeader.svelte.d.ts.map +1 -0
  87. package/dist/DocsModulesList.svelte +32 -0
  88. package/dist/DocsModulesList.svelte.d.ts +7 -0
  89. package/dist/DocsModulesList.svelte.d.ts.map +1 -0
  90. package/dist/DocsPageLinks.svelte +61 -0
  91. package/dist/DocsPageLinks.svelte.d.ts +8 -0
  92. package/dist/DocsPageLinks.svelte.d.ts.map +1 -0
  93. package/dist/DocsPrimaryNav.svelte +93 -0
  94. package/dist/DocsPrimaryNav.svelte.d.ts +11 -0
  95. package/dist/DocsPrimaryNav.svelte.d.ts.map +1 -0
  96. package/dist/DocsSearch.svelte +48 -0
  97. package/dist/DocsSearch.svelte.d.ts +11 -0
  98. package/dist/DocsSearch.svelte.d.ts.map +1 -0
  99. package/dist/DocsSecondaryNav.svelte +63 -0
  100. package/dist/DocsSecondaryNav.svelte.d.ts +9 -0
  101. package/dist/DocsSecondaryNav.svelte.d.ts.map +1 -0
  102. package/dist/DocsTertiaryNav.svelte +118 -0
  103. package/dist/DocsTertiaryNav.svelte.d.ts +10 -0
  104. package/dist/DocsTertiaryNav.svelte.d.ts.map +1 -0
  105. package/dist/EcosystemLinks.svelte +53 -0
  106. package/dist/EcosystemLinks.svelte.d.ts +7 -0
  107. package/dist/EcosystemLinks.svelte.d.ts.map +1 -0
  108. package/dist/EcosystemLinksPanel.svelte +22 -0
  109. package/dist/EcosystemLinksPanel.svelte.d.ts +8 -0
  110. package/dist/EcosystemLinksPanel.svelte.d.ts.map +1 -0
  111. package/dist/GithubLink.svelte +75 -0
  112. package/dist/GithubLink.svelte.d.ts +14 -0
  113. package/dist/GithubLink.svelte.d.ts.map +1 -0
  114. package/dist/Glyph.svelte +28 -0
  115. package/dist/Glyph.svelte.d.ts +9 -0
  116. package/dist/Glyph.svelte.d.ts.map +1 -0
  117. package/dist/Hashlink.svelte +41 -0
  118. package/dist/Hashlink.svelte.d.ts +8 -0
  119. package/dist/Hashlink.svelte.d.ts.map +1 -0
  120. package/dist/HiddenPersonalLinks.svelte +6 -0
  121. package/dist/HiddenPersonalLinks.svelte.d.ts +27 -0
  122. package/dist/HiddenPersonalLinks.svelte.d.ts.map +1 -0
  123. package/dist/HueInput.svelte +127 -0
  124. package/dist/HueInput.svelte.d.ts +11 -0
  125. package/dist/HueInput.svelte.d.ts.map +1 -0
  126. package/dist/ImgOrSvg.svelte +58 -0
  127. package/dist/ImgOrSvg.svelte.d.ts +25 -0
  128. package/dist/ImgOrSvg.svelte.d.ts.map +1 -0
  129. package/dist/LibraryDetail.svelte +297 -0
  130. package/dist/LibraryDetail.svelte.d.ts +15 -0
  131. package/dist/LibraryDetail.svelte.d.ts.map +1 -0
  132. package/dist/LibrarySummary.svelte +151 -0
  133. package/dist/LibrarySummary.svelte.d.ts +16 -0
  134. package/dist/LibrarySummary.svelte.d.ts.map +1 -0
  135. package/dist/MdnLink.svelte +40 -0
  136. package/dist/MdnLink.svelte.d.ts +8 -0
  137. package/dist/MdnLink.svelte.d.ts.map +1 -0
  138. package/dist/Mdz.svelte +30 -0
  139. package/dist/Mdz.svelte.d.ts +10 -0
  140. package/dist/Mdz.svelte.d.ts.map +1 -0
  141. package/dist/MdzNodeView.svelte +93 -0
  142. package/dist/MdzNodeView.svelte.d.ts +9 -0
  143. package/dist/MdzNodeView.svelte.d.ts.map +1 -0
  144. package/dist/ModuleLink.svelte +48 -0
  145. package/dist/ModuleLink.svelte.d.ts +8 -0
  146. package/dist/ModuleLink.svelte.d.ts.map +1 -0
  147. package/dist/PasteFromClipboard.svelte +35 -0
  148. package/dist/PasteFromClipboard.svelte.d.ts +9 -0
  149. package/dist/PasteFromClipboard.svelte.d.ts.map +1 -0
  150. package/dist/PendingAnimation.svelte +62 -0
  151. package/dist/PendingAnimation.svelte.d.ts +13 -0
  152. package/dist/PendingAnimation.svelte.d.ts.map +1 -0
  153. package/dist/PendingButton.svelte +75 -0
  154. package/dist/PendingButton.svelte.d.ts +17 -0
  155. package/dist/PendingButton.svelte.d.ts.map +1 -0
  156. package/dist/ProjectLinks.svelte +54 -0
  157. package/dist/ProjectLinks.svelte.d.ts +19 -0
  158. package/dist/ProjectLinks.svelte.d.ts.map +1 -0
  159. package/dist/Redirect.svelte +44 -0
  160. package/dist/Redirect.svelte.d.ts +23 -0
  161. package/dist/Redirect.svelte.d.ts.map +1 -0
  162. package/dist/Spiders.svelte +57 -0
  163. package/dist/Spiders.svelte.d.ts +9 -0
  164. package/dist/Spiders.svelte.d.ts.map +1 -0
  165. package/dist/Svg.svelte +99 -0
  166. package/dist/Svg.svelte.d.ts +54 -0
  167. package/dist/Svg.svelte.d.ts.map +1 -0
  168. package/dist/Teleport.svelte +48 -0
  169. package/dist/Teleport.svelte.d.ts +15 -0
  170. package/dist/Teleport.svelte.d.ts.map +1 -0
  171. package/dist/ThemeInput.svelte +75 -0
  172. package/dist/ThemeInput.svelte.d.ts +15 -0
  173. package/dist/ThemeInput.svelte.d.ts.map +1 -0
  174. package/dist/Themed.svelte +101 -0
  175. package/dist/Themed.svelte.d.ts +24 -0
  176. package/dist/Themed.svelte.d.ts.map +1 -0
  177. package/dist/TomeContent.svelte +67 -0
  178. package/dist/TomeContent.svelte.d.ts +12 -0
  179. package/dist/TomeContent.svelte.d.ts.map +1 -0
  180. package/dist/TomeHeader.svelte +56 -0
  181. package/dist/TomeHeader.svelte.d.ts +4 -0
  182. package/dist/TomeHeader.svelte.d.ts.map +1 -0
  183. package/dist/TomeLink.svelte +29 -0
  184. package/dist/TomeLink.svelte.d.ts +10 -0
  185. package/dist/TomeLink.svelte.d.ts.map +1 -0
  186. package/dist/TomeSection.svelte +65 -0
  187. package/dist/TomeSection.svelte.d.ts +24 -0
  188. package/dist/TomeSection.svelte.d.ts.map +1 -0
  189. package/dist/TomeSectionHeader.svelte +90 -0
  190. package/dist/TomeSectionHeader.svelte.d.ts +13 -0
  191. package/dist/TomeSectionHeader.svelte.d.ts.map +1 -0
  192. package/dist/TypeLink.svelte +19 -0
  193. package/dist/TypeLink.svelte.d.ts +7 -0
  194. package/dist/TypeLink.svelte.d.ts.map +1 -0
  195. package/dist/alert.d.ts +7 -0
  196. package/dist/alert.d.ts.map +1 -0
  197. package/dist/alert.js +6 -0
  198. package/dist/api_search.svelte.d.ts +16 -0
  199. package/dist/api_search.svelte.d.ts.map +1 -0
  200. package/dist/api_search.svelte.js +61 -0
  201. package/dist/constants.d.ts +2 -0
  202. package/dist/constants.d.ts.map +1 -0
  203. package/dist/constants.js +3 -0
  204. package/dist/context_helpers.d.ts +17 -0
  205. package/dist/context_helpers.d.ts.map +1 -0
  206. package/dist/context_helpers.js +19 -0
  207. package/dist/contextmenu_helpers.d.ts +16 -0
  208. package/dist/contextmenu_helpers.d.ts.map +1 -0
  209. package/dist/contextmenu_helpers.js +39 -0
  210. package/dist/contextmenu_state.svelte.d.ts +152 -0
  211. package/dist/contextmenu_state.svelte.d.ts.map +1 -0
  212. package/dist/contextmenu_state.svelte.js +424 -0
  213. package/dist/csp.d.ts +160 -0
  214. package/dist/csp.d.ts.map +1 -0
  215. package/dist/csp.js +354 -0
  216. package/dist/csp_of_ryanatkn.d.ts +6 -0
  217. package/dist/csp_of_ryanatkn.d.ts.map +1 -0
  218. package/dist/csp_of_ryanatkn.js +14 -0
  219. package/dist/declaration.svelte.d.ts +84 -0
  220. package/dist/declaration.svelte.d.ts.map +1 -0
  221. package/dist/declaration.svelte.js +66 -0
  222. package/dist/declaration_contextmenu.d.ts +4 -0
  223. package/dist/declaration_contextmenu.d.ts.map +1 -0
  224. package/dist/declaration_contextmenu.js +14 -0
  225. package/dist/dialog.d.ts +24 -0
  226. package/dist/dialog.d.ts.map +1 -0
  227. package/dist/dialog.js +12 -0
  228. package/dist/dimensions.svelte.d.ts +5 -0
  229. package/dist/dimensions.svelte.d.ts.map +1 -0
  230. package/dist/dimensions.svelte.js +4 -0
  231. package/dist/docs_helpers.svelte.d.ts +48 -0
  232. package/dist/docs_helpers.svelte.d.ts.map +1 -0
  233. package/dist/docs_helpers.svelte.js +99 -0
  234. package/dist/helpers.d.ts +2 -0
  235. package/dist/helpers.d.ts.map +1 -0
  236. package/dist/helpers.js +16 -0
  237. package/dist/intersect.svelte.d.ts +47 -0
  238. package/dist/intersect.svelte.d.ts.map +1 -0
  239. package/dist/intersect.svelte.js +92 -0
  240. package/dist/library.svelte.d.ts +197 -0
  241. package/dist/library.svelte.d.ts.map +1 -0
  242. package/dist/library.svelte.js +130 -0
  243. package/dist/library_gen.d.ts +34 -0
  244. package/dist/library_gen.d.ts.map +1 -0
  245. package/dist/library_gen.js +123 -0
  246. package/dist/library_gen_helpers.d.ts +85 -0
  247. package/dist/library_gen_helpers.d.ts.map +1 -0
  248. package/dist/library_gen_helpers.js +188 -0
  249. package/dist/library_helpers.d.ts +54 -0
  250. package/dist/library_helpers.d.ts.map +1 -0
  251. package/dist/library_helpers.js +102 -0
  252. package/dist/logos.d.ts +134 -0
  253. package/dist/logos.d.ts.map +1 -0
  254. package/dist/logos.js +281 -0
  255. package/dist/mdz.d.ts +106 -0
  256. package/dist/mdz.d.ts.map +1 -0
  257. package/dist/mdz.js +1481 -0
  258. package/dist/mdz_components.d.ts +37 -0
  259. package/dist/mdz_components.d.ts.map +1 -0
  260. package/dist/mdz_components.js +12 -0
  261. package/dist/module.svelte.d.ts +47 -0
  262. package/dist/module.svelte.d.ts.map +1 -0
  263. package/dist/module.svelte.js +56 -0
  264. package/dist/module_contextmenu.d.ts +4 -0
  265. package/dist/module_contextmenu.d.ts.map +1 -0
  266. package/dist/module_contextmenu.js +14 -0
  267. package/dist/module_helpers.d.ts +69 -0
  268. package/dist/module_helpers.d.ts.map +1 -0
  269. package/dist/module_helpers.js +87 -0
  270. package/dist/rune_helpers.svelte.d.ts +6 -0
  271. package/dist/rune_helpers.svelte.d.ts.map +1 -0
  272. package/dist/rune_helpers.svelte.js +10 -0
  273. package/dist/storage.d.ts +13 -0
  274. package/dist/storage.d.ts.map +1 -0
  275. package/dist/storage.js +43 -0
  276. package/dist/svelte_helpers.d.ts +37 -0
  277. package/dist/svelte_helpers.d.ts.map +1 -0
  278. package/dist/svelte_helpers.js +245 -0
  279. package/dist/themer.svelte.d.ts +24 -0
  280. package/dist/themer.svelte.d.ts.map +1 -0
  281. package/dist/themer.svelte.js +43 -0
  282. package/dist/tome.d.ts +80 -0
  283. package/dist/tome.d.ts.map +1 -0
  284. package/dist/tome.js +27 -0
  285. package/dist/ts_helpers.d.ts +110 -0
  286. package/dist/ts_helpers.d.ts.map +1 -0
  287. package/dist/ts_helpers.js +533 -0
  288. package/dist/tsdoc_helpers.d.ts +98 -0
  289. package/dist/tsdoc_helpers.d.ts.map +1 -0
  290. package/dist/tsdoc_helpers.js +221 -0
  291. package/package.json +128 -0
  292. package/src/lib/alert.ts +14 -0
  293. package/src/lib/api_search.svelte.ts +85 -0
  294. package/src/lib/constants.ts +3 -0
  295. package/src/lib/context_helpers.ts +47 -0
  296. package/src/lib/contextmenu_helpers.ts +63 -0
  297. package/src/lib/contextmenu_state.svelte.ts +515 -0
  298. package/src/lib/csp.ts +576 -0
  299. package/src/lib/csp_of_ryanatkn.ts +16 -0
  300. package/src/lib/declaration.svelte.ts +102 -0
  301. package/src/lib/declaration_contextmenu.ts +22 -0
  302. package/src/lib/dialog.ts +35 -0
  303. package/src/lib/dimensions.svelte.ts +4 -0
  304. package/src/lib/docs_helpers.svelte.ts +149 -0
  305. package/src/lib/helpers.ts +10 -0
  306. package/src/lib/intersect.svelte.ts +152 -0
  307. package/src/lib/library.svelte.ts +162 -0
  308. package/src/lib/library_gen.ts +160 -0
  309. package/src/lib/library_gen_helpers.ts +262 -0
  310. package/src/lib/library_helpers.ts +123 -0
  311. package/src/lib/logos.ts +302 -0
  312. package/src/lib/mdz.ts +1819 -0
  313. package/src/lib/mdz_components.ts +34 -0
  314. package/src/lib/module.svelte.ts +78 -0
  315. package/src/lib/module_contextmenu.ts +20 -0
  316. package/src/lib/module_helpers.ts +113 -0
  317. package/src/lib/rune_helpers.svelte.ts +10 -0
  318. package/src/lib/storage.ts +48 -0
  319. package/src/lib/svelte_helpers.ts +303 -0
  320. package/src/lib/themer.svelte.ts +68 -0
  321. package/src/lib/tome.ts +38 -0
  322. package/src/lib/ts_helpers.ts +662 -0
  323. package/src/lib/tsdoc_helpers.ts +259 -0
@@ -0,0 +1,65 @@
1
+ <script lang="ts" module>
2
+ import {create_context} from './context_helpers.js';
3
+
4
+ export type RegisterSectionHeader = (fragment: string) => string | undefined;
5
+ export const register_section_header_context = create_context<RegisterSectionHeader>();
6
+ export const section_depth_context = create_context(() => 0);
7
+ export const section_id_context = create_context<string | undefined>();
8
+ </script>
9
+
10
+ <script lang="ts">
11
+ import type {Snippet} from 'svelte';
12
+ import type {SvelteHTMLElements} from 'svelte/elements';
13
+ import {DEV} from 'esm-env';
14
+
15
+ import {intersect} from './intersect.svelte.js';
16
+ import {docs_links_context} from './docs_helpers.svelte.js';
17
+
18
+ const {
19
+ children,
20
+ ...rest
21
+ }: SvelteHTMLElements['section'] & {
22
+ children: Snippet;
23
+ } = $props();
24
+
25
+ const docs_links = docs_links_context.get();
26
+
27
+ // Get parent depth and increment for children
28
+ const parent_depth = section_depth_context.get();
29
+ const current_depth = parent_depth + 1;
30
+ section_depth_context.set(current_depth);
31
+
32
+ // Read parent section ID before overwriting context (undefined for root sections)
33
+ const parent_section_id = section_id_context.get_maybe();
34
+
35
+ // Generate unique section ID immediately (before children render)
36
+ // Uses page-scoped counter from docs_links to ensure SSR/client consistency
37
+ const section_id = docs_links.generate_section_id();
38
+
39
+ // Provide own section ID to direct children (header) via context
40
+ section_id_context.set(section_id);
41
+
42
+ let fragment: string;
43
+
44
+ register_section_header_context.set((f) => {
45
+ fragment = f;
46
+ return parent_section_id; // Return parent section ID to header
47
+ });
48
+ </script>
49
+
50
+ <section
51
+ {...rest}
52
+ {@attach intersect(() => ({intersecting}) => {
53
+ if (!fragment) {
54
+ if (DEV) console.error('TomeSectionHeader must be a child of TomeSection'); // eslint-disable-line no-console
55
+ return;
56
+ }
57
+ if (intersecting) {
58
+ docs_links.fragments_onscreen.add(fragment);
59
+ } else {
60
+ docs_links.fragments_onscreen.delete(fragment);
61
+ }
62
+ })}
63
+ >
64
+ {@render children()}
65
+ </section>
@@ -0,0 +1,24 @@
1
+ export type RegisterSectionHeader = (fragment: string) => string | undefined;
2
+ export declare const register_section_header_context: {
3
+ get: (error_message?: string) => RegisterSectionHeader;
4
+ get_maybe: () => RegisterSectionHeader | undefined;
5
+ set: (value: RegisterSectionHeader) => RegisterSectionHeader;
6
+ };
7
+ export declare const section_depth_context: {
8
+ get: () => number;
9
+ set: (value?: number | undefined) => number;
10
+ };
11
+ export declare const section_id_context: {
12
+ get: (error_message?: string) => string | undefined;
13
+ get_maybe: () => string | undefined;
14
+ set: (value: string | undefined) => string | undefined;
15
+ };
16
+ import type { Snippet } from 'svelte';
17
+ import type { SvelteHTMLElements } from 'svelte/elements';
18
+ type $$ComponentProps = SvelteHTMLElements['section'] & {
19
+ children: Snippet;
20
+ };
21
+ declare const TomeSection: import("svelte").Component<$$ComponentProps, {}, "">;
22
+ type TomeSection = ReturnType<typeof TomeSection>;
23
+ export default TomeSection;
24
+ //# sourceMappingURL=TomeSection.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TomeSection.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TomeSection.svelte"],"names":[],"mappings":"AAKC,MAAM,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAC7E,eAAO,MAAM,+BAA+B;;;;CAA0C,CAAC;AACvF,eAAO,MAAM,qBAAqB;;;CAA0B,CAAC;AAC7D,eAAO,MAAM,kBAAkB;;;;CAAuC,CAAC;AAGxE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAMvD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG;IACxD,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AAyDH,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -0,0 +1,90 @@
1
+ <script lang="ts">
2
+ import {onDestroy, type Snippet} from 'svelte';
3
+ import type {SvelteHTMLElements} from 'svelte/elements';
4
+ import {page} from '$app/state';
5
+ import {resolve} from '$app/paths';
6
+
7
+ import Hashlink from './Hashlink.svelte';
8
+ import {
9
+ register_section_header_context,
10
+ section_depth_context,
11
+ section_id_context,
12
+ } from './TomeSection.svelte';
13
+ import {docs_links_context, docs_slugify, type DocsLinkTag} from './docs_helpers.svelte.js';
14
+
15
+ const {
16
+ text,
17
+ tag,
18
+ children,
19
+ ...rest
20
+ }: // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents
21
+ (SvelteHTMLElements['h2'] | SvelteHTMLElements['h3'] | SvelteHTMLElements['h4']) & {
22
+ text: string;
23
+ tag?: DocsLinkTag;
24
+ children?: Snippet;
25
+ } = $props();
26
+
27
+ const fragment = docs_slugify(text);
28
+
29
+ const register_section_header = register_section_header_context.get();
30
+ if (!register_section_header) {
31
+ throw Error('TomeSectionHeader must be a child of TomeSection');
32
+ }
33
+
34
+ const docs_links = docs_links_context.get();
35
+
36
+ // Auto-detect tag based on depth if not explicitly provided
37
+ const depth = section_depth_context.get();
38
+ const final_tag = tag ?? (depth === 1 ? 'h2' : depth === 2 ? 'h3' : 'h4');
39
+
40
+ // Get own section's ID from context
41
+ const my_section_id = section_id_context.get();
42
+
43
+ // Register with parent section to get parent's ID back
44
+ const parent_section_id = register_section_header(fragment);
45
+
46
+ // Register with docs_links using own section ID and parent section ID
47
+ let id: string | undefined;
48
+ if (page.url.pathname !== resolve(docs_links.root_path as any)) {
49
+ id = docs_links.add(
50
+ fragment,
51
+ text,
52
+ page.url.pathname,
53
+ final_tag,
54
+ depth,
55
+ parent_section_id,
56
+ my_section_id,
57
+ );
58
+ }
59
+
60
+ // Cleanup on unmount
61
+ onDestroy(() => {
62
+ if (id) docs_links.remove(id);
63
+ });
64
+ </script>
65
+
66
+ <header>
67
+ <svelte:element this={final_tag} {...rest} class:tome_section_header={true}>
68
+ <div class="flex_1">
69
+ {#if children}
70
+ {@render children()}
71
+ {:else}
72
+ {text}
73
+ {/if}
74
+ </div>
75
+ <Hashlink {fragment} />
76
+ </svelte:element>
77
+ </header>
78
+
79
+ <style>
80
+ .tome_section_header {
81
+ position: relative;
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: space-between;
85
+ }
86
+ /* TODO @many how can this be done composably? currently using `:global` at usage site - ideally we'd continue to use :hover instead of JS */
87
+ .tome_section_header:hover :global(.hashlink) {
88
+ opacity: 1;
89
+ }
90
+ </style>
@@ -0,0 +1,13 @@
1
+ import { type Snippet } from 'svelte';
2
+ import type { SvelteHTMLElements } from 'svelte/elements';
3
+ import { type DocsLinkTag } from './docs_helpers.svelte.js';
4
+ type $$ComponentProps = // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents
5
+ (SvelteHTMLElements['h2'] | SvelteHTMLElements['h3'] | SvelteHTMLElements['h4']) & {
6
+ text: string;
7
+ tag?: DocsLinkTag;
8
+ children?: Snippet;
9
+ };
10
+ declare const TomeSectionHeader: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type TomeSectionHeader = ReturnType<typeof TomeSectionHeader>;
12
+ export default TomeSectionHeader;
13
+ //# sourceMappingURL=TomeSectionHeader.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TomeSectionHeader.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TomeSectionHeader.svelte"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,OAAO,EAAC,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAUxD,OAAO,EAAmC,KAAK,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAE3F,KAAK,gBAAgB,GACrB,AADyB,6EAA6E;AACtG,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA0EH,QAAA,MAAM,iBAAiB,sDAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import Code from '@fuzdev/fuz_code/Code.svelte';
3
+
4
+ import DeclarationLink from './DeclarationLink.svelte';
5
+ import {library_context} from './library.svelte.js';
6
+
7
+ const {type}: {type: string} = $props();
8
+
9
+ const library = library_context.get();
10
+
11
+ // TODO is not extensible
12
+ // TODO maybe better name?
13
+ </script>
14
+
15
+ {#if library.lookup_declaration(type)}
16
+ <DeclarationLink name={type} />
17
+ {:else}
18
+ <Code inline content={type} lang="ts" />
19
+ {/if}
@@ -0,0 +1,7 @@
1
+ type $$ComponentProps = {
2
+ type: string;
3
+ };
4
+ declare const TypeLink: import("svelte").Component<$$ComponentProps, {}, "">;
5
+ type TypeLink = ReturnType<typeof TypeLink>;
6
+ export default TypeLink;
7
+ //# sourceMappingURL=TypeLink.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeLink.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TypeLink.svelte"],"names":[],"mappings":"AAQC,KAAK,gBAAgB,GAAI;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC;AAuBzC,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type AlertStatus = 'inform' | 'help' | 'error';
2
+ export interface AlertStatusOptions {
3
+ color: string;
4
+ icon: string | null;
5
+ }
6
+ export declare const alert_status_options: Record<AlertStatus, AlertStatusOptions>;
7
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/alert.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAIxE,CAAC"}
package/dist/alert.js ADDED
@@ -0,0 +1,6 @@
1
+ // TODO move to module context?
2
+ export const alert_status_options = {
3
+ inform: { color: 'var(--text_color_3)', icon: '✻' },
4
+ help: { color: 'var(--color_b_5)', icon: '➺' },
5
+ error: { color: 'var(--color_c_5)', icon: '!?' },
6
+ };
@@ -0,0 +1,16 @@
1
+ import type { Declaration } from './declaration.svelte.js';
2
+ import type { Library } from './library.svelte.js';
3
+ export interface DeclarationSearchState {
4
+ query: string;
5
+ all: Array<Declaration>;
6
+ filtered: Array<Declaration>;
7
+ }
8
+ /**
9
+ * Creates search state for the API index page (all declarations across all modules).
10
+ */
11
+ export declare const create_declaration_search: (library: Library) => DeclarationSearchState;
12
+ /**
13
+ * Creates search state for module-specific declaration lists.
14
+ */
15
+ export declare const create_module_declaration_search: (declarations: Array<Declaration>) => DeclarationSearchState;
16
+ //# sourceMappingURL=api_search.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api_search.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/api_search.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,SAAS,OAAO,KAAG,sBAwB5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gCAAgC,GAC5C,cAAc,KAAK,CAAC,WAAW,CAAC,KAC9B,sBAyCF,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Creates search state for the API index page (all declarations across all modules).
3
+ */
4
+ export const create_declaration_search = (library) => {
5
+ let query = $state('');
6
+ const all = $derived(library.declarations);
7
+ const filtered = $derived.by(() => {
8
+ const items = query.trim() ? library.search_declarations(query) : all;
9
+ return items.sort((a, b) => a.name.localeCompare(b.name));
10
+ });
11
+ return {
12
+ get query() {
13
+ return query;
14
+ },
15
+ set query(v) {
16
+ query = v;
17
+ },
18
+ get all() {
19
+ return all;
20
+ },
21
+ get filtered() {
22
+ return filtered;
23
+ },
24
+ };
25
+ };
26
+ /**
27
+ * Creates search state for module-specific declaration lists.
28
+ */
29
+ export const create_module_declaration_search = (declarations) => {
30
+ let query = $state('');
31
+ const all = $derived(declarations);
32
+ const filtered = $derived.by(() => {
33
+ const trimmed_query = query.trim();
34
+ if (!trimmed_query)
35
+ return all.sort((a, b) => a.name.localeCompare(b.name));
36
+ const terms = trimmed_query.toLowerCase().split(/\s+/);
37
+ const items = all.filter((d) => {
38
+ const name_lower = d.name.toLowerCase();
39
+ const kind_lower = d.kind.toLowerCase();
40
+ const module_path_lower = d.module_path.toLowerCase();
41
+ return terms.every((term) => name_lower.includes(term) ||
42
+ kind_lower.includes(term) ||
43
+ module_path_lower.includes(term));
44
+ });
45
+ return items.sort((a, b) => a.name.localeCompare(b.name));
46
+ });
47
+ return {
48
+ get query() {
49
+ return query;
50
+ },
51
+ set query(v) {
52
+ query = v;
53
+ },
54
+ get all() {
55
+ return all;
56
+ },
57
+ get filtered() {
58
+ return filtered;
59
+ },
60
+ };
61
+ };
@@ -0,0 +1,2 @@
1
+ export declare const MAIN_HEADER_MARGIN_TOP = "calc(60px + var(--space_lg))";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,iCAAiC,CAAC"}
@@ -0,0 +1,3 @@
1
+ // TODO the 60px is a hack, need `--docs_primary_nav_height` exported or :root values from Fuz -- the --space_lg also needs to be kept in sync
2
+ // see also the same issue in Moss
3
+ export const MAIN_HEADER_MARGIN_TOP = 'calc(60px + var(--space_lg))';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Wraps Svelte's `setContext` and `getContext` for better ergonomics.
3
+ * When no value is set in the context,
4
+ * `get` throws an error and `get_maybe` returns `undefined`.
5
+ * If a `fallback` is provided, the `value` argument to `set` is optional
6
+ * and `get_maybe` is omitted from the type.
7
+ */
8
+ export declare function create_context<T>(fallback: () => T): {
9
+ get: () => T;
10
+ set: (value?: T) => T;
11
+ };
12
+ export declare function create_context<T>(): {
13
+ get: (error_message?: string) => T;
14
+ get_maybe: () => T | undefined;
15
+ set: (value: T) => T;
16
+ };
17
+ //# sourceMappingURL=context_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/context_helpers.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG;IACrD,GAAG,EAAE,MAAM,CAAC,CAAC;IACb,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CACtB,CAAC;AACF,wBAAgB,cAAc,CAAC,CAAC,KAAK;IACpC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/B,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;CACrB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ export function create_context(fallback) {
3
+ const key = Symbol();
4
+ const get_maybe = () => {
5
+ const value = getContext(key); // treat `null` as a valid value - the `typescript-eslint` rule below is bugged because `??` would clobber nulls, see issue https://github.com/typescript-eslint/typescript-eslint/issues/7842
6
+ return value === undefined ? fallback?.() : value;
7
+ };
8
+ return {
9
+ get: (error_message) => {
10
+ const value = get_maybe();
11
+ if (value === undefined)
12
+ throw Error(error_message ?? 'context value is not set');
13
+ return value;
14
+ },
15
+ get_maybe,
16
+ // this is typesafe, so no runtime check:
17
+ set: (value = fallback?.()) => setContext(key, value),
18
+ };
19
+ }
@@ -0,0 +1,16 @@
1
+ import type { ContextmenuState } from './contextmenu_state.svelte.js';
2
+ export declare const CONTEXTMENU_DEFAULT_OPEN_OFFSET_X = -2;
3
+ export declare const CONTEXTMENU_DEFAULT_OPEN_OFFSET_Y = -2;
4
+ export declare const CONTEXTMENU_DEFAULT_BYPASS_WINDOW = 750;
5
+ export declare const CONTEXTMENU_DEFAULT_BYPASS_MOVE_TOLERANCE = 11;
6
+ export declare const CONTEXTMENU_DEFAULT_LONGPRESS_DURATION = 633;
7
+ export declare const CONTEXTMENU_DEFAULT_LONGPRESS_MOVE_TOLERANCE = 21;
8
+ /**
9
+ * Returns true if valid and narrows the type to HTMLElement | SVGElement.
10
+ */
11
+ export declare const contextmenu_is_valid_target: (target: EventTarget | null, shiftKey: boolean) => target is HTMLElement | SVGElement;
12
+ export declare const contextmenu_create_keyboard_handlers: (contextmenu: ContextmenuState) => Map<string, () => void>;
13
+ export declare const contextmenu_create_keydown_handler: (keyboard_handlers: Map<string, () => void>) => ((e: KeyboardEvent) => void);
14
+ export declare const contextmenu_calculate_constrained_x: (menu_x: number, menu_width: number, layout_width: number) => number;
15
+ export declare const contextmenu_calculate_constrained_y: (menu_y: number, menu_height: number, layout_height: number) => number;
16
+ //# sourceMappingURL=contextmenu_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextmenu_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/contextmenu_helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAGpE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,yCAAyC,KAAK,CAAC;AAC5D,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAC1D,eAAO,MAAM,4CAA4C,KAAK,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACvC,QAAQ,WAAW,GAAG,IAAI,EAC1B,UAAU,OAAO,KACf,MAAM,IAAI,WAAW,GAAG,UAIF,CAAC;AAI1B,eAAO,MAAM,oCAAoC,GAChD,aAAa,gBAAgB,KAC3B,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAWtB,CAAC;AAEJ,eAAO,MAAM,kCAAkC,GAC9C,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,KACxC,CAAC,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAO7B,CAAC;AAEF,eAAO,MAAM,mCAAmC,GAC/C,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,cAAc,MAAM,KAClB,MAAoE,CAAC;AAExE,eAAO,MAAM,mCAAmC,GAC/C,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,eAAe,MAAM,KACnB,MAAsE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { is_editable, swallow, inside_editable } from '@fuzdev/fuz_util/dom.js';
2
+ // Constants for default prop values
3
+ export const CONTEXTMENU_DEFAULT_OPEN_OFFSET_X = -2;
4
+ export const CONTEXTMENU_DEFAULT_OPEN_OFFSET_Y = -2;
5
+ export const CONTEXTMENU_DEFAULT_BYPASS_WINDOW = 750;
6
+ export const CONTEXTMENU_DEFAULT_BYPASS_MOVE_TOLERANCE = 11;
7
+ export const CONTEXTMENU_DEFAULT_LONGPRESS_DURATION = 633;
8
+ export const CONTEXTMENU_DEFAULT_LONGPRESS_MOVE_TOLERANCE = 21;
9
+ /**
10
+ * Returns true if valid and narrows the type to HTMLElement | SVGElement.
11
+ */
12
+ export const contextmenu_is_valid_target = (target, shiftKey) => !shiftKey &&
13
+ (target instanceof HTMLElement || target instanceof SVGElement) &&
14
+ !is_editable(target) &&
15
+ !inside_editable(target);
16
+ // TODO maybe bind these to the contextmenu instance instead of including the function wrapper
17
+ // TODO customize
18
+ export const contextmenu_create_keyboard_handlers = (contextmenu) => new Map([
19
+ ['Escape', () => contextmenu.close()],
20
+ ['ArrowLeft', () => contextmenu.collapse_selected()],
21
+ ['ArrowRight', () => contextmenu.expand_selected()],
22
+ ['ArrowDown', () => contextmenu.select_next()],
23
+ ['ArrowUp', () => contextmenu.select_previous()],
24
+ ['Home', () => contextmenu.select_first()],
25
+ ['End', () => contextmenu.select_last()],
26
+ [' ', () => contextmenu.activate_selected()],
27
+ ['Enter', () => contextmenu.activate_selected()],
28
+ ]);
29
+ export const contextmenu_create_keydown_handler = (keyboard_handlers) => {
30
+ return (e) => {
31
+ const handler = keyboard_handlers.get(e.key);
32
+ if (!handler || is_editable(e.target))
33
+ return;
34
+ swallow(e);
35
+ handler();
36
+ };
37
+ };
38
+ export const contextmenu_calculate_constrained_x = (menu_x, menu_width, layout_width) => menu_x + Math.min(0, layout_width - (menu_x + menu_width));
39
+ export const contextmenu_calculate_constrained_y = (menu_y, menu_height, layout_height) => menu_y + Math.min(0, layout_height - (menu_y + menu_height));
@@ -0,0 +1,152 @@
1
+ import { type Snippet } from 'svelte';
2
+ import type { Result } from '@fuzdev/fuz_util/result.js';
3
+ import type { SvelteHTMLElements } from 'svelte/elements';
4
+ import type { Attachment } from 'svelte/attachments';
5
+ import { Dimensions } from './dimensions.svelte.js';
6
+ export type ContextmenuParams = Snippet | {
7
+ snippet: 'link';
8
+ props: {
9
+ href: string;
10
+ icon?: string;
11
+ };
12
+ } | {
13
+ snippet: 'text';
14
+ props: {
15
+ content: string;
16
+ icon: string;
17
+ run: ContextmenuRun;
18
+ };
19
+ } | {
20
+ snippet: 'separator';
21
+ props: SvelteHTMLElements['li'];
22
+ };
23
+ export type ContextmenuActivateResult = void | undefined | Result<{
24
+ close?: boolean;
25
+ }, {
26
+ message?: string;
27
+ }>;
28
+ export type ItemState = SubmenuState | EntryState;
29
+ export declare class EntryState {
30
+ readonly is_menu = false;
31
+ readonly menu: SubmenuState | RootMenuState;
32
+ readonly run: () => ContextmenuRun;
33
+ readonly disabled: () => boolean;
34
+ selected: boolean;
35
+ pending: boolean;
36
+ error_message: string | null;
37
+ promise: Promise<ContextmenuActivateResult> | null;
38
+ constructor(menu: SubmenuState | RootMenuState, run: () => ContextmenuRun, disabled?: () => boolean);
39
+ }
40
+ export declare class SubmenuState {
41
+ readonly is_menu = true;
42
+ readonly menu: SubmenuState | RootMenuState;
43
+ readonly depth: number;
44
+ selected: boolean;
45
+ items: ReadonlyArray<ItemState>;
46
+ constructor(menu: SubmenuState | RootMenuState, depth: number);
47
+ }
48
+ export declare class RootMenuState {
49
+ readonly is_menu = true;
50
+ readonly menu: null;
51
+ readonly depth = 1;
52
+ items: ReadonlyArray<ItemState>;
53
+ }
54
+ export type ContextmenuRun = () => ContextmenuActivateResult | Promise<ContextmenuActivateResult>;
55
+ export interface ContextmenuStateOptions {
56
+ layout?: Dimensions;
57
+ }
58
+ /**
59
+ * Creates a `contextmenu` store.
60
+ * See usage with `ContextmenuRoot.svelte` and `Contextmenu.svelte`.
61
+ *
62
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/contextmenu_event
63
+ */
64
+ export declare class ContextmenuState {
65
+ layout: Dimensions;
66
+ /**
67
+ * If an initial layout is provided, control is deferred externally.
68
+ * Otherwise the layout syncs to the page dimensions.
69
+ */
70
+ readonly has_custom_layout: boolean;
71
+ opened: boolean;
72
+ x: number;
73
+ y: number;
74
+ params: ReadonlyArray<ContextmenuParams>;
75
+ error: string | undefined;
76
+ readonly root_menu: RootMenuState;
77
+ selections: ReadonlyArray<ItemState>;
78
+ can_collapse: boolean;
79
+ can_expand: boolean;
80
+ can_select_next: boolean;
81
+ can_select_previous: boolean;
82
+ can_activate: boolean;
83
+ constructor(options?: ContextmenuStateOptions);
84
+ open(params: Array<ContextmenuParams>, x: number, y: number): void;
85
+ close(): void;
86
+ reset_items(items: ReadonlyArray<ItemState>): void;
87
+ activate(item: ItemState): boolean | Promise<ContextmenuActivateResult>;
88
+ activate_selected(): void | boolean | Promise<ContextmenuActivateResult>;
89
+ /**
90
+ * Activates the selected entry, or if none, selects the first.
91
+ */
92
+ select(item: ItemState): void;
93
+ collapse_selected(): void;
94
+ expand_selected(): void;
95
+ select_next(): void;
96
+ select_previous(): void;
97
+ select_first(): void;
98
+ select_last(): void;
99
+ /**
100
+ * Used by `ContextmenuEntry` and custom entry components
101
+ * @initializes
102
+ */
103
+ add_entry(run: () => ContextmenuRun, disabled?: () => boolean): EntryState;
104
+ /**
105
+ * @initializes
106
+ */
107
+ add_submenu(): SubmenuState;
108
+ }
109
+ /**
110
+ * Creates an attachment that sets up contextmenu behavior on an element.
111
+ * @param params Contextmenu parameters or nullish to disable
112
+ */
113
+ export declare const contextmenu_attachment: <T extends ContextmenuParams, U extends T | Array<T>>(params: U | null | undefined) => Attachment<HTMLElement | SVGElement>;
114
+ export interface ContextmenuOpenOptions {
115
+ link_enabled?: boolean;
116
+ text_enabled?: boolean;
117
+ separator_enabled?: boolean;
118
+ vibrate?: boolean;
119
+ }
120
+ /**
121
+ * Opens the contextmenu, if appropriate,
122
+ * querying the menu items from the DOM starting at the event target.
123
+ * @param target the leaf element from which to open the contextmenu
124
+ * @param x the page X coordinate at which to open the contextmenu, typically the mouse `pageX`
125
+ * @param y the page Y coordinate at which to open the contextmenu, typically the mouse `pageY`
126
+ * @param contextmenu the contextmenu store
127
+ * @param options optional configuration for filtering entries and haptic feedback
128
+ * @returns a boolean indicating if the menu was opened or not
129
+ */
130
+ export declare const contextmenu_open: (target: HTMLElement | SVGElement, x: number, y: number, contextmenu: ContextmenuState, options?: ContextmenuOpenOptions) => boolean;
131
+ export declare const contextmenu_context: {
132
+ get: (error_message?: string) => ContextmenuState;
133
+ get_maybe: () => ContextmenuState | undefined;
134
+ set: (value: ContextmenuState) => ContextmenuState;
135
+ };
136
+ export declare const contextmenu_submenu_context: {
137
+ get: (error_message?: string) => SubmenuState;
138
+ get_maybe: () => SubmenuState | undefined;
139
+ set: (value: SubmenuState) => SubmenuState;
140
+ };
141
+ export declare const contextmenu_dimensions_context: {
142
+ get: () => Dimensions;
143
+ set: (value?: Dimensions | undefined) => Dimensions;
144
+ };
145
+ /**
146
+ * Registers a contextmenu root and warns if multiple non-scoped roots are detected.
147
+ * Only active in development mode. Automatically handles cleanup on unmount.
148
+ *
149
+ * @param get_scoped Getter function that returns the current scoped value
150
+ */
151
+ export declare const contextmenu_check_global_root: (get_scoped: () => boolean) => void;
152
+ //# sourceMappingURL=contextmenu_state.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextmenu_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/contextmenu_state.svelte.ts"],"names":[],"mappings":"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"}