@behindthemusictree/app-kit-ui 40.1.0 → 42.0.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/README.md +1 -1
- package/dist/{chunk-DPYUE6WD.js → chunk-PVYUC2PN.js} +336 -279
- package/dist/chunk-PVYUC2PN.js.map +1 -0
- package/dist/genre-tree/index.cjs +344 -291
- package/dist/genre-tree/index.cjs.map +1 -1
- package/dist/genre-tree/index.d.ts +15 -7
- package/dist/genre-tree/index.js +1 -1
- package/dist/index.cjs +344 -291
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-DPYUE6WD.js.map +0 -1
|
@@ -3,7 +3,7 @@ import { ReactNode, ComponentType, ComponentProps } from 'react';
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { GenreTreeProps, FocusChangeReason, GenreTreeNode, GenreTreeAction, GenreTreeViewMode, GenreTreeViewport, WheelZoomMode } from '@behindthemusictree/genre-tree-view';
|
|
5
5
|
export { FocusChangeReason, GenreTreeAction, GenreTreeOutlineSkeleton, GenreTreeSkeleton, GenreTreeViewMode, GenreTreeViewSkeleton, GenreTreeViewSkeletonProps, GenreTreeViewport, GenreTreeWheelSkeleton } from '@behindthemusictree/genre-tree-view';
|
|
6
|
-
import { TrackBase, CriteriaOverview, GenreUuid, CriteriaPlaylistMinimum, GenreMusicSelection, RenderArtistLink, RenderSongLink, CriteriaPlaylistSimple, ArtistSearchResult, SongSearchResult, UseGenreRemoteSearchOptions, GenreSearchResult, CriteriaMinimum, GenreCatalogueCounts, GenrePlaylistSummary } from '@behindthemusictree/app-kit/genre-tree';
|
|
6
|
+
import { TrackBase, CriteriaOverview, GenreUuid, CriteriaPlaylistMinimum, GenreMusicSelection, RenderArtistLink, RenderSongLink, CriteriaPlaylistSimple, ArtistSearchResult, SongSearchResult, UseGenreRemoteSearchOptions, GenreSearchResult, CriteriaMinimum, RenderPlaceLink, GenreCatalogueCounts, GenrePlaylistSummary } from '@behindthemusictree/app-kit/genre-tree';
|
|
7
7
|
import { Scope } from '@behindthemusictree/app-kit/transport';
|
|
8
8
|
import { DetailPanel } from '@behindthemusictree/ui';
|
|
9
9
|
|
|
@@ -250,8 +250,11 @@ type GenreTreeViewProps<O extends CriteriaOverview = CriteriaOverview> = {
|
|
|
250
250
|
additionalActions?: (node: GenreTreeNode) => GenreTreeAction[];
|
|
251
251
|
/** Controlled view mode. When provided, the internal Stacked/Wheel toggle is not rendered — the consumer owns that UI. */
|
|
252
252
|
viewMode?: GenreTreeViewMode;
|
|
253
|
-
/**
|
|
254
|
-
|
|
253
|
+
/**
|
|
254
|
+
* Selected genre entity, including genres outside the rendered tree. A raw URL value is accepted as is:
|
|
255
|
+
* one that names no genre opens a "not found" panel.
|
|
256
|
+
*/
|
|
257
|
+
selectedGenreUuid?: string | null;
|
|
255
258
|
/** Called on every user-driven selection change (tree click, search pick, search clear). */
|
|
256
259
|
onSelectedGenreUuidChange?: (genreUuid: GenreUuid | null) => void;
|
|
257
260
|
/** Mount-only seed for the pan/zoom (wheel, pop-core and stacked views), replacing the initial fit. */
|
|
@@ -318,6 +321,8 @@ type GenreTreeViewProps<O extends CriteriaOverview = CriteriaOverview> = {
|
|
|
318
321
|
/** When set, song titles in the info panel's track list render through it (e.g. a router `Link` to the song).
|
|
319
322
|
* By default they are buttons that open the song panel. */
|
|
320
323
|
renderSongLink?: RenderSongLink;
|
|
324
|
+
/** When set, the artist panel renders the artist's origin through it (e.g. a router `Link` to the map region). */
|
|
325
|
+
renderPlaceLink?: RenderPlaceLink;
|
|
321
326
|
/** Resolves a selected genre, artist or song to a share URL using the host app's routes. */
|
|
322
327
|
getShareUrl?: GetGenreTreeShareUrl;
|
|
323
328
|
} & ArtistSearchProps & GenreDetailSlots<O> & GenrePlaylistTracksSlots & GenreFocusProps & {
|
|
@@ -333,7 +338,7 @@ type GenreTreeViewProps<O extends CriteriaOverview = CriteriaOverview> = {
|
|
|
333
338
|
collapsed?: boolean;
|
|
334
339
|
onCollapsedChange?: (collapsed: boolean) => void;
|
|
335
340
|
};
|
|
336
|
-
declare function GenreTreeView<O extends CriteriaOverview = CriteriaOverview>({ scope, handleGenreCreationAction, handleGenreRenameAction, onParentChanged, getBackendBaseUrl, additionalActions, viewMode: controlledViewMode, selectedGenreUuid: controlledSelectedGenreUuid, onSelectedGenreUuidChange, defaultViewport, viewportRestore, onViewportChange, readOnly, className, showDisplayOptions, showAddRoot, allowWheelRotation: controlledAllowWheelRotation, criteriaOverviewSchema, renderGenreDetailExtras, floatingControlsLeading, sizeMetric: controlledSizeMetric, onSizeMetricChange, renderArtistLink, artistUuid: controlledArtistUuid, onArtistUuidChange, artistExpanded: controlledArtistExpanded, onArtistExpandedChange, getShareUrl, extraSearchGroups, SearchGroups, onSearchQueryChange, onSearchFocus, artistSearch, onArtistSelect, artistSearchBaseUrl, songUuid: controlledSongUuid, onSongUuidChange, songExpanded: controlledSongExpanded, onSongExpandedChange, songSearch, onSongSelect, renderSongLink, renderSummary, renderEssentialTracks, renderSongLeading, renderSongActions, renderTracksToolbar, renderDangerZone, expanded, onExpandedChange, collapsed, onCollapsedChange, overlayPanel, placement, ...focus }: GenreTreeViewProps<O>): react.JSX.Element;
|
|
341
|
+
declare function GenreTreeView<O extends CriteriaOverview = CriteriaOverview>({ scope, handleGenreCreationAction, handleGenreRenameAction, onParentChanged, getBackendBaseUrl, additionalActions, viewMode: controlledViewMode, selectedGenreUuid: controlledSelectedGenreUuid, onSelectedGenreUuidChange, defaultViewport, viewportRestore, onViewportChange, readOnly, className, showDisplayOptions, showAddRoot, allowWheelRotation: controlledAllowWheelRotation, criteriaOverviewSchema, renderGenreDetailExtras, floatingControlsLeading, sizeMetric: controlledSizeMetric, onSizeMetricChange, renderArtistLink, artistUuid: controlledArtistUuid, onArtistUuidChange, artistExpanded: controlledArtistExpanded, onArtistExpandedChange, getShareUrl, extraSearchGroups, SearchGroups, onSearchQueryChange, onSearchFocus, artistSearch, onArtistSelect, artistSearchBaseUrl, songUuid: controlledSongUuid, onSongUuidChange, songExpanded: controlledSongExpanded, onSongExpandedChange, songSearch, onSongSelect, renderSongLink, renderPlaceLink, renderSummary, renderEssentialTracks, renderSongLeading, renderSongActions, renderTracksToolbar, renderDangerZone, expanded, onExpandedChange, collapsed, onCollapsedChange, overlayPanel, placement, ...focus }: GenreTreeViewProps<O>): react.JSX.Element;
|
|
337
342
|
|
|
338
343
|
type GenreActionBandProps = {
|
|
339
344
|
node: GenreTreeNode;
|
|
@@ -389,7 +394,8 @@ type GenreInfoPanelBodyProps<O extends CriteriaOverview> = {
|
|
|
389
394
|
declare function GenreInfoPanelBody<O extends CriteriaOverview>({ toolbar, family, genreUuid, genrePlaylist, catalogue, wikidataId, scope, getBackendBaseUrl, playback, band, extras, }: GenreInfoPanelBodyProps<O>): react.JSX.Element;
|
|
390
395
|
|
|
391
396
|
type GenreDetailPanelProps<O extends CriteriaOverview> = {
|
|
392
|
-
|
|
397
|
+
/** May be a raw URL value: one that names no genre renders "Genre not found". */
|
|
398
|
+
genreUuid: string;
|
|
393
399
|
scope: Scope;
|
|
394
400
|
getBackendBaseUrl: () => string;
|
|
395
401
|
onClose: () => void;
|
|
@@ -525,11 +531,12 @@ type EntityPanelOptions = {
|
|
|
525
531
|
getShareUrl?: GetGenreTreeShareUrl;
|
|
526
532
|
renderArtistLink: RenderArtistLink;
|
|
527
533
|
renderSongLink: RenderSongLink;
|
|
534
|
+
renderPlaceLink?: RenderPlaceLink;
|
|
528
535
|
song: EntityPanelState;
|
|
529
536
|
artist: EntityPanelState;
|
|
530
537
|
} & SongGenreNavigation;
|
|
531
538
|
/** The song or artist detail overlay panel; a song takes precedence over an artist, undefined when neither is set. */
|
|
532
|
-
declare function useEntityPanel({ scope, getBackendBaseUrl, getArtistBackendBaseUrl, getShareUrl, renderArtistLink, renderSongLink, song, artist, ...navigation }: EntityPanelOptions): OverlayPanel | undefined;
|
|
539
|
+
declare function useEntityPanel({ scope, getBackendBaseUrl, getArtistBackendBaseUrl, getShareUrl, renderArtistLink, renderSongLink, renderPlaceLink, song, artist, ...navigation }: EntityPanelOptions): OverlayPanel | undefined;
|
|
533
540
|
|
|
534
541
|
type EntityDetailPanelProps = {
|
|
535
542
|
scope: Scope;
|
|
@@ -544,11 +551,12 @@ type EntityDetailPanelProps = {
|
|
|
544
551
|
renderArtistLink?: RenderArtistLink;
|
|
545
552
|
/** Titles render as buttons that open the song by default. */
|
|
546
553
|
renderSongLink?: RenderSongLink;
|
|
554
|
+
renderPlaceLink?: RenderPlaceLink;
|
|
547
555
|
collapsed?: boolean;
|
|
548
556
|
edgeTab?: ComponentProps<typeof DetailPanel>["edgeTab"];
|
|
549
557
|
} & SongGenreNavigation;
|
|
550
558
|
/** The song or artist detail in the shared left DetailPanel, for a host that has no genre tree. Renders nothing
|
|
551
559
|
* while neither is set; a song takes precedence over an artist. */
|
|
552
|
-
declare function EntityDetailPanel({ scope, getBackendBaseUrl, getArtistBackendBaseUrl, getShareUrl, songUuid, onSongUuidChange, artistUuid, onArtistUuidChange, renderArtistLink, renderSongLink, collapsed, edgeTab, ...navigation }: EntityDetailPanelProps): react.JSX.Element | null;
|
|
560
|
+
declare function EntityDetailPanel({ scope, getBackendBaseUrl, getArtistBackendBaseUrl, getShareUrl, songUuid, onSongUuidChange, artistUuid, onArtistUuidChange, renderArtistLink, renderSongLink, renderPlaceLink, collapsed, edgeTab, ...navigation }: EntityDetailPanelProps): react.JSX.Element | null;
|
|
553
561
|
|
|
554
562
|
export { type ArtistSearchProps, EntityDetailPanel, type EntityDetailPanelProps, type EntityPanelOptions, type EntityPanelState, GenreDetailPanel, type GenreDetailPanelProps, type GenreDetailSlots, type GenreFocusProps, GenreInfoPanelBody, type GenreInfoPanelBodyProps, GenreNodeActionBand, type GenrePlaylistPlayback, type GenrePlaylistTracksSlots, GenrePlaylistTreePerRoot, type GenrePlaylistTreePerRootProps, GenreSearch, type GenreSearchExtraGroup, type GenreSearchGroupsProps, type GenreSearchProps, type GenreTreeShareTarget, GenreTreeView, type GenreTreeViewProps, type GetGenreTreeShareUrl, type ParentChange, type PlayableGenrePlaylist, PlayerPanel, type PlayerPanelProps, Rating, type RatingProps, SEARCH_FAILED_STATUS, SearchBox, type SearchBoxProps, type SearchGroup, type SearchGroupItem, type SongGenreNavigation, TrackItem, type TrackItemProps, TrackListSidebar, type TrackListSidebarProps, TrackPositionPlayPause, type TrackPositionPlayPauseProps, type UseGenrePlaylistPlaybackOptions, type UseGenreRemoteSearchGroupOptions, searchStatus, useArtistSearchGroup, useEntityPanel, useGenrePlaylistPlayback, useGenreRemoteSearchGroup, useSongSearchGroup };
|
package/dist/genre-tree/index.js
CHANGED