@fuzdev/fuz_ui 0.202.0 → 0.203.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.
Files changed (71) hide show
  1. package/dist/ApiIndex.svelte +6 -3
  2. package/dist/ApiIndex.svelte.d.ts +1 -1
  3. package/dist/ApiIndex.svelte.d.ts.map +1 -1
  4. package/dist/ApiModule.svelte +72 -21
  5. package/dist/ApiModule.svelte.d.ts +1 -1
  6. package/dist/ApiModule.svelte.d.ts.map +1 -1
  7. package/dist/ContextmenuEntry.svelte +15 -16
  8. package/dist/ContextmenuEntry.svelte.d.ts +3 -2
  9. package/dist/ContextmenuEntry.svelte.d.ts.map +1 -1
  10. package/dist/ContextmenuIcon.svelte +30 -0
  11. package/dist/ContextmenuIcon.svelte.d.ts +9 -0
  12. package/dist/ContextmenuIcon.svelte.d.ts.map +1 -0
  13. package/dist/ContextmenuLinkEntry.svelte +23 -12
  14. package/dist/ContextmenuLinkEntry.svelte.d.ts +2 -1
  15. package/dist/ContextmenuLinkEntry.svelte.d.ts.map +1 -1
  16. package/dist/ContextmenuMenu.svelte +207 -0
  17. package/dist/ContextmenuMenu.svelte.d.ts +41 -0
  18. package/dist/ContextmenuMenu.svelte.d.ts.map +1 -0
  19. package/dist/ContextmenuRoot.svelte +58 -260
  20. package/dist/ContextmenuRoot.svelte.d.ts +2 -60
  21. package/dist/ContextmenuRoot.svelte.d.ts.map +1 -1
  22. package/dist/ContextmenuRootForSafariCompatibility.svelte +72 -283
  23. package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts +2 -58
  24. package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts.map +1 -1
  25. package/dist/ContextmenuSeparator.svelte +2 -1
  26. package/dist/ContextmenuSeparator.svelte.d.ts.map +1 -1
  27. package/dist/ContextmenuSubmenu.svelte +31 -25
  28. package/dist/ContextmenuSubmenu.svelte.d.ts +3 -2
  29. package/dist/ContextmenuSubmenu.svelte.d.ts.map +1 -1
  30. package/dist/ContextmenuTextEntry.svelte +6 -4
  31. package/dist/ContextmenuTextEntry.svelte.d.ts +3 -1
  32. package/dist/ContextmenuTextEntry.svelte.d.ts.map +1 -1
  33. package/dist/DeclarationLink.svelte +15 -2
  34. package/dist/DeclarationLink.svelte.d.ts +7 -0
  35. package/dist/DeclarationLink.svelte.d.ts.map +1 -1
  36. package/dist/DocsLink.svelte +3 -1
  37. package/dist/DocsLink.svelte.d.ts.map +1 -1
  38. package/dist/DocsTertiaryNav.svelte +2 -1
  39. package/dist/DocsTertiaryNav.svelte.d.ts.map +1 -1
  40. package/dist/LibraryDetail.svelte +9 -3
  41. package/dist/LibraryDetail.svelte.d.ts +1 -1
  42. package/dist/LibraryDetail.svelte.d.ts.map +1 -1
  43. package/dist/ModuleLink.svelte +2 -1
  44. package/dist/ModuleLink.svelte.d.ts.map +1 -1
  45. package/dist/TypeLink.svelte +2 -1
  46. package/dist/TypeLink.svelte.d.ts.map +1 -1
  47. package/dist/contextmenu_helpers.d.ts +324 -1
  48. package/dist/contextmenu_helpers.d.ts.map +1 -1
  49. package/dist/contextmenu_helpers.js +403 -2
  50. package/dist/contextmenu_state.svelte.d.ts +61 -15
  51. package/dist/contextmenu_state.svelte.d.ts.map +1 -1
  52. package/dist/contextmenu_state.svelte.js +206 -119
  53. package/dist/declaration.svelte.d.ts +1 -0
  54. package/dist/declaration.svelte.d.ts.map +1 -1
  55. package/dist/declaration.svelte.js +2 -1
  56. package/dist/icons.d.ts +15 -3
  57. package/dist/icons.d.ts.map +1 -1
  58. package/dist/icons.js +17 -3
  59. package/dist/library.svelte.d.ts +30 -3
  60. package/dist/library.svelte.d.ts.map +1 -1
  61. package/dist/library.svelte.js +38 -0
  62. package/dist/module.svelte.d.ts +62 -1
  63. package/dist/module.svelte.d.ts.map +1 -1
  64. package/dist/module.svelte.js +71 -1
  65. package/package.json +2 -2
  66. package/src/lib/contextmenu_helpers.ts +546 -3
  67. package/src/lib/contextmenu_state.svelte.ts +219 -119
  68. package/src/lib/declaration.svelte.ts +2 -1
  69. package/src/lib/icons.ts +19 -3
  70. package/src/lib/library.svelte.ts +43 -1
  71. package/src/lib/module.svelte.ts +97 -2
@@ -1,9 +1,34 @@
1
- import type {ModuleJsonInput} from 'svelte-docinfo/types.js';
1
+ import type {
2
+ ModuleJsonInput,
3
+ ReExportJsonInput,
4
+ ExternalReExportJsonInput,
5
+ } from 'svelte-docinfo/types.js';
2
6
 
3
7
  import {Declaration} from './declaration.svelte.js';
4
8
  import type {Library} from './library.svelte.js';
5
9
  import {url_github_file} from '@fuzdev/fuz_util/package_helpers.js';
6
10
 
11
+ /**
12
+ * Groups entries by a string key, with groups sorted by key. Entries within
13
+ * each group keep their input order.
14
+ */
15
+ const group_sorted = <T>(
16
+ entries: Array<T>,
17
+ get_key: (entry: T) => string,
18
+ ): Map<string, Array<T>> => {
19
+ const by_key: Map<string, Array<T>> = new Map();
20
+ for (const entry of entries) {
21
+ const key = get_key(entry);
22
+ let group = by_key.get(key);
23
+ if (!group) {
24
+ group = [];
25
+ by_key.set(key, group);
26
+ }
27
+ group.push(entry);
28
+ }
29
+ return new Map([...by_key].sort(([a], [b]) => a.localeCompare(b)));
30
+ };
31
+
7
32
  /**
8
33
  * Rich runtime representation of a module with computed properties.
9
34
  *
@@ -76,7 +101,11 @@ export class Module {
76
101
  : undefined,
77
102
  );
78
103
 
79
- has_declarations: boolean = $derived((this.module_json.declarations?.length ?? 0) > 0);
104
+ /**
105
+ * Whether the module has renderable declarations (after the default-export
106
+ * filter in `declarations`).
107
+ */
108
+ has_declarations: boolean = $derived(this.declarations.length > 0);
80
109
 
81
110
  has_module_comment: boolean = $derived(!!this.module_comment);
82
111
 
@@ -94,6 +123,72 @@ export class Module {
94
123
 
95
124
  has_dependents: boolean = $derived(this.dependents.length > 0);
96
125
 
126
+ /**
127
+ * Same-name re-export edges in this module's source (`ModuleJson.reExports`)
128
+ * — the forward view of declarations' `alsoExportedFrom`, sorted by name
129
+ * then module. Renamed re-exports appear as declarations with `aliasOf`
130
+ * instead, and star exports in `star_exports`.
131
+ */
132
+ re_exports = $derived(this.module_json.reExports ?? []);
133
+
134
+ has_re_exports: boolean = $derived(this.re_exports.length > 0);
135
+
136
+ /**
137
+ * Modules fully re-exported via `export * from './module'`
138
+ * (`ModuleJson.starExports`), in source order. Star-projected symbols are
139
+ * not materialized as declarations or `re_exports` edges — this is their
140
+ * sole encoding.
141
+ */
142
+ star_exports = $derived(this.module_json.starExports ?? []);
143
+
144
+ has_star_exports: boolean = $derived(this.star_exports.length > 0);
145
+
146
+ /**
147
+ * Re-export edges grouped by canonical module path, groups sorted by path.
148
+ * Entries within each group keep their name-sorted serialized order.
149
+ */
150
+ re_exports_by_module: Map<string, Array<ReExportJsonInput>> = $derived(
151
+ group_sorted(this.re_exports, (entry) => entry.module),
152
+ );
153
+
154
+ /**
155
+ * Re-exports whose immediate target is an external package
156
+ * (`ModuleJson.externalReExports`) — `export {x} from 'pkg'` and
157
+ * `export * as ns from 'pkg'` forms, sorted by name then specifier.
158
+ */
159
+ external_re_exports = $derived(this.module_json.externalReExports ?? []);
160
+
161
+ has_external_re_exports: boolean = $derived(this.external_re_exports.length > 0);
162
+
163
+ /**
164
+ * External re-exports grouped by package specifier, groups sorted by
165
+ * specifier. Entries within each group keep their name-sorted serialized
166
+ * order.
167
+ */
168
+ external_re_exports_by_specifier: Map<string, Array<ExternalReExportJsonInput>> = $derived(
169
+ group_sorted(this.external_re_exports, (entry) => entry.specifier),
170
+ );
171
+
172
+ /**
173
+ * External packages fully re-exported via `export * from 'pkg'`
174
+ * (`ModuleJson.externalStarExports`), in source order. The projected
175
+ * names are unknown — the package isn't analyzed.
176
+ */
177
+ external_star_exports = $derived(this.module_json.externalStarExports ?? []);
178
+
179
+ has_external_star_exports: boolean = $derived(this.external_star_exports.length > 0);
180
+
181
+ /**
182
+ * Whether the module re-exports anything in any form — same-name edges,
183
+ * star exports, or the external variants of both.
184
+ */
185
+ has_any_re_exports: boolean = $derived(
186
+ this.has_re_exports ||
187
+ this.has_star_exports ||
188
+ this.has_external_re_exports ||
189
+ this.has_external_star_exports,
190
+ );
191
+
97
192
  constructor(library: Library, module_json: ModuleJsonInput) {
98
193
  this.library = library;
99
194
  this.module_json = module_json;