{"version":3,"file":"BeatSort.TiT-O2be.mjs","names":["React.useMemo","React.useState","React.useRef","DEBOUNCE_MS","useQuery","QueryClientProvider","React.useCallback","et.createElement","R","e","un","et.Fragment","H","Ge","React.useSyncExternalStore","React.useState","useSyncExternalStore","React.useState","_Fragment","React.useState","QueryClientProvider","React.useRef","React.useMemo","React.useContext","useInfiniteQuery","React.useId","React.useCallback","VirtuosoBase","VirtuosoGridBase","React.useMemo","_Fragment","c","React.useMemo","React.useCallback","React.useState","React.useRef","React.useCallback","React.useId","_Fragment","useState","useRef","React.useState","_Fragment","React.useState","React.useState","React.useId","React.useId","React.useState","React.useRef","React.useMemo","React.useCallback","React.useId","React.useState","React.useCallback","React.useMemo","React.useState","React.useMemo","React.useCallback","React.useRef","React.useMemo","React.useCallback","React.useState","React.useMemo","React.useState","React.useMemo","React.useState","React.useCallback","_Fragment","React.useMemo","useQuery","React.useMemo","Spinner","React.useState","OPTIONS","QueryClientProvider","React.useMemo","React.useState","_Fragment","React.useState","React.useRef","React.useMemo","useQuery","React.useMemo","React.useRef","QueryClientProvider","React.useMemo","React.useMemo","React.useRef","React.useRef","useState","useRef","useCallback","_Fragment","__esmMin","le","e","ie","pe$1","navigator","ne$1","init_npm_react_18_3_1","oe$1","x","de$1","window","init_ssg_sandbox_shims","Ha","p","B","K","Ba","me$1","init_jsx_runtime","H","init_npm_react_dom_18_3_1","l","ce","_e","AnimatePresence","init_framer_motion_DhsWWWsN","motion","RenderTarget","init_framer_DymZktPS","addPropertyControls","ControlType","init_SoundeeDialog","playBrand","DEFAULT_ROW_COLUMNS","init_history_cache","init_create_store","mixToward","topCoverHeight","init_config","init_engine","cancelScrollRestorationToTop","useSessionStore","usePlayerSelector","HoverButton","init_session","init_icons","Spinner$1","keepPreviousForStore","buildCmsUrlFromBasePath","init_useSeekUi","Ut$1","SoundeeArtwork","SoundeeWaveform","init_slot","init_loading","queryClient","init_cms_base_path","SoundeeMenu","init_likes","applyBrand","RowMenu","Xt$1","init_SoundeeArtwork","pulseMotion","SoundeeChipList","claimEntryRefresh","CmsLink","CHIP_MOTION","useTrackIsNewDays","firstLoad","init_cms_link_slot","ensureScrollRestoration","init_list_motion","init_query_client","SoundeeDialog","DEFAULT_PLAY_TOKENS","init_viewport_cover","init_SoundeeChipList","init_format","useSoundeeConfig","resumeTrack","SoundeeIcon","init_SoundeeWaveform","init_react_query","normalizeSlot","useBottomInset","DEFAULT_SEEK_TOOLTIP","At$1","renderSlotWithSizing","menuItemHover","filterBarBrand","init_SoundeeMenu","isLiked","menuItemStyle","useLikeStore","init_brand","DEFAULT_CHIP_TOKENS","canDemoDownload","init_open_overlay","useModalTheme","init_tokens$1","fetchSuggestedTags","init_entity_url","useEntitySelector","rowStyleHidden","playEntity","METADATA_TYPE_OPTIONS","usePlaylistContext","rowBrand","DEFAULT_ROW_PADDING","init_currency","METADATA_TYPE_TITLES","init_entity_actions","requestSoundeeAuth","DEMO_TRACK_ENTITY","init_entities","init_auth_state","init_registry","chipTokenControls","fetchEntityCount","isRestoring","init_propage_config","NEVER_COLLECT","tint","createExternalStore","init_hover_button","rowTokenControls","registerPlaylist","init_build_chip_data","useLikeToggle","useBrandOverrides","DEFAULT_WAVE_TOKENS","init_cart","playTokenControls","PlaylistContext","buildChipData","init_like","init_RowMenu","getLikeActivity","hasSoundeeModals","ROW_METRICS","useAddToCart","rowColumnControls","init_client","init_playlist","stripDefaults","useStoreCurrency","waveTokenControls","init_entity_capabilities","upsertTracks","openSoundeeOverlay","useEnsureSoundeeSession","pauseTrack","resolveEntityUrlTemplates","formatPrice","buildEntityUrl","playerBarHeight","init_tracks","BuiltInProductCard","ScrollNudge","init_BuiltInProductCard","init_SellerGate","dedupeEntityIds","init_catalog_ids","queryKeyToString","init_query_key","useExcludeTrackId","EmptyState","buildListQueryKey","buildSourceParams","init_ScrollNudge","takeUnseenPageItems","init_catalog_source","SellerGate","CATALOG_SOURCE_OPTIONS","init_EmptyState","BuiltInProductCardSkeleton","fetchTracks","isMobileResetKey","isKeyAtDefault","getUserFilterCount","consumeFilterIntent","isDefaultValue","registerCatalogFilterEntityType","useActiveCatalogSourceParams","useActiveCatalogSourceVersion","defaultQueryParams","init_filter_registry","setCatalogLocalDelta","filterRegistry","init_filter_intent","useActiveFilterEntityType","init_filter_context","useActiveCatalogLocalDelta","hasUserFilters","resetValuesFor","isDrawerKey","init_defaults","useEntityCount","Filters","filterEntityType","store","cfg","sourceParams","sourceVersion","localDelta","filterParams","source","params","merged","key","value","ORDERING_ONLY_PARAMS","paramsKey","stableParams","setStableParams","likedView","likeActivity","setLikeActivity","membershipVersion","stableVersion","setStableVersion","hasSyncedRef","timer","DEBOUNCE_MS$1","path","queryKey","isReady","serverCount","data","isFetching","init_entity_count","resolveNoun","fallback","DEFAULT_NOUNS","entityType","chosen","nouns","count","BuiltInLabel","countFont","DEFAULT_COUNT_FONT","countColor","precision","nounColor","SoundeeResultCount","DEFAULT_CONTENT_SIZE","ResultCountInner","isCanvas","labelEl","labelSlot","loadingEl","loadingSlot","renderSized","node","injectedProps","contentSize","CANVAS_PREVIEW_COUNT","previewState","loading","style","showLoading","hasLabelSlot","slot","props","init_SoundeeResultCount","M","o","Fe","n","r","i","ao","dn","nt","uo","hn","Vt","mn","$e","Ht","fn","J","q","Me","D","Ct","Dt","Ye","re","Fo","F","Re","ho","Lo","Z","O","y","He","I","pn","be","qe","Le","G","s","a","c","gn","S","_","se","me","j","vn","xn","ne","W","mo","ze","Gt","e$1","Mo","Sn","f","g","w","v","h","u","fo","e$2","de","Nt","e$3","Oo","Y","rt","it","Se","he","Ao","oe","po","Ke","bt","wn","Ot","Mt","Po","vt","Wo","De","Et","Vo","Wt","t","Do","lt","Go","It","Cn","we","Rt","jt","Hn","bn","Fn","Rn","zn","st","No","_o","yn","Bn","En","Pt","kn","go","Mn","Uo","On","Wn","Ut","Kt","Ko","xo","ct","Tt","tt","St","Io","Dn","xt","To","qo","So","$n","Xo","er","$t","d","z","e$4","C","T","pt","m","Bt","tr","en","e$5","Zt","X","on","Jt","e$9","cr","sr","Qt","e$10","Qo","Eo","kr","Er","gt","Br","ln","ot","wt","ko","At","Bo","co","In","Tn","Oe","ae","_t","Ln","ye","jo","We","at","ut","Pn","An","Vn","dt","vo","qt","kt","Ne","Yo","Gn","Nn","_n","jn","Un","Kn","qn","$o","Yt","Yn","Xn","Zn","Zo","zt","Jo","Ft","wo","Xt","nr","rr","ir","tn","lr","Xe","ar","ur","dr","hr","mr","fr","nn","eo","P","pe","gr","vr","Yr","Ir","Tr","Sr","wr","Ho","bo","Cr","Hr","br","rn","to","V","Te","zr","yr","Ro","zo","Lt","yo","Fr","Mr","Or","Wr","Pr","Ar","Vr","Gr","sn","ee","ge","Nr","_r","Jr","init_react_virtuoso_4_13_0","E","L","A","U","k","$","fe","ve","xe","ue","Pe","Ie","Ze","Ce","Ee","b","N","Q","te","e$6","H$1","e$7","e$8","e$11","e$12","e$13","e$14","e$15","e$16","Ae","Je","je","ht","ke","Be","Qe","mt","yt","oo","so","ft","Ue","Ve","no","ro","io","lo","e$17","e$18","e$19","e$20","e$21","init_react_virtuoso","scope","listeners","set","LISTENERS_KEY","notify","listener","registerFilterTriggerHost","HOST_KEY","el","useFilterTriggerHost","onChange","FilterTriggerSpot","setEl","bottom","init_filter_trigger_host","ensurePerfDebug","totalLong","lastTask","taskCount","entry","list","attr","src","inFlight","lastResponse","origFetch","args","tail","res","err","tapPaint","last","worstLag","tick","now","lag","bad","init_perf_debug","getRegistry","setListGrowth","reg","id","prev","subscribe","getEmptySnapshot","lists","useCatalogueIsEmpty","init_list_growth","getContext","existing","created","useMeasuredListMinHeight","minHeight","setMinHeight","shell","shellRef","cap","capRef","frame","measure","vh","distance","next","schedule","observer","BrowserListMinHeight","init_browser_min_height","debugScroll","Spinner","spinnerStyles","color","ListFooter","isFetchingNextPage","spinnerColor","hasSlotContent","prefersReducedMotion","FadeInItem","fade","pendingRef","elapsed","startRef","remaining","FADE_TIMELINE_MS","parseInitialFilterParams","input","result","paramValue","resolveListMinHeight","offset","minHeightOffset","SoundeeCatalogList","CatalogListInner","CanvasCatalogPreview","items","previewItems","limit","playlistId","layout","gridMinWidth","renderItem","item","index","CatalogListBody","sourceParamsKey","extraParams","refreshOnEntry","refreshVersion","filterStore","entityMap","selectEntities","didMountRef","isGlobalFilters","filtersSource","shouldLoadMore","infiniteLoading","mounted","setMounted","userId","storeId","defaultFilters","initialFilters","initialFilterParams","intent","generation","base","anchorRef","browserMinHeight","listMinHeight","pendingCorrectionRef","scrollTriggerKey","isLoggedIn","needsAuth","likeActivityScope","entityPath","queryKeyForEntry","refreshVersionRef","restoreCheckedRef","enteredRef","arriving","isPendingV5","isLoadingV4","fetchFn","pageParam","lastPage","isPending","explicit","scrollTargetRef","scrollTargetId","anchor","cover","targetTop","scrollOffset","pendingFadeIdsRef","fadeTimerRef","fadeStartRef","prevLayoutKeyRef","containerRef","frozenHeight","setFrozenHeight","freezeTimerRef","newItems","upsertFn","layoutKey","likeVersion","itemIds","ids","getEntityIds","afterLikes","filterItemIds","pages","added","removed","page","visibleItemIds","growthId","growthHasData","growthCanGrow","hasNextPage","emptyCatalogue","isError","fetchPageFn","isEmpty","storeCatchingUp","renderSkeleton","emptySlot","emptyTitle","emptyText","showEmptyReset","gridStyles","gap","virtualizerMinHeight","VirtuosoGrid","fetchNextPage","Virtuoso","init_SoundeeCatalogListStandalone","footnoteFont","size","font","match","RowWaveform","total","track","footnote","tokens","wave","tagTypes","maxTags","init_RowWaveform","ensureRowHoverStyles","ROW_STYLE_ID","ROW_CLASS","hasStroke","useHasMetadata","typesKey","types","raw","BuiltInTrackRow","metrics","isMobile","rowLayout","activeEntityId","selectEntityId","playing","selectIsPlaying","isActive","isPlaying","hasSubtitle","subtitleTypes","hasTags","toggleLikeWithAuth","addToCart","liveCartVariant","cartVariant","currency","handlePlay","event","handleLike","handleDownload","newDays","isNew","ageDays","price","pill","iconButton","iconHover","outlineHover","filledHover","playRing","playTokens","activeRing","activePlayStyle","columnGap","titleFill","titleWidth","columns","NO_BADGE_WRAP","titleGap","middle","waveTokens","chipTokens","liked","BuiltInRowSkeleton","DEFAULT_SKELETON_CHIPS","show","FULL_SKELETON_COLUMNS","bar","height","block","radius","titleRun","subtitleRun","init_BuiltInTrackRow","isCatalogMode","getLayoutContext","loadCatalogMode","STORAGE_KEY","parsed","SCHEMA_VERSION","saveCatalogMode","payload","setCatalogMode","mode","setCatalogModeDefault","state","hydrateCatalogMode","ctx","stored","useCatalogMode","init_catalog_layout","getOrigin","SoundeeTracksList","DEFAULT_CONTENT","DEFAULT_ROW_TOKENS","brand","rowStyle","c$1","meta","DEFAULT_METADATA","metadata","space","DEFAULT_SPACING","spacing","DEFAULT_LIST","scroll","DEFAULT_SCROLLING","scrolling","effectiveLimit","excludeTrackId","selectEntitiesFn","entities","getEntityIdsFn","isFavorites","renderSkeletonFn","renderItemFn","TrackRowWrapper","catalogMode","asCards","renderCardSkeletonFn","renderCardFn","listElement","PREVIEW_TRACKS","PREVIEW_ARTWORK_COLORS","tracksListPanelControls","init_SoundeeTracksListStandalone","templates","detailsUrl","iosZoomGuardCss","fontSize","selector","parseFontSize","init_ios_zoom","useDebounce","debounced","setDebounced","ms","getPaddingPart","parts","padding","side","SoundeeSearchInput","brandFont","DEFAULT_STYLE","searchStyle","clearIconSize","searchIconSize","searchIconLeft","inputPaddingLeft","showSearchIcon","inputRef","focused","setFocused","search","setSearch","storeValue","filterKey","debouncedSearch","committedRef","isInitial","handleKeyDown","borderStyle","border","focusBorder","focusBorderColor","hasValue","handleClear","placeholderStyleId","placeholderColor","fill","init_SoundeeSearchInput","DualRangeSlider","values","setValues","defaultLowValue","defaultHighValue","isDragging","setIsDragging","activeDot","setActiveDot","audioInitialized","setAudioInitialized","sliderRef","audioContextRef","audioBufferRef","lastHapticTimeRef","audioUnlockHandlerRef","lowValue","highValue","triggerHapticFeedback","enableHaptics","patterns","pattern","hapticIntensity","type","intensityMap","intensity","error","initializeAudio","enableSound","AudioContext","sampleRate","buffer","channelData","envelope","setupAudioUnlock","unlockAudio","gainNode","playDragSound","soundVolume","span","max","min","toPercent","lowPercentage","highPercentage","updateValues","newValues","handleMouseDown","dot","handleMouseUp","onCommit","onValueChange","updateValue","valueChanged","newValue","step","handleMouseMove","rect","offsetX","percentage","handleTouchMove","touch","getLabelPosition","handleSize","showLabels","labelPosition","labelColor","labelFont","trackHeight","trackColor","rangeColor","handleColor","init_DualRangeSlider","clamp","hi","buildQuickRanges","snap","low","high","SoundeeRangeFilterStandalone","DEFAULT_COLORS","colors","input$","DEFAULT_INPUT_STYLE","inputStyle","quick$","DEFAULT_QUICK_RANGE_STYLE","quickRangeStyle","def","overKey","underKey","committedLow","committedHigh","isExact","displayLow","setDisplayLow","displayHigh","setDisplayHigh","preciseOn","setPreciseOn","exactValue","setExactValue","commitRange","instant","commitLow","commitHigh","commitExact","handleQuickRange","togglePrecise","quickRanges","quickRangeCount","inputBaseStyle","fieldLabelStyle","label","precise","preciseLabel","unit","showSlider","showInputs","showQuickRanges","quickRangesTitle","active","qr","init_SoundeeRangeFilterStandalone","tagsPillControls","mergeBarTokens","groups","out","DEFAULT_FILTER_BAR_TOKENS","group","nudgeSkin","pillFill","alphaZero","cleaned","varMatch","hex","channel","rgb","part","hsl","sat","barFade","barFadeBlurLayer","blur","mask","DEFAULT_BAR_TEXT","DEFAULT_BAR_PILLS","DEFAULT_BAR_PANEL","filterBarTextControls","filterBarPillControls","filterBarPanelControls","DEFAULT_BAR_SHELL","filterBarShellControls","BAR_METRICS","init_tokens","CountBadge","hover","setHover","onClear","REMOVE","init_CountBadge","buildUrl","suffix","WEIGHT_SUFFIX","weight","BASE","name","loadSvg","cached","svgCache","url","promise","inflight","text","resolveName","override","category","MOOD_ICONS","GENRE_ICONS","SoundeeFilterIcon","DEFAULT_FALLBACK","filterValue","nameOverride","fallbackUrl","markup","setMarkup","cancelled","svg","fb","cls","init_SoundeeFilterIcon","useHiddenScrollbar","enabled","init_hidden_scrollbar","normalize","OptionList","scrollbar","hasIcon","ICON_FILTER_KEYS","optionRefs","filtered","options","showSearch","searchable","focusOption","onListKeyDown","searchFieldId","zoomGuardCss","stickySearchSurface","searchPlaceholder","option","onToggle","init_OptionList","FilterDropdown","open","setOpen","activeCount","atDefault","empty","handleToggle","trigger","body","init_FilterDropdown","isKeyExcluded","excludedKeys","init_filter_value_scope","useActiveFilterChips","excludeKey","excludeKeys","val","arr","opt","init_active_chips","getScrollMetrics","axis","element","measureScrollEdges","current","clampScrollWithinBounds","useScrollEdges","edges","setEdges","EMPTY_EDGES","scrollRef","setMeasuredEdges","rafs","settleTimer","handleScroll","scheduleLayoutUpdate","child","raf","contentKey","init_scroll_edges","useEdgeFade","isVertical","image","maskWidth","dir","init_edge_fade","ActiveChips","chips","EXCLUDED","chip","maskStyle","scrollByDir","ResetButton","drifted","floating","reset","keys","init_ActiveChips","FilterSheet","theme","setPage","defs","activeDef","pageCount","totalActive","sum","headingCount","chipCount","CHIP_EXCLUDED","pageDrifted","anyDrifted","row","onOpenChange","init_FilterSheet","MoreDropdown","init_MoreDropdown","CrownIcon","ShuffleIcon","SortRow","pinned","PINNED","shuffle","SHUFFLE","rest","setSort","pillHover","selectedInRest","restActive","restLabel","restTrigger","isTopSellers","SortMenuItems","onSelect","SortMenuButton","currentName","init_SortRow","useLikedCount","session","signedIn","viewerId","scopeKey","serverVersion","previousQuery","previous","init_liked_count","FavoritesToggle","FILTER_KEY","FAVORITES","counting","recounting","toggle","init_FavoritesToggle","LayoutToggle","isGrid","FALLBACK_MODE","OPTIONS$1","menuTokens","init_LayoutToggle","SoundeeFilterBar","FilterBarInner","DEFAULT_FILTER_KEYS","DEFAULT_MORE_KEYS","buttons","panel","sheetOpen","setSheetOpen","bottomInset","triggerHost","innerRow","overflowX","favoritesButton","showFavorites","sortButton","showSort","layoutButton","showLayout","searchField","dropdownKeys","filterKeys","booleanKeys","moreKeys","anchorId","moreLabel","portalInto","host","init_SoundeeFilterBar","useSuggestedTags","DEBOUNCE_MS","primary","hasActiveFilters","needsFallback","fallbackToAll","unfilteredLimit","appendAll","allLimit","fallbackQueryKey","fallbackData","fallbackFetching","usingFallback","init_Suggested_tags_1","SuggestedTagsRow","CANVAS_TAGS","seen","tags","allTags","tag","tagHeight","showSkeleton","previewLoading","title","SKELETON_WIDTHS","init_SuggestedTagsRow","SoundeeSuggestedTagsBar","SuggestedTagsBarInner","maxWidth","paddingX","init_SoundeeSuggestedTagsBar","browserFilterDefaults","BrowserShell","f0","filterDefaults","filters","t0","DEFAULT_BROWSER_TAGS","catalogueIsEmpty","hideControls","barTokens","listCapRef","measuredListMinHeight","navOffset","tagsText","tagsButtons","browserShellControls","init_browser_shell","SoundeeTracksBrowser","DEFAULT_FILTERS","_rowLayout","_scrolling","forwardedListControls","controls","init_SoundeeTracksBrowser","applyNames","named","sorts","sort","Icon","Row","root","pills","inMenuOnly","choose","start","outside","ICONS","menuLabel","BeatSort","setRow","setHost","chart","topSellers","trending","mostPlayed","latest","oldest","random","sync","getStore","findSoundeeRow","HIDDEN","css","buttonHeight","textColor","activeFill","activeText","sortValue","OPTIONS","init_BeatSort"],"sources":["https:/framerusercontent.com/modules/Z21HBVFqpyLxpOvVRUld/2v7AAFuHCDHvjOmkHZwT/entity_count.js","https:/framerusercontent.com/modules/JalUuqDS2H6xZO4J8HK1/4duaiIv8A2pkwdWjHYJD/SoundeeResultCount.js","https:/framer.soundee.com/vendor/react-virtuoso-4.13.0.js","https:/framerusercontent.com/modules/imeijzWlAyXyG3sctoxx/D1IvaREGR6D3VQzWST26/react_virtuoso.js","https:/framerusercontent.com/modules/xJtVMvQLqvvftBQKiwcF/OViklEgXqXgQ0jff9C8V/filter_trigger_host.js","https:/framerusercontent.com/modules/mUoovyYiGwCRmu1W1gJS/0ssIzZkG4zJWCHoCOWdv/perf_debug.js","https:/framerusercontent.com/modules/iODtZvjeTLoGSw3FWxMf/nDiDt9S4XhmoJG5zfmVU/list_growth.js","https:/framerusercontent.com/modules/Fo3cxfXOSwZYsol3Xc2O/t5MQgLzzhrLDxK0vnYct/browser_min_height.js","https:/framerusercontent.com/modules/ZBw6ZYaIoQz2zc8x4Vrj/W81l2DiiKWPHaDSOzPZt/SoundeeCatalogListStandalone.js","https:/framerusercontent.com/modules/5uHxf6kMtFQiU1wjf3HI/yKbmX5Wiq5g3eC9nonnw/RowWaveform.js","https:/framerusercontent.com/modules/mSOthu4GPi96rh5kPayq/shFILx027ghCI8lX0yAI/BuiltInTrackRow.js","https:/framerusercontent.com/modules/tSe6igB2HLAgjgBlJf8z/iDFJBF8W0owss4QQBa89/catalog_layout.js","https:/framerusercontent.com/modules/9EKGvjklldEW2KiZO4D5/sr2FRK3B0Y0bwJrYS5aG/SoundeeTracksListStandalone.js","https:/framerusercontent.com/modules/P542p3u9ykvDUJKb8yyx/GbYAiUB9nBb2l2RLD8El/ios_zoom.js","https:/framerusercontent.com/modules/y1ImawrCheMvr2j9Mbc8/YBYuPBC3kuoGNR7CfxhJ/SoundeeSearchInput.js","https:/framerusercontent.com/modules/8SA0KZxzMOPtVVQMqnGS/MK1WT953hARLOSq5PJRB/DualRangeSlider.js","https:/framerusercontent.com/modules/6i8xC5KeV0OgNtI3msci/aFPf3OGTwnGFnUzo4gwf/SoundeeRangeFilterStandalone.js","https:/framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js","https:/framerusercontent.com/modules/qtzQ2YALuWH5HEcoWjyi/DcFzA35mzS6OsATJ2FiU/CountBadge.js","https:/framerusercontent.com/modules/SuYyHPwmgFprmoboAyuK/Lmi3lxnsdmeS0pkOyINA/SoundeeFilterIcon.js","https:/framerusercontent.com/modules/bkPABx8fmYzes1gCdNV5/t03S1xiu8GiyxGsQ4F1E/hidden_scrollbar.js","https:/framerusercontent.com/modules/fV7eoagB9SMwSI2vlYtp/HznWmBe6ljrV1LYBNWGC/OptionList.js","https:/framerusercontent.com/modules/4aTgc91AIbJdUr7ZkdZI/xDMhgTtwvzfip8pPXiF2/FilterDropdown.js","https:/framerusercontent.com/modules/9f3eijyaBZtpf1nnWjXI/1DVEfzGSgPKiAJ0W3Mr3/filter_value_scope.js","https:/framerusercontent.com/modules/5KWA9y5WGC4UAKiE6GpP/ES89NtRQ7VKyiVuBW2z4/active_chips.js","https:/framerusercontent.com/modules/UcJY8bef4OXgK6DQqhuG/PHv6OZLOdAGJRM52umj4/scroll_edges.js","https:/framerusercontent.com/modules/OPQbGb52rDGZFY06BqrF/32s6Lmy3sSMQq3NMj19L/edge_fade.js","https:/framerusercontent.com/modules/ZjboTQYpMTUoT9KtD9wT/xKUfFKL4XFKsHxPXfENU/ActiveChips.js","https:/framerusercontent.com/modules/uQcORyujcfw62PevKc8z/3jY235TTRY0MSCFFR9tx/FilterSheet.js","https:/framerusercontent.com/modules/OC8GVvXlzGAJckzmbaVi/DoPbjNoTkQxP4s7D5JJr/MoreDropdown.js","https:/framerusercontent.com/modules/04LQ2DKlLwETnODI0h7T/GybCbTnZ0DO1iEF8OTYD/SortRow.js","https:/framerusercontent.com/modules/FvPzsfn1KdAHqUXPQx0J/qILwqJE9tCKACs15v3Ga/liked_count.js","https:/framerusercontent.com/modules/mY6ZcBGlHMXwBfvCvREE/9HoFs2X7dNoiUUH4EqH9/FavoritesToggle.js","https:/framerusercontent.com/modules/2Bq1oD8u7lre21I7HBqQ/w5vBDrklnAWMjugLkv6s/LayoutToggle.js","https:/framerusercontent.com/modules/BQHMD01TIP3SNUeZvFWN/hdToe6VeUiSVqFHoXA6F/SoundeeFilterBar.js","https:/framerusercontent.com/modules/SHJu3GAgQPwrcP0smDsU/Asg4PHQED31bngBzItVK/Suggested_tags_1.js","https:/framerusercontent.com/modules/siRnBGw44sJofOCnMMJt/qHsJYaakdbvqo5uFldS3/SuggestedTagsRow.js","https:/framerusercontent.com/modules/viht6kPMwhTuHZDsICrP/FC89C4B6AWBKZIj2pHrO/SoundeeSuggestedTagsBar.js","https:/framerusercontent.com/modules/U7fAjlh1XUFKIeOg4yjh/FGB7G46MpgkAanSPOaXI/browser_shell.js","https:/framerusercontent.com/modules/qem4gUbcohNK0OL6ZB0B/fCaqTfSw6JIhcDGLXlFN/SoundeeTracksBrowser.js","https:/framerusercontent.com/modules/mPuzQS8EXele6OUwEuZo/ncTgIxCruiVrqJ3f3Hwh/BeatSort.js"],"sourcesContent":["// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\nimport*as React from\"react\";import{useQuery}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{keepPreviousForStore,NEVER_COLLECT}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveCatalogLocalDelta,useActiveCatalogSourceParams,useActiveCatalogSourceVersion}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{fetchEntityCount}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";import{getLikeActivity}from\"https://framerusercontent.com/modules/FCo7CeK86NShihctg8Ql/5vsld33GwD57YYnnUFr3/likes.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/S0Kmw9574uaRNxylK8em/config.js\";import{buildListQueryKey}from\"https://framerusercontent.com/modules/JcGkFxuDjRfBADgMmXWq/pvonKNExnbKIMYF0pgOe/query_key.js\";const DEBOUNCE_MS=500;/**\n * Params that only change ordering, never how many rows match. Dropped before\n * building the count request so changing the sort doesn't produce a different\n * cache entry — and therefore doesn't trigger a pointless refetch.\n */const ORDERING_ONLY_PARAMS=[\"sort\"];export function useEntityCount(filterEntityType,source=\"pending\"){const Filters=filterRegistry[filterEntityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const cfg=useSoundeeConfig();// Scope the count exactly like the active list scopes its items: the filter\n// store plus the list's source/relation params (e.g. `list_type=liked` for\n// a Favorites list). Without these the count would report every entity\n// matching the filters, ignoring the source — a number far too high.\n// Published by the list via `registerCatalogFilterEntityType`, so the\n// designer never configures the source twice.\nconst sourceParams=useActiveCatalogSourceParams();const sourceVersion=useActiveCatalogSourceVersion();const localDelta=useActiveCatalogLocalDelta();const filterParams=source===\"committed\"?Filters.getQueryParams():Filters.getPendingQueryParams();const params=React.useMemo(()=>{const merged={...filterParams};for(const[key,value]of Object.entries(sourceParams??{})){merged[key]=String(value);}for(const key of ORDERING_ONLY_PARAMS)delete merged[key];return merged;// `filterParams` is rebuilt each render by the filter store; key off its\n// serialization instead so the memo is stable.\n// eslint-disable-next-line react-hooks/exhaustive-deps\n},[JSON.stringify(filterParams),sourceParams]);const paramsKey=JSON.stringify(params);const[stableParams,setStableParams]=React.useState(()=>params);// Membership version of the active source: liking a track leaves\n// `list_type=liked` untouched but changes which entities match it, so the\n// params alone would never invalidate this query.\n//\n// Captured on mount and again when the filters move — the same moments the\n// list itself asks the server again — rather than read live. A live count\n// beside a frozen list disagrees with it: like an r&b beat on a favorites\n// view filtered to r&b and the count says thirteen while twelve rows are\n// listed, because a filtered view cannot place a like it has no way to\n// check. Same moment for both, and the two always add up.\n//\n// Which route made it a liked view does not matter here — the params say\n// so either way, where `sourceVersion` only knew about the Source control.\nconst likedView=params.list_type===\"liked\";const[likeActivity,setLikeActivity]=React.useState(getLikeActivity);React.useEffect(()=>{// Unchanged on mount, so React bails and nothing recounts.\nsetLikeActivity(getLikeActivity());},[paramsKey]);const membershipVersion=likedView?`liked:${likeActivity}`:String(sourceVersion);const[stableVersion,setStableVersion]=React.useState(membershipVersion);const hasSyncedRef=React.useRef(false);if(!hasSyncedRef.current&&store.hydrated){hasSyncedRef.current=true;if(JSON.stringify(stableParams)!==paramsKey){setStableParams(params);}if(stableVersion!==membershipVersion)setStableVersion(membershipVersion);}React.useEffect(()=>{if(!hasSyncedRef.current)return;const timer=setTimeout(()=>{setStableParams(params);setStableVersion(membershipVersion);},DEBOUNCE_MS);return()=>clearTimeout(timer);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[paramsKey,membershipVersion]);const path=`/users/${cfg.userId}/${filterEntityType}`;const queryKey=React.useMemo(()=>[\"entityCount\",...buildListQueryKey({baseUrl:cfg.baseUrl,storeId:cfg.storeId,path,params:stableParams}),stableVersion],[cfg.baseUrl,cfg.storeId,path,stableParams,stableVersion]);const{data,isFetching}=useQuery({queryKey,queryFn:()=>fetchEntityCount({baseUrl:cfg.baseUrl,storeId:cfg.storeId,userId:cfg.userId},path,stableParams),...keepPreviousForStore(queryKey,1),enabled:!!cfg.userId&&cfg._ready&&store.hydrated,staleTime:Infinity,...NEVER_COLLECT,refetchOnMount:false,refetchOnWindowFocus:false,refetchOnReconnect:false});const isReady=!!cfg.userId&&cfg._ready&&store.hydrated;// The server's number, corrected by what the list has since watched happen.\n// An unlike is certain — out of the likes is out of a liked list, whatever\n// else is filtering — so the count follows the row off the screen. A new\n// like only counts once the list is actually showing it, which on a\n// filtered view it cannot be.\nconst serverCount=data?.count;const count=serverCount==null?null:likedView?Math.max(0,serverCount+localDelta):serverCount;return{count,precision:data?.precision??\"exact\",loading:!isReady||isFetching};}\nexport const __FramerMetadata__ = {\"exports\":{\"EntityCountSource\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useEntityCount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r7 (2026-08-25, v4 hardening) — rebuild for the\n// dual-major cache option (gcTime/cacheTime) and the NaN-proof page counter\n// in api/{tracks,kits,services}.tsx. On v4 `undefined + 1` made nextPage NaN,\n// which is not nullish, so the list would ask for page=NaN forever.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{QueryClientProvider}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{useEntityCount}from\"https://framerusercontent.com/modules/Z21HBVFqpyLxpOvVRUld/2v7AAFuHCDHvjOmkHZwT/entity_count.js\";import{queryClient}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{normalizeSlot,renderSlotWithSizing}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";// Hug both axes by default; a count label sizes to its own content.\nconst DEFAULT_CONTENT_SIZE={width:\"Auto\",height:\"Auto\"};// Realistic demo value so the connected label previews on canvas.\nconst CANVAS_PREVIEW_COUNT=42;/**\n * The word for each entity type, singular and plural.\n *\n * \"Beats\" rather than \"Tracks\" because that is what the people selling them\n * call them; both are one control away.\n */const DEFAULT_NOUNS={tracks:{one:\"Beat\",many:\"Beats\"},kits:{one:\"Kit\",many:\"Kits\"},services:{one:\"Service\",many:\"Services\"}};const DEFAULT_COUNT_FONT={fontSize:\"14px\",fontWeight:600,lineHeight:\"1.3em\"};function resolveNoun(entityType,count,nouns){const fallback=DEFAULT_NOUNS[entityType]??DEFAULT_NOUNS.tracks;const chosen=nouns?.[entityType];// One is not a special case worth a control of its own — every language\n// that needs it needs both words anyway.\nconst word=count===1?chosen?.one:chosen?.many;return word?.trim()||(count===1?fallback.one:fallback.many);}/**\n * The label this renders when no design is connected.\n *\n * Thousands separated, because a four-figure catalogue is exactly where the\n * number stops being readable. `estimate` is the server saying it stopped\n * counting, so the number is a floor rather than a total.\n */function BuiltInLabel({count,precision,entityType,nouns,countFont,countColor,nounColor}){const font=countFont??DEFAULT_COUNT_FONT;return /*#__PURE__*/_jsxs(\"span\",{style:{...font,color:countColor,whiteSpace:\"nowrap\"},children:[count.toLocaleString(),precision===\"estimate\"?\"+\":\"\",\" \",/*#__PURE__*/_jsx(\"span\",{style:{color:nounColor??countColor},children:resolveNoun(entityType,count,nouns)})]});}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeResultCount({labelSlot,loadingSlot,source=\"pending\",previewState=\"Default\",contentSize=DEFAULT_CONTENT_SIZE,nouns,countFont,countColor=\"#ffffff\",nounColor=\"rgba(255,255,255,0.55)\",style}){return /*#__PURE__*/_jsx(QueryClientProvider,{client:queryClient,children:/*#__PURE__*/_jsx(ResultCountInner,{labelSlot:labelSlot,loadingSlot:loadingSlot,source:source,previewState:previewState,contentSize:contentSize,nouns:nouns,countFont:countFont,countColor:countColor,nounColor:nounColor,style:style})});}function ResultCountInner({labelSlot,loadingSlot,source,previewState,contentSize,nouns,countFont,countColor,nounColor,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const filterEntityType=useActiveFilterEntityType();const{count,precision,loading}=useEntityCount(filterEntityType,source);const labelEl=normalizeSlot(labelSlot);const loadingEl=normalizeSlot(loadingSlot);const renderSized=React.useCallback((node,injectedProps,key)=>renderSlotWithSizing(node,injectedProps,`result-count-${filterEntityType}-${source}-${key}`,contentSize),[contentSize,filterEntityType,source]);// Nothing connected: draw the label. A connected slot still wins below, so\n// instances that already have a design behave exactly as they did.\nif(!/*#__PURE__*/React.isValidElement(labelEl)&&!/*#__PURE__*/React.isValidElement(loadingEl)){const value=isCanvas?CANVAS_PREVIEW_COUNT:count;const busy=isCanvas?previewState===\"Loading\":loading;// Only before the first answer. `useEntityCount` keeps the previous\n// count while refetching, so a filter change updates the number in\n// place instead of blanking it.\nif(value==null){return /*#__PURE__*/_jsx(\"div\",{style:style,children:/*#__PURE__*/_jsxs(\"span\",{style:{...countFont??DEFAULT_COUNT_FONT,color:nounColor,whiteSpace:\"nowrap\"},children:[\"… \",resolveNoun(filterEntityType,0,nouns)]})});}return /*#__PURE__*/_jsx(\"div\",{style:{opacity:busy?.6:1,...style},children:/*#__PURE__*/_jsx(BuiltInLabel,{count:value,precision:isCanvas?\"exact\":precision,entityType:filterEntityType,nouns:nouns,countFont:countFont,countColor:countColor,nounColor:nounColor})});}if(isCanvas){const showLoading=previewState===\"Loading\"&&/*#__PURE__*/React.isValidElement(loadingEl);const node=showLoading?loadingEl:labelEl??loadingEl;if(!/*#__PURE__*/React.isValidElement(node))return null;return /*#__PURE__*/_jsx(\"div\",{style:style,children:renderSized(node,{resultCount:showLoading?null:CANVAS_PREVIEW_COUNT,resultPrecision:\"exact\",resultLoading:showLoading},showLoading?\"loading\":\"default\")});}// Show the dedicated loading slot while fetching; fall back to the label\n// (which also receives `resultLoading` so it can handle loading inline).\nconst showLoading=loading&&/*#__PURE__*/React.isValidElement(loadingEl);const node=showLoading?loadingEl:labelEl;if(!/*#__PURE__*/React.isValidElement(node))return null;return /*#__PURE__*/_jsx(\"div\",{style:style,children:renderSized(node,{resultCount:count,resultPrecision:precision,resultLoading:loading},showLoading?\"loading\":\"default\")});}SoundeeResultCount.displayName=\"Soundee Result Count\";/**\n * Styling controls only matter when this draws the label itself. An empty slot\n * arrives as `undefined` or as an empty array depending on how it was cleared,\n * and `[]` is truthy — hence the length check rather than a plain boolean.\n */function hasLabelSlot(props){const slot=props.labelSlot;return Array.isArray(slot)?slot.length>0:!!slot;}addPropertyControls(SoundeeResultCount,{source:{type:ControlType.Enum,title:\"Source\",options:[\"pending\",\"committed\"],optionTitles:[\"Pending\",\"Committed\"],defaultValue:\"pending\",description:\"Pending updates live as filters change (preview, like the apply button). Committed matches the filters currently applied to the visible list.\"},previewState:{type:ControlType.Enum,title:\"Preview\",options:[\"Default\",\"Loading\"],optionTitles:[\"Default\",\"Loading\"],defaultValue:\"Default\",description:\"Canvas-only: preview the Default or Loading slot.\"},contentSize:{type:ControlType.Object,title:\"Content Size\",controls:{width:{type:ControlType.Enum,title:\"Width\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"},height:{type:ControlType.Enum,title:\"Height\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"}},defaultValue:DEFAULT_CONTENT_SIZE},labelSlot:{type:ControlType.Slot,title:\"Label\",maxCount:1,description:'Optional. Left empty, the count renders itself as \"234 Beats\". Connect a design and it receives resultCount, resultPrecision and resultLoading instead.'},loadingSlot:{type:ControlType.Slot,title:\"Loading\",maxCount:1},nouns:{type:ControlType.Object,title:\"Words\",icon:\"object\",hidden:hasLabelSlot,controls:{tracks:{type:ControlType.Object,title:\"Beats\",controls:{one:{type:ControlType.String,title:\"One\",placeholder:DEFAULT_NOUNS.tracks.one},many:{type:ControlType.String,title:\"Many\",placeholder:DEFAULT_NOUNS.tracks.many}}},kits:{type:ControlType.Object,title:\"Kits\",controls:{one:{type:ControlType.String,title:\"One\",placeholder:DEFAULT_NOUNS.kits.one},many:{type:ControlType.String,title:\"Many\",placeholder:DEFAULT_NOUNS.kits.many}}},services:{type:ControlType.Object,title:\"Services\",controls:{one:{type:ControlType.String,title:\"One\",placeholder:DEFAULT_NOUNS.services.one},many:{type:ControlType.String,title:\"Many\",placeholder:DEFAULT_NOUNS.services.many}}}},description:\"Which word goes with the number. The list on the page decides which of the three is used, so a page showing kits says Kits without being told twice. Leave a field empty for the default.\"},countFont:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",// The Font control types its default narrowly; the value it hands\n// back at runtime is a plain style object either way.\ndefaultValue:DEFAULT_COUNT_FONT,hidden:hasLabelSlot},countColor:{type:ControlType.Color,title:\"Number\",defaultValue:\"#ffffff\",hidden:hasLabelSlot},nounColor:{type:ControlType.Color,title:\"Word\",defaultValue:\"rgba(255,255,255,0.55)\",hidden:hasLabelSlot}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeResultCount\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import*as et from\"react\";var co=et.Fragment;function M(e,t,o){return et.createElement(e,o===void 0?t:{...t,key:o})}function Fe(e,t,o){let{children:n,...r}=t||{},i=o===void 0?r:{...r,key:o};return et.createElement(e,i,...Array.isArray(n)?n:[n])}import R,{createElement as Ge}from\"react\";import un from\"react-dom\";var Ct=0,Me=1,Ye=2,Fo=4;function ao(e){return()=>e}function dn(e){e()}function nt(e,t){return o=>e(t(o))}function uo(e,t){return()=>e(t)}function hn(e,t){return o=>e(t,o)}function Vt(e){return e!==void 0}function mn(...e){return()=>{e.map(dn)}}function $e(){}function Ht(e,t){return t(e),e}function fn(e,t){return t(e)}function J(...e){return e}function q(e,t){return e(Me,t)}function D(e,t){e(Ct,t)}function Dt(e){e(Ye)}function re(e){return e(Fo)}function F(e,t){return q(e,hn(t,Ct))}function Re(e,t){let o=e(Me,n=>{o(),t(n)});return o}function ho(e){let t,o;return n=>r=>{t=r,o&&clearTimeout(o),o=setTimeout(()=>{n(t)},e)}}function Lo(e,t){return e===t}function Z(e=Lo){let t;return o=>n=>{e(t,n)||(t=n,o(n))}}function O(e){return t=>o=>{e(o)&&t(o)}}function y(e){return t=>nt(t,e)}function He(e){return t=>()=>{t(e)}}function I(e,...t){let o=pn(...t);return(n,r)=>{switch(n){case Ye:Dt(e);return;case Me:return q(e,o(r))}}}function be(e,t){return o=>n=>{o(t=e(t,n))}}function qe(e){return t=>o=>{e>0?e--:t(o)}}function Le(e){let t=null,o;return n=>r=>{t=r,!o&&(o=setTimeout(()=>{o=void 0,n(t)},e))}}function G(...e){let t=new Array(e.length),o=0,n=null,r=Math.pow(2,e.length)-1;return e.forEach((i,s)=>{let l=Math.pow(2,s);q(i,c=>{let a=o;o=o|l,t[s]=c,a!==r&&o===r&&n&&(n(),n=null)})}),i=>s=>{let l=()=>{i([s].concat(t))};o===r?l():n=l}}function pn(...e){return t=>e.reduceRight(fn,t)}function gn(e){let t,o,n=()=>t?.();return function(r,i){switch(r){case Me:return i?o===i?void 0:(n(),o=i,t=q(e,i),t):(n(),$e);case Ye:n(),o=null;return}}}function S(e){let t=e,o=_();return(n,r)=>{switch(n){case Ct:t=r;break;case Me:{r(t);break}case Fo:return t}return o(n,r)}}function se(e,t){return Ht(S(t),o=>F(e,o))}function _(){let e=[];return(t,o)=>{switch(t){case Ct:e.slice().forEach(n=>{n(o)});return;case Ye:e.splice(0,e.length);return;case Me:return e.push(o),()=>{let n=e.indexOf(o);n>-1&&e.splice(n,1)}}}}function me(e){return Ht(_(),t=>F(e,t))}function j(e,t=[],{singleton:o}={singleton:!0}){return{constructor:e,dependencies:t,id:vn(),singleton:o}}var vn=()=>Symbol();function xn(e){let t=new Map,o=({constructor:n,dependencies:r,id:i,singleton:s})=>{if(s&&t.has(i))return t.get(i);let l=n(r.map(c=>o(c)));return s&&t.set(i,l),l};return o(e)}function ne(...e){let t=_(),o=new Array(e.length),n=0,r=Math.pow(2,e.length)-1;return e.forEach((i,s)=>{let l=Math.pow(2,s);q(i,c=>{o[s]=c,n=n|l,n===r&&D(t,o)})}),function(i,s){switch(i){case Ye:{Dt(t);return}case Me:return n===r&&s(o),q(t,s)}}}function W(e,t=Lo){return I(e,Z(t))}function mo(...e){return function(t,o){switch(t){case Ye:return;case Me:return mn(...e.map(n=>q(n,o)))}}}var de=(e=>(e[e.DEBUG=0]=\"DEBUG\",e[e.INFO=1]=\"INFO\",e[e.WARN=2]=\"WARN\",e[e.ERROR=3]=\"ERROR\",e))(de||{}),In={0:\"debug\",3:\"error\",1:\"log\",2:\"warn\"},Tn=()=>typeof globalThis>\"u\"?window:globalThis,Oe=j(()=>{let e=S(3);return{log:S((t,o,n=1)=>{var r;let i=(r=Tn().VIRTUOSO_LOG_LEVEL)!=null?r:re(e);n>=i&&console[In[n]](\"%creact-virtuoso: %c%s %o\",\"color: #0253b3; font-weight: bold\",\"color: initial\",t,o)}),logLevel:e}},[],{singleton:!0});function ze(e,t,o){return Gt(e,t,o).callbackRef}function Gt(e,t,o){let n=R.useRef(null),r=s=>{},i=R.useMemo(()=>typeof ResizeObserver<\"u\"?new ResizeObserver(s=>{let l=()=>{let c=s[0].target;c.offsetParent!==null&&e(c)};o?l():requestAnimationFrame(l)}):null,[e,o]);return r=s=>{s&&t?(i?.observe(s),n.current=s):(n.current&&i?.unobserve(n.current),n.current=null)},{callbackRef:r,ref:n}}function Mo(e,t,o,n,r,i,s,l,c){let a=R.useCallback(p=>{let x=Sn(p.children,t,l?\"offsetWidth\":\"offsetHeight\",r),f=p.parentElement;for(;!f.dataset.virtuosoScroller;)f=f.parentElement;let g=f.lastElementChild.dataset.viewportType===\"window\",w;g&&(w=f.ownerDocument.defaultView);let v=s?l?s.scrollLeft:s.scrollTop:g?l?w.scrollX||w.document.documentElement.scrollLeft:w.scrollY||w.document.documentElement.scrollTop:l?f.scrollLeft:f.scrollTop,h=s?l?s.scrollWidth:s.scrollHeight:g?l?w.document.documentElement.scrollWidth:w.document.documentElement.scrollHeight:l?f.scrollWidth:f.scrollHeight,u=s?l?s.offsetWidth:s.offsetHeight:g?l?w.innerWidth:w.innerHeight:l?f.offsetWidth:f.offsetHeight;n({scrollHeight:h,scrollTop:Math.max(v,0),viewportHeight:u}),i?.(l?fo(\"column-gap\",getComputedStyle(p).columnGap,r):fo(\"row-gap\",getComputedStyle(p).rowGap,r)),x!==null&&e(x)},[e,t,r,i,s,n,l]);return Gt(a,o,c)}function Sn(e,t,o,n){let r=e.length;if(r===0)return null;let i=[];for(let s=0;s<r;s++){let l=e.item(s);if(l.dataset.index===void 0)continue;let c=parseInt(l.dataset.index),a=parseFloat(l.dataset.knownSize),p=t(l,o);if(p===0&&n(\"Zero-sized element, this should not happen\",{child:l},de.ERROR),p===a)continue;let x=i[i.length-1];i.length===0||x.size!==p||x.endIndex!==c-1?i.push({endIndex:c,size:p,startIndex:c}):i[i.length-1].endIndex++}return i}function fo(e,t,o){return t!==\"normal\"&&!(t!=null&&t.endsWith(\"px\"))&&o(`${e} was not resolved to pixel value correctly`,t,de.WARN),t===\"normal\"?0:parseInt(t??\"0\",10)}function Nt(e,t,o){let n=R.useRef(null),r=R.useCallback(c=>{if(!(c!=null&&c.offsetParent))return;let a=c.getBoundingClientRect(),p=a.width,x,f;if(t){let g=t.getBoundingClientRect(),w=a.top-g.top;f=g.height-Math.max(0,w),x=w+t.scrollTop}else{let g=s.current.ownerDocument.defaultView;f=g.innerHeight-Math.max(0,a.top),x=a.top+g.scrollY}n.current={offsetTop:x,visibleHeight:f,visibleWidth:p},e(n.current)},[e,t]),{callbackRef:i,ref:s}=Gt(r,!0,o),l=R.useCallback(()=>{r(s.current)},[r,s]);return R.useEffect(()=>{var c;if(t){t.addEventListener(\"scroll\",l);let a=new ResizeObserver(()=>{requestAnimationFrame(l)});return a.observe(t),()=>{t.removeEventListener(\"scroll\",l),a.unobserve(t)}}else{let a=(c=s.current)==null?void 0:c.ownerDocument.defaultView;return a?.addEventListener(\"scroll\",l),a?.addEventListener(\"resize\",l),()=>{a?.removeEventListener(\"scroll\",l),a?.removeEventListener(\"resize\",l)}}},[l,t,s]),i}var ae=j(()=>{let e=_(),t=_(),o=S(0),n=_(),r=S(0),i=_(),s=_(),l=S(0),c=S(0),a=S(0),p=S(0),x=_(),f=_(),g=S(!1),w=S(!1),v=S(!1);return F(I(e,y(({scrollTop:h})=>h)),t),F(I(e,y(({scrollHeight:h})=>h)),s),F(t,r),{deviation:o,fixedFooterHeight:a,fixedHeaderHeight:c,footerHeight:p,headerHeight:l,horizontalDirection:w,scrollBy:f,scrollContainerState:e,scrollHeight:s,scrollingInProgress:g,scrollTo:x,scrollTop:t,skipAnimationFrameInResizeObserver:v,smoothScrollTargetReached:n,statefulScrollTop:r,viewportHeight:i}},[],{singleton:!0}),rt={lvl:0};function Oo(e,t){let o=e.length;if(o===0)return[];let{index:n,value:r}=t(e[0]),i=[];for(let s=1;s<o;s++){let{index:l,value:c}=t(e[s]);i.push({end:l-1,start:n,value:r}),n=l,r=c}return i.push({end:1/0,start:n,value:r}),i}function Y(e){return e===rt}function it(e,t){if(!Y(e))return t===e.k?e.v:t<e.k?it(e.l,t):it(e.r,t)}function Se(e,t,o=\"k\"){if(Y(e))return[-1/0,void 0];if(Number(e[o])===t)return[e.k,e.v];if(Number(e[o])<t){let n=Se(e.r,t,o);return n[0]===-1/0?[e.k,e.v]:n}return Se(e.l,t,o)}function he(e,t,o){return Y(e)?Ao(t,o,1):t===e.k?oe(e,{k:t,v:o}):t<e.k?po(oe(e,{l:he(e.l,t,o)})):po(oe(e,{r:he(e.r,t,o)}))}function Ke(){return rt}function bt(e,t,o){if(Y(e))return[];let n=Se(e,t)[0];return wn(Ot(e,n,o))}function Mt(e,t){if(Y(e))return rt;let{k:o,l:n,r}=e;if(t===o){if(Y(n))return r;if(Y(r))return n;{let[i,s]=Po(n);return vt(oe(e,{k:i,l:Wo(n),v:s}))}}else return t<o?vt(oe(e,{l:Mt(n,t)})):vt(oe(e,{r:Mt(r,t)}))}function De(e){return Y(e)?[]:[...De(e.l),{k:e.k,v:e.v},...De(e.r)]}function Ot(e,t,o){if(Y(e))return[];let{k:n,l:r,r:i,v:s}=e,l=[];return n>t&&(l=l.concat(Ot(r,t,o))),n>=t&&n<=o&&l.push({k:n,v:s}),n<=o&&(l=l.concat(Ot(i,t,o))),l}function vt(e){let{l:t,lvl:o,r:n}=e;if(n.lvl>=o-1&&t.lvl>=o-1)return e;if(o>n.lvl+1){if(Et(t))return Vo(oe(e,{lvl:o-1}));if(!Y(t)&&!Y(t.r))return oe(t.r,{l:oe(t,{r:t.r.l}),lvl:o,r:oe(e,{l:t.r.r,lvl:o-1})});throw new Error(\"Unexpected empty nodes\")}else{if(Et(e))return Wt(oe(e,{lvl:o-1}));if(!Y(n)&&!Y(n.l)){let r=n.l,i=Et(r)?n.lvl-1:n.lvl;return oe(r,{l:oe(e,{lvl:o-1,r:r.l}),lvl:r.lvl+1,r:Wt(oe(n,{l:r.r,lvl:i}))})}else throw new Error(\"Unexpected empty nodes\")}}function oe(e,t){return Ao(t.k!==void 0?t.k:e.k,t.v!==void 0?t.v:e.v,t.lvl!==void 0?t.lvl:e.lvl,t.l!==void 0?t.l:e.l,t.r!==void 0?t.r:e.r)}function Wo(e){return Y(e.r)?e.l:vt(oe(e,{r:Wo(e.r)}))}function Et(e){return Y(e)||e.lvl>e.r.lvl}function Po(e){return Y(e.r)?[e.k,e.v]:Po(e.r)}function Ao(e,t,o,n=rt,r=rt){return{k:e,l:n,lvl:o,r,v:t}}function po(e){return Wt(Vo(e))}function Vo(e){let{l:t}=e;return!Y(t)&&t.lvl===e.lvl?oe(t,{r:oe(e,{l:t.r})}):e}function Wt(e){let{lvl:t,r:o}=e;return!Y(o)&&!Y(o.r)&&o.lvl===t&&o.r.lvl===t?oe(o,{l:oe(e,{r:o.l}),lvl:t+1}):e}function wn(e){return Oo(e,({k:t,v:o})=>({index:t,value:o}))}function Do(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}function lt(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}var _t=j(()=>({recalcInProgress:S(!1)}),[],{singleton:!0});function Go(e,t,o){return e[It(e,t,o)]}function It(e,t,o,n=0){let r=e.length-1;for(;n<=r;){let i=Math.floor((n+r)/2),s=e[i],l=o(s,t);if(l===0)return i;if(l===-1){if(r-n<2)return i-1;r=i-1}else{if(r===n)return i;n=i+1}}throw new Error(`Failed binary finding record in array - ${e.join(\",\")}, searched for ${t}`)}function Cn(e,t,o,n){let r=It(e,t,n),i=It(e,o,n,r);return e.slice(r,i+1)}function we(e,t){return Math.round(e.getBoundingClientRect()[t])}function Rt(e){return!Y(e.groupOffsetTree)}function jt({index:e},t){return t===e?0:t<e?-1:1}function Hn(){return{groupIndices:[],groupOffsetTree:Ke(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:Ke()}}function bn(e,t){let o=Y(e)?0:1/0;for(let n of t){let{endIndex:r,size:i,startIndex:s}=n;if(o=Math.min(o,s),Y(e)){e=he(e,0,i);continue}let l=bt(e,s-1,r+1);if(l.some(Fn(n)))continue;let c=!1,a=!1;for(let{end:p,start:x,value:f}of l)c?(r>=x||i===f)&&(e=Mt(e,x)):(a=f!==i,c=!0),p>r&&r>=x&&f!==i&&(e=he(e,r+1,f));a&&(e=he(e,s,i))}return[e,o]}function Rn(e){return typeof e.groupIndex<\"u\"}function zn({offset:e},t){return t===e?0:t<e?-1:1}function st(e,t,o){if(t.length===0)return 0;let{index:n,offset:r,size:i}=Go(t,e,jt),s=e-n,l=i*s+(s-1)*o+r;return l>0?l+o:l}function No(e,t){if(!Rt(t))return e;let o=0;for(;t.groupIndices[o]<=e+o;)o++;return e+o}function _o(e,t,o){if(Rn(e))return t.groupIndices[e.groupIndex]+1;{let n=e.index===\"LAST\"?o:e.index,r=No(n,t);return r=Math.max(0,r,Math.min(o,r)),r}}function yn(e,t,o,n=0){return n>0&&(t=Math.max(t,Go(e,n,jt).offset)),Oo(Cn(e,t,o,zn),Bn)}function En(e,[t,o,n,r]){t.length>0&&n(\"received item sizes\",t,de.DEBUG);let i=e.sizeTree,s=i,l=0;if(o.length>0&&Y(i)&&t.length===2){let f=t[0].size,g=t[1].size;s=o.reduce((w,v)=>he(he(w,v,f),v+1,g),s)}else[s,l]=bn(s,t);if(s===i)return e;let{lastIndex:c,lastOffset:a,lastSize:p,offsetTree:x}=Pt(e.offsetTree,l,s,r);return{groupIndices:o,groupOffsetTree:o.reduce((f,g)=>he(f,g,st(g,x,r)),Ke()),lastIndex:c,lastOffset:a,lastSize:p,offsetTree:x,sizeTree:s}}function kn(e){return De(e).map(({k:t,v:o},n,r)=>{let i=r[n+1];return{endIndex:i?i.k-1:1/0,size:o,startIndex:t}})}function go(e,t){let o=0,n=0;for(;o<e;)o+=t[n+1]-t[n]-1,n++;return n-(o===e?0:1)}function Pt(e,t,o,n){let r=e,i=0,s=0,l=0,c=0;if(t!==0){c=It(r,t-1,jt),l=r[c].offset;let a=Se(o,t-1);i=a[0],s=a[1],r.length&&r[c].size===Se(o,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(let{start:a,value:p}of bt(o,t,1/0)){let x=a-i,f=x*s+l+x*n;r.push({index:a,offset:f,size:p}),i=a,l=f,s=p}return{lastIndex:i,lastOffset:l,lastSize:s,offsetTree:r}}function Bn(e){return{index:e.index,value:e}}function Fn(e){let{endIndex:t,size:o,startIndex:n}=e;return r=>r.start===n&&(r.end===t||r.end===1/0)&&r.value===o}var Ln={offsetHeight:\"height\",offsetWidth:\"width\"},ye=j(([{log:e},{recalcInProgress:t}])=>{let o=_(),n=_(),r=se(n,0),i=_(),s=_(),l=S(0),c=S([]),a=S(void 0),p=S(void 0),x=S((T,m)=>we(T,Ln[m])),f=S(void 0),g=S(0),w=Hn(),v=se(I(o,G(c,e,g),be(En,w),Z()),w),h=se(I(c,Z(),be((T,m)=>({current:m,prev:T.current}),{current:[],prev:[]}),y(({prev:T})=>T)),[]);F(I(c,O(T=>T.length>0),G(v,g),y(([T,m,C])=>{let E=T.reduce((L,B,A)=>he(L,B,st(B,m.offsetTree,C)||A),Ke());return{...m,groupIndices:T,groupOffsetTree:E}})),v),F(I(n,G(v),O(([T,{lastIndex:m}])=>T<m),y(([T,{lastIndex:m,lastSize:C}])=>[{endIndex:m,size:C,startIndex:T}])),o),F(a,p);let u=se(I(a,y(T=>T===void 0)),!0);F(I(p,O(T=>T!==void 0&&Y(re(v).sizeTree)),y(T=>[{endIndex:0,size:T,startIndex:0}])),o);let d=me(I(o,G(v),be(({sizes:T},[m,C])=>({changed:C!==T,sizes:C}),{changed:!1,sizes:w}),y(T=>T.changed)));q(I(l,be((T,m)=>({diff:T.prev-m,prev:m}),{diff:0,prev:0}),y(T=>T.diff)),T=>{let{groupIndices:m}=re(v);if(T>0)D(t,!0),D(i,T+go(T,m));else if(T<0){let C=re(h);C.length>0&&(T-=go(-T,C)),D(s,T)}}),q(I(l,G(e)),([T,m])=>{T<0&&m(\"`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value\",{firstItemIndex:l},de.ERROR)});let H=me(i);F(I(i,G(v),y(([T,m])=>{let C=m.groupIndices.length>0,E=[],L=m.lastSize;if(C){let B=it(m.sizeTree,0),A=0,U=0;for(;A<T;){let k=m.groupIndices[U],K=m.groupIndices.length===U+1?1/0:m.groupIndices[U+1]-k-1;E.push({endIndex:k,size:B,startIndex:k}),E.push({endIndex:k+1+K-1,size:L,startIndex:k+1}),U++,A+=K+1}let $=De(m.sizeTree);return A!==T&&$.shift(),$.reduce((k,{k:K,v:ie})=>{let fe=k.ranges;return k.prevSize!==0&&(fe=[...k.ranges,{endIndex:K+T-1,size:k.prevSize,startIndex:k.prevIndex}]),{prevIndex:K+T,prevSize:ie,ranges:fe}},{prevIndex:T,prevSize:0,ranges:E}).ranges}return De(m.sizeTree).reduce((B,{k:A,v:U})=>({prevIndex:A+T,prevSize:U,ranges:[...B.ranges,{endIndex:A+T-1,size:B.prevSize,startIndex:B.prevIndex}]}),{prevIndex:0,prevSize:L,ranges:[]}).ranges})),o);let z=me(I(s,G(v,g),y(([T,{offsetTree:m},C])=>{let E=-T;return st(E,m,C)})));return F(I(s,G(v,g),y(([T,m,C])=>{if(m.groupIndices.length>0){if(Y(m.sizeTree))return m;let E=Ke(),L=re(h),B=0,A=0,U=0;for(;B<-T;){U=L[A];let $=L[A+1]-U-1;A++,B+=$+1}if(E=De(m.sizeTree).reduce(($,{k,v:K})=>he($,Math.max(0,k+T),K),E),B!==-T){let $=it(m.sizeTree,U);E=he(E,0,$);let k=Se(m.sizeTree,-T+1)[1];E=he(E,1,k)}return{...m,sizeTree:E,...Pt(m.offsetTree,0,E,C)}}else{let E=De(m.sizeTree).reduce((L,{k:B,v:A})=>he(L,Math.max(0,B+T),A),Ke());return{...m,sizeTree:E,...Pt(m.offsetTree,0,E,C)}}})),v),{beforeUnshiftWith:H,data:f,defaultItemSize:p,firstItemIndex:l,fixedItemSize:a,gap:g,groupIndices:c,itemSize:x,listRefresh:d,shiftWith:s,shiftWithOffset:z,sizeRanges:o,sizes:v,statefulTotalCount:r,totalCount:n,trackItemSizes:u,unshiftWith:i}},J(Oe,_t),{singleton:!0});function Mn(e){return e.reduce((t,o)=>(t.groupIndices.push(t.totalCount),t.totalCount+=o+1,t),{groupIndices:[],totalCount:0})}var jo=j(([{groupIndices:e,sizes:t,totalCount:o},{headerHeight:n,scrollTop:r}])=>{let i=_(),s=_(),l=me(I(i,y(Mn)));return F(I(l,y(c=>c.totalCount)),o),F(I(l,y(c=>c.groupIndices)),e),F(I(ne(r,t,n),O(([c,a])=>Rt(a)),y(([c,a,p])=>Se(a.groupOffsetTree,Math.max(c-p,0),\"v\")[0]),Z(),y(c=>[c])),s),{groupCounts:i,topItemsIndexes:s}},J(ye,ae)),We=j(([{log:e}])=>{let t=S(!1),o=me(I(t,O(n=>n),Z()));return q(t,n=>{n&&re(e)(\"props updated\",{},de.DEBUG)}),{didMount:o,propsReady:t}},J(Oe),{singleton:!0}),On=typeof document<\"u\"&&\"scrollBehavior\"in document.documentElement.style;function Uo(e){let t=typeof e==\"number\"?{index:e}:e;return t.align||(t.align=\"start\"),(!t.behavior||!On)&&(t.behavior=\"auto\"),t.offset||(t.offset=0),t}var at=j(([{gap:e,listRefresh:t,sizes:o,totalCount:n},{fixedFooterHeight:r,fixedHeaderHeight:i,footerHeight:s,headerHeight:l,scrollingInProgress:c,scrollTo:a,smoothScrollTargetReached:p,viewportHeight:x},{log:f}])=>{let g=_(),w=_(),v=S(0),h=null,u=null,d=null;function H(){h&&(h(),h=null),d&&(d(),d=null),u&&(clearTimeout(u),u=null),D(c,!1)}return F(I(g,G(o,x,n,v,l,s,f),G(e,i,r),y(([[z,T,m,C,E,L,B,A],U,$,k])=>{let K=Uo(z),{align:ie,behavior:fe,offset:ve}=K,xe=C-1,ue=_o(K,T,xe),ce=st(ue,T.offsetTree,U)+L;ie===\"end\"?(ce+=$+Se(T.sizeTree,ue)[1]-m+k,ue===xe&&(ce+=B)):ie===\"center\"?ce+=($+Se(T.sizeTree,ue)[1]-m+k)/2:ce-=E,ve&&(ce+=ve);let Pe=Ie=>{H(),Ie?(A(\"retrying to scroll to\",{location:z},de.DEBUG),D(g,z)):(D(w,!0),A(\"list did not change, scroll successful\",{},de.DEBUG))};if(H(),fe===\"smooth\"){let Ie=!1;d=q(t,Ze=>{Ie=Ie||Ze}),h=Re(p,()=>{Pe(Ie)})}else h=Re(I(t,Wn(150)),Pe);return u=setTimeout(()=>{H()},1200),D(c,!0),A(\"scrolling from index to\",{behavior:fe,index:ue,top:ce},de.DEBUG),{behavior:fe,top:ce}})),a),{scrollTargetReached:w,scrollToIndex:g,topListHeight:v}},J(ye,ae,Oe),{singleton:!0});function Wn(e){return t=>{let o=setTimeout(()=>{t(!1)},e);return n=>{n&&(t(!0),clearTimeout(o))}}}function Ut(e,t){e==0?t():requestAnimationFrame(()=>{Ut(e-1,t)})}function Kt(e,t){let o=t-1;return typeof e==\"number\"?e:e.index===\"LAST\"?o:e.index}var ut=j(([{defaultItemSize:e,listRefresh:t,sizes:o},{scrollTop:n},{scrollTargetReached:r,scrollToIndex:i},{didMount:s}])=>{let l=S(!0),c=S(0),a=S(!0);return F(I(s,G(c),O(([p,x])=>!!x),He(!1)),l),F(I(s,G(c),O(([p,x])=>!!x),He(!1)),a),q(I(ne(t,s),G(l,o,e,a),O(([[,p],x,{sizeTree:f},g,w])=>p&&(!Y(f)||Vt(g))&&!x&&!w),G(c)),([,p])=>{Re(r,()=>{D(a,!0)}),Ut(4,()=>{Re(n,()=>{D(l,!0)}),D(i,p)})}),{initialItemFinalLocationReached:a,initialTopMostItemIndex:c,scrolledToInitialItem:l}},J(ye,ae,at,We),{singleton:!0});function Ko(e,t){return Math.abs(e-t)<1.01}var ct=\"up\",tt=\"down\",Pn=\"none\",An={atBottom:!1,notAtBottomBecause:\"NOT_SHOWING_LAST_ITEM\",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},Vn=0,dt=j(([{footerHeight:e,headerHeight:t,scrollBy:o,scrollContainerState:n,scrollTop:r,viewportHeight:i}])=>{let s=S(!1),l=S(!0),c=_(),a=_(),p=S(4),x=S(Vn),f=se(I(mo(I(W(r),qe(1),He(!0)),I(W(r),qe(1),He(!1),ho(100))),Z()),!1),g=se(I(mo(I(o,He(!0)),I(o,He(!1),ho(200))),Z()),!1);F(I(ne(W(r),W(x)),y(([d,H])=>d<=H),Z()),l),F(I(l,Le(50)),a);let w=me(I(ne(n,W(i),W(t),W(e),W(p)),be((d,[{scrollHeight:H,scrollTop:z},T,m,C,E])=>{let L=z+T-H>-E,B={scrollHeight:H,scrollTop:z,viewportHeight:T};if(L){let U,$;return z>d.state.scrollTop?(U=\"SCROLLED_DOWN\",$=d.state.scrollTop-z):(U=\"SIZE_DECREASED\",$=d.state.scrollTop-z||d.scrollTopDelta),{atBottom:!0,atBottomBecause:U,scrollTopDelta:$,state:B}}let A;return B.scrollHeight>d.state.scrollHeight?A=\"SIZE_INCREASED\":T<d.state.viewportHeight?A=\"VIEWPORT_HEIGHT_DECREASING\":z<d.state.scrollTop?A=\"SCROLLING_UPWARDS\":A=\"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM\",{atBottom:!1,notAtBottomBecause:A,state:B}},An),Z((d,H)=>d&&d.atBottom===H.atBottom))),v=se(I(n,be((d,{scrollHeight:H,scrollTop:z,viewportHeight:T})=>{if(Ko(d.scrollHeight,H))return{changed:!1,jump:0,scrollHeight:H,scrollTop:z};{let m=H-(z+T)<1;return d.scrollTop!==z&&m?{changed:!0,jump:d.scrollTop-z,scrollHeight:H,scrollTop:z}:{changed:!0,jump:0,scrollHeight:H,scrollTop:z}}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),O(d=>d.changed),y(d=>d.jump)),0);F(I(w,y(d=>d.atBottom)),s),F(I(s,Le(50)),c);let h=S(tt);F(I(n,y(({scrollTop:d})=>d),Z(),be((d,H)=>re(g)?{direction:d.direction,prevScrollTop:H}:{direction:H<d.prevScrollTop?ct:tt,prevScrollTop:H},{direction:tt,prevScrollTop:0}),y(d=>d.direction)),h),F(I(n,Le(50),He(Pn)),h);let u=S(0);return F(I(f,O(d=>!d),He(0)),u),F(I(r,Le(100),G(f),O(([d,H])=>!!H),be(([d,H],[z])=>[H,z],[0,0]),y(([d,H])=>H-d)),u),{atBottomState:w,atBottomStateChange:c,atBottomThreshold:p,atTopStateChange:a,atTopThreshold:x,isAtBottom:s,isAtTop:l,isScrolling:f,lastJumpDueToItemResize:v,scrollDirection:h,scrollVelocity:u}},J(ae)),Tt=\"top\",St=\"bottom\",vo=\"none\";function xo(e,t,o){return typeof e==\"number\"?o===ct&&t===Tt||o===tt&&t===St?e:0:o===ct?t===Tt?e.main:e.reverse:t===St?e.main:e.reverse}function Io(e,t){var o;return typeof e==\"number\"?e:(o=e[t])!=null?o:0}var qt=j(([{deviation:e,fixedHeaderHeight:t,headerHeight:o,scrollTop:n,viewportHeight:r}])=>{let i=_(),s=S(0),l=S(0),c=S(0),a=se(I(ne(W(n),W(r),W(o),W(i,lt),W(c),W(s),W(t),W(e),W(l)),y(([p,x,f,[g,w],v,h,u,d,H])=>{let z=p-d,T=h+u,m=Math.max(f-z,0),C=vo,E=Io(H,Tt),L=Io(H,St);return g-=d,g+=f+u,w+=f+u,w-=d,g>p+T-E&&(C=ct),w<p-m+x+L&&(C=tt),C!==vo?[Math.max(z-f-xo(v,Tt,C)-E,0),z-m-u+x+xo(v,St,C)+L]:null}),O(p=>p!=null),Z(lt)),[0,0]);return{increaseViewportBy:l,listBoundary:i,overscan:c,topListHeight:s,visibleRange:a}},J(ae),{singleton:!0});function Dn(e,t,o){if(Rt(t)){let n=No(e,t);return[{index:Se(t.groupOffsetTree,n)[0],offset:0,size:0},{data:o?.[0],index:n,offset:0,size:0}]}return[{data:o?.[0],index:e,offset:0,size:0}]}var kt={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function xt(e,t,o,n,r,i){let{lastIndex:s,lastOffset:l,lastSize:c}=r,a=0,p=0;if(e.length>0){a=e[0].offset;let v=e[e.length-1];p=v.offset+v.size}let x=o-s,f=l+x*c+(x-1)*n,g=a,w=f-p;return{bottom:p,firstItemIndex:i,items:To(e,r,i),offsetBottom:w,offsetTop:a,top:g,topItems:To(t,r,i),topListHeight:t.reduce((v,h)=>h.size+v,0),totalCount:o}}function qo(e,t,o,n,r,i){let s=0;if(o.groupIndices.length>0)for(let p of o.groupIndices){if(p-s>=e)break;s++}let l=e+s,c=Kt(t,l),a=Array.from({length:l}).map((p,x)=>({data:i[x+c],index:x+c,offset:0,size:0}));return xt(a,[],l,r,o,n)}function To(e,t,o){if(e.length===0)return[];if(!Rt(t))return e.map(a=>({...a,index:a.index+o,originalIndex:a.index}));let n=e[0].index,r=e[e.length-1].index,i=[],s=bt(t.groupOffsetTree,n,r),l,c=0;for(let a of e){(!l||l.end<a.index)&&(l=s.shift(),c=t.groupIndices.indexOf(l.start));let p;a.index===l.start?p={index:c,type:\"group\"}:p={groupIndex:c,index:a.index-(c+1)+o},i.push({...p,data:a.data,offset:a.offset,originalIndex:a.index,size:a.size})}return i}var Ne=j(([{data:e,firstItemIndex:t,gap:o,sizes:n,totalCount:r},i,{listBoundary:s,topListHeight:l,visibleRange:c},{initialTopMostItemIndex:a,scrolledToInitialItem:p},{topListHeight:x},f,{didMount:g},{recalcInProgress:w}])=>{let v=S([]),h=S(0),u=_();F(i.topItemsIndexes,v);let d=se(I(ne(g,w,W(c,lt),W(r),W(n),W(a),p,W(v),W(t),W(o),e),O(([m,C,,E,,,,,,,L])=>{let B=L&&L.length!==E;return m&&!C&&!B}),y(([,,[m,C],E,L,B,A,U,$,k,K])=>{let ie=L,{offsetTree:fe,sizeTree:ve}=ie,xe=re(h);if(E===0)return{...kt,totalCount:E};if(m===0&&C===0)return xe===0?{...kt,totalCount:E}:qo(xe,B,L,$,k,K||[]);if(Y(ve))return xe>0?null:xt(Dn(Kt(B,E),ie,K),[],E,k,ie,$);let ue=[];if(U.length>0){let _e=U[0],Ce=U[U.length-1],Ee=0;for(let b of bt(ve,_e,Ce)){let N=b.value,Q=Math.max(b.start,_e),le=Math.min(b.end,Ce);for(let te=Q;te<=le;te++)ue.push({data:K?.[te],index:te,offset:Ee,size:N}),Ee+=N}}if(!A)return xt([],ue,E,k,ie,$);let ce=U.length>0?U[U.length-1]+1:0,Pe=yn(fe,m,C,ce);if(Pe.length===0)return null;let Ie=E-1,Ze=Ht([],_e=>{for(let Ce of Pe){let Ee=Ce.value,b=Ee.offset,N=Ce.start,Q=Ee.size;if(Ee.offset<m){N+=Math.floor((m-Ee.offset+k)/(Q+k));let te=N-Ce.start;b+=te*Q+te*k}N<ce&&(b+=(ce-N)*Q,N=ce);let le=Math.min(Ce.end,Ie);for(let te=N;te<=le&&!(b>=C);te++)_e.push({data:K?.[te],index:te,offset:b,size:Q}),b+=Q+k}});return xt(Ze,ue,E,k,ie,$)}),O(m=>m!==null),Z()),kt);F(I(e,O(Vt),y(m=>m?.length)),r),F(I(d,y(m=>m.topListHeight)),x),F(x,l),F(I(d,y(m=>[m.top,m.bottom])),s),F(I(d,y(m=>m.items)),u);let H=me(I(d,O(({items:m})=>m.length>0),G(r,e),O(([{items:m},C])=>m[m.length-1].originalIndex===C-1),y(([,m,C])=>[m-1,C]),Z(lt),y(([m])=>m))),z=me(I(d,Le(200),O(({items:m,topItems:C})=>m.length>0&&m[0].originalIndex===C.length),y(({items:m})=>m[0].index),Z())),T=me(I(d,O(({items:m})=>m.length>0),y(({items:m})=>{let C=0,E=m.length-1;for(;m[C].type===\"group\"&&C<E;)C++;for(;m[E].type===\"group\"&&E>C;)E--;return{endIndex:m[E].index,startIndex:m[C].index}}),Z(Do)));return{endReached:H,initialItemCount:h,itemsRendered:u,listState:d,rangeChanged:T,startReached:z,topItemsIndexes:v,...f}},J(ye,jo,qt,ut,at,dt,We,_t),{singleton:!0}),Yo=j(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:o,headerHeight:n},{listState:r}])=>{let i=_(),s=se(I(ne(o,e,n,t,r),y(([l,c,a,p,x])=>l+c+a+p+x.offsetBottom+x.bottom)),0);return F(W(s),i),{totalListHeight:s,totalListHeightChanged:i}},J(ae,Ne),{singleton:!0}),Gn=j(([{viewportHeight:e},{totalListHeight:t}])=>{let o=S(!1),n=se(I(ne(o,e,t),O(([r])=>r),y(([,r,i])=>Math.max(0,r-i)),Le(0),Z()),0);return{alignToBottom:o,paddingTopAddition:n}},J(ae,Yo),{singleton:!0});function So(e){return e?e===\"smooth\"?\"smooth\":\"auto\":!1}var Nn=(e,t)=>typeof e==\"function\"?So(e(t)):t&&So(e),_n=j(([{listRefresh:e,totalCount:t,fixedItemSize:o},{atBottomState:n,isAtBottom:r},{scrollToIndex:i},{scrolledToInitialItem:s},{didMount:l,propsReady:c},{log:a},{scrollingInProgress:p}])=>{let x=S(!1),f=_(),g=null;function w(h){D(i,{align:\"end\",behavior:h,index:\"LAST\"})}q(I(ne(I(W(t),qe(1)),l),G(W(x),r,s,p),y(([[h,u],d,H,z,T])=>{let m=u&&z,C=\"auto\";return m&&(C=Nn(d,H||T),m=m&&!!C),{followOutputBehavior:C,shouldFollow:m,totalCount:h}}),O(({shouldFollow:h})=>h)),({followOutputBehavior:h,totalCount:u})=>{g&&(g(),g=null),re(o)?requestAnimationFrame(()=>{re(a)(\"following output to \",{totalCount:u},de.DEBUG),w(h)}):g=Re(e,()=>{re(a)(\"following output to \",{totalCount:u},de.DEBUG),w(h),g=null})});function v(h){let u=Re(n,d=>{h&&!d.atBottom&&d.notAtBottomBecause===\"SIZE_INCREASED\"&&!g&&(re(a)(\"scrolling to bottom due to increased size\",{},de.DEBUG),w(\"auto\"))});setTimeout(u,100)}return q(I(ne(W(x),t,c),O(([h,,u])=>h&&u),be(({value:h},[,u])=>({refreshed:h===u,value:u}),{refreshed:!1,value:0}),O(({refreshed:h})=>h),G(x,t)),([,h])=>{re(s)&&v(h!==!1)}),q(f,()=>{v(re(x)!==!1)}),q(ne(W(x),n),([h,u])=>{h&&!u.atBottom&&u.notAtBottomBecause===\"VIEWPORT_HEIGHT_DECREASING\"&&w(\"auto\")}),{autoscrollToBottom:f,followOutput:x}},J(ye,dt,at,ut,We,Oe,ae)),jn=j(([{data:e,firstItemIndex:t,gap:o,sizes:n},{initialTopMostItemIndex:r},{initialItemCount:i,listState:s},{didMount:l}])=>(F(I(l,G(i),O(([,c])=>c!==0),G(r,n,t,o,e),y(([[,c],a,p,x,f,g=[]])=>qo(c,a,p,x,f,g))),s),{}),J(ye,ut,Ne,We),{singleton:!0}),Un=j(([{didMount:e},{scrollTo:t},{listState:o}])=>{let n=S(0);return q(I(e,G(n),O(([,r])=>r!==0),y(([,r])=>({top:r}))),r=>{Re(I(o,qe(1),O(i=>i.items.length>1)),()=>{requestAnimationFrame(()=>{D(t,r)})})}),{initialScrollTop:n}},J(We,ae,Ne),{singleton:!0}),Kn=({itemBottom:e,itemTop:t,locationParams:{align:o,behavior:n,...r},viewportBottom:i,viewportTop:s})=>t<s?{...r,align:o??\"start\",behavior:n}:e>i?{...r,align:o??\"end\",behavior:n}:null,qn=j(([{gap:e,sizes:t,totalCount:o},{fixedFooterHeight:n,fixedHeaderHeight:r,headerHeight:i,scrollingInProgress:s,scrollTop:l,viewportHeight:c},{scrollToIndex:a}])=>{let p=_();return F(I(p,G(t,c,o,i,r,n,l),G(e),y(([[x,f,g,w,v,h,u,d],H])=>{let{align:z,behavior:T,calculateViewLocation:m=Kn,done:C,...E}=x,L=_o(x,f,w-1),B=st(L,f.offsetTree,H)+v+h,A=B+Se(f.sizeTree,L)[1],U=d+h,$=d+g-u,k=m({itemBottom:A,itemTop:B,locationParams:{align:z,behavior:T,...E},viewportBottom:$,viewportTop:U});return k?C&&Re(I(s,O(K=>!K),qe(re(s)?1:2)),C):C&&C(),k}),O(x=>x!==null)),a),{scrollIntoView:p}},J(ye,ae,at,Ne,Oe),{singleton:!0}),$o=j(([{scrollVelocity:e}])=>{let t=S(!1),o=_(),n=S(!1);return F(I(e,G(n,t,o),O(([r,i])=>!!i),y(([r,i,s,l])=>{let{enter:c,exit:a}=i;if(s){if(a(r,l))return!1}else if(c(r,l))return!0;return s}),Z()),t),q(I(ne(t,e,o),G(n)),([[r,i,s],l])=>{r&&l&&l.change&&l.change(i,s)}),{isSeeking:t,scrollSeekConfiguration:n,scrollSeekRangeChanged:o,scrollVelocity:e}},J(dt),{singleton:!0}),Yt=j(([{scrollContainerState:e,scrollTo:t}])=>{let o=_(),n=_(),r=_(),i=S(!1),s=S(void 0);return F(I(ne(o,n),y(([{scrollHeight:l,scrollTop:c,viewportHeight:a},{offsetTop:p}])=>({scrollHeight:l,scrollTop:Math.max(0,c-p),viewportHeight:a}))),e),F(I(t,G(n),y(([l,{offsetTop:c}])=>({...l,top:l.top+c}))),r),{customScrollParent:s,useWindowScroll:i,windowScrollContainerState:o,windowScrollTo:r,windowViewportRect:n}},J(ae)),Yn=j(([{sizeRanges:e,sizes:t},{headerHeight:o,scrollTop:n},{initialTopMostItemIndex:r},{didMount:i},{useWindowScroll:s,windowScrollContainerState:l,windowViewportRect:c}])=>{let a=_(),p=S(void 0),x=S(null),f=S(null);return F(l,x),F(c,f),q(I(a,G(t,n,s,x,f,o)),([g,w,v,h,u,d,H])=>{let z=kn(w.sizeTree);h&&u!==null&&d!==null&&(v=u.scrollTop-d.offsetTop),v-=H,g({ranges:z,scrollTop:v})}),F(I(p,O(Vt),y($n)),r),F(I(i,G(p),O(([,g])=>g!==void 0),Z(),y(([,g])=>g.ranges)),e),{getState:a,restoreStateFrom:p}},J(ye,ae,ut,We,Yt));function $n(e){return{align:\"start\",index:0,offset:e.scrollTop}}var Xn=j(([{topItemsIndexes:e}])=>{let t=S(0);return F(I(t,O(o=>o>=0),y(o=>Array.from({length:o}).map((n,r)=>r))),e),{topItemCount:t}},J(Ne));function Xo(e){let t=!1,o;return()=>(t||(t=!0,o=e()),o)}var Zn=Xo(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),Jn=j(([{deviation:e,scrollBy:t,scrollingInProgress:o,scrollTop:n},{isAtBottom:r,isScrolling:i,lastJumpDueToItemResize:s,scrollDirection:l},{listState:c},{beforeUnshiftWith:a,gap:p,shiftWithOffset:x,sizes:f},{log:g},{recalcInProgress:w}])=>{let v=me(I(c,G(s),be(([,u,d,H],[{bottom:z,items:T,offsetBottom:m,totalCount:C},E])=>{let L=z+m,B=0;return d===C&&u.length>0&&T.length>0&&(T[0].originalIndex===0&&u[0].originalIndex===0||(B=L-H,B!==0&&(B+=E))),[B,T,C,L]},[0,[],0,0]),O(([u])=>u!==0),G(n,l,o,r,g,w),O(([,u,d,H,,,z])=>!z&&!H&&u!==0&&d===ct),y(([[u],,,,,d])=>(d(\"Upward scrolling compensation\",{amount:u},de.DEBUG),u))));function h(u){u>0?(D(t,{behavior:\"auto\",top:-u}),D(e,0)):(D(e,0),D(t,{behavior:\"auto\",top:-u}))}return q(I(v,G(e,i)),([u,d,H])=>{H&&Zn()?D(e,d-u):h(-u)}),q(I(ne(se(i,!1),e,w),O(([u,d,H])=>!u&&!H&&d!==0),y(([u,d])=>d),Le(1)),h),F(I(x,y(u=>({top:-u}))),t),q(I(a,G(f,p),y(([u,{groupIndices:d,lastSize:H,sizeTree:z},T])=>{function m(C){return C*(H+T)}if(d.length===0)return m(u);{let C=0,E=it(z,0),L=0,B=0;for(;L<u;){L++,C+=E;let A=d.length===B+1?1/0:d[B+1]-d[B]-1;L+A>u&&(C-=E,A=u-L+1),L+=A,C+=m(A),B++}return C}})),u=>{D(e,u),requestAnimationFrame(()=>{D(t,{top:u}),requestAnimationFrame(()=>{D(e,0),D(w,!1)})})}),{deviation:e}},J(ae,dt,Ne,ye,Oe,_t)),Qn=j(([e,t,o,n,r,i,s,l,c,a])=>({...e,...t,...o,...n,...r,...i,...s,...l,...c,...a}),J(qt,jn,We,$o,Yo,Un,Gn,Yt,qn,Oe)),Zo=j(([{data:e,defaultItemSize:t,firstItemIndex:o,fixedItemSize:n,gap:r,groupIndices:i,itemSize:s,sizeRanges:l,sizes:c,statefulTotalCount:a,totalCount:p,trackItemSizes:x},{initialItemFinalLocationReached:f,initialTopMostItemIndex:g,scrolledToInitialItem:w},v,h,u,{listState:d,topItemsIndexes:H,...z},{scrollToIndex:T},m,{topItemCount:C},{groupCounts:E},L])=>(F(z.rangeChanged,L.scrollSeekRangeChanged),F(I(L.windowViewportRect,y(B=>B.visibleHeight)),v.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:o,fixedItemHeight:n,gap:r,groupCounts:E,initialItemFinalLocationReached:f,initialTopMostItemIndex:g,scrolledToInitialItem:w,sizeRanges:l,topItemCount:C,topItemsIndexes:H,totalCount:p,...u,groupIndices:i,itemSize:s,listState:d,scrollToIndex:T,statefulTotalCount:a,trackItemSizes:x,...z,...L,...v,sizes:c,...h}),J(ye,ut,ae,Yn,_n,Ne,at,Jn,Xn,jo,Qn));function er(e,t){let o={},n={},r=0,i=e.length;for(;r<i;)n[e[r]]=1,r+=1;for(let s in t)Object.hasOwn(n,s)||(o[s]=t[s]);return o}var pt=typeof document<\"u\"?R.useLayoutEffect:R.useEffect;function $t(e,t,o){let n=Object.keys(t.required||{}),r=Object.keys(t.optional||{}),i=Object.keys(t.methods||{}),s=Object.keys(t.events||{}),l=R.createContext({});function c(h,u){h.propsReady&&D(h.propsReady,!1);for(let d of n){let H=h[t.required[d]];D(H,u[d])}for(let d of r)if(d in u){let H=h[t.optional[d]];D(H,u[d])}h.propsReady&&D(h.propsReady,!0)}function a(h){return i.reduce((u,d)=>(u[d]=H=>{let z=h[t.methods[d]];D(z,H)},u),{})}function p(h){return s.reduce((u,d)=>(u[d]=gn(h[t.events[d]]),u),{})}let x=R.forwardRef((h,u)=>{let{children:d,...H}=h,[z]=R.useState(()=>Ht(xn(e),C=>{c(C,H)})),[T]=R.useState(uo(p,z));pt(()=>{for(let C of s)C in H&&q(T[C],H[C]);return()=>{Object.values(T).map(Dt)}},[H,T,z]),pt(()=>{c(z,H)}),R.useImperativeHandle(u,ao(a(z)));let m=o;return M(l.Provider,{value:z,children:o?M(m,{...er([...n,...r,...s],H),children:d}):d})}),f=h=>{let u=R.useContext(l);return R.useCallback(d=>{D(u[h],d)},[u,h])},g=h=>{let u=R.useContext(l)[h],d=R.useCallback(H=>q(u,H),[u]);return R.useSyncExternalStore(d,()=>re(u),()=>re(u))},w=h=>{let u=R.useContext(l)[h],[d,H]=R.useState(uo(re,u));return pt(()=>q(u,z=>{z!==d&&H(ao(z))}),[u,d]),d},v=R.version.startsWith(\"18\")?g:w;return{Component:x,useEmitter:(h,u)=>{let d=R.useContext(l)[h];pt(()=>q(d,u),[u,d])},useEmitterValue:v,usePublisher:f}}var zt=R.createContext(void 0),Jo=R.createContext(void 0),Qo=typeof document<\"u\"?R.useLayoutEffect:R.useEffect;function Bt(e){return\"self\"in e}function tr(e){return\"body\"in e}function en(e,t,o,n=$e,r,i){let s=R.useRef(null),l=R.useRef(null),c=R.useRef(null),a=R.useCallback(f=>{let g,w,v,h=f.target;if(tr(h)||Bt(h)){let d=Bt(h)?h:h.defaultView;v=i?d.scrollX:d.scrollY,g=i?d.document.documentElement.scrollWidth:d.document.documentElement.scrollHeight,w=i?d.innerWidth:d.innerHeight}else v=i?h.scrollLeft:h.scrollTop,g=i?h.scrollWidth:h.scrollHeight,w=i?h.offsetWidth:h.offsetHeight;let u=()=>{e({scrollHeight:g,scrollTop:Math.max(v,0),viewportHeight:w})};f.suppressFlushSync?u():un.flushSync(u),l.current!==null&&(v===l.current||v<=0||v===g-w)&&(l.current=null,t(!0),c.current&&(clearTimeout(c.current),c.current=null))},[e,t,i]);R.useEffect(()=>{let f=r||s.current;return n(r||s.current),a({suppressFlushSync:!0,target:f}),f.addEventListener(\"scroll\",a,{passive:!0}),()=>{n(null),f.removeEventListener(\"scroll\",a)}},[s,a,o,n,r]);function p(f){let g=s.current;if(!g||(i?\"offsetWidth\"in g&&g.offsetWidth===0:\"offsetHeight\"in g&&g.offsetHeight===0))return;let w=f.behavior===\"smooth\",v,h,u;Bt(g)?(h=Math.max(we(g.document.documentElement,i?\"width\":\"height\"),i?g.document.documentElement.scrollWidth:g.document.documentElement.scrollHeight),v=i?g.innerWidth:g.innerHeight,u=i?window.scrollX:window.scrollY):(h=g[i?\"scrollWidth\":\"scrollHeight\"],v=we(g,i?\"width\":\"height\"),u=g[i?\"scrollLeft\":\"scrollTop\"]);let d=h-v;if(f.top=Math.ceil(Math.max(Math.min(d,f.top),0)),Ko(v,h)||f.top===u){e({scrollHeight:h,scrollTop:u,viewportHeight:v}),w&&t(!0);return}w?(l.current=f.top,c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,l.current=null,t(!0)},1e3)):l.current=null,i&&(f={behavior:f.behavior,left:f.top}),g.scrollTo(f)}function x(f){i&&(f={behavior:f.behavior,left:f.top}),s.current.scrollBy(f)}return{scrollByCallback:x,scrollerRef:s,scrollToCallback:p}}var Ft=\"-webkit-sticky\",wo=\"sticky\",Xt=Xo(()=>{if(typeof document>\"u\")return wo;let e=document.createElement(\"div\");return e.style.position=Ft,e.style.position===Ft?Ft:wo});function Zt(e){return e}var or=j(()=>{let e=S(c=>`Item ${c}`),t=S(null),o=S(c=>`Group ${c}`),n=S({}),r=S(Zt),i=S(\"div\"),s=S($e),l=(c,a=null)=>se(I(n,y(p=>p[c]),Z()),a);return{components:n,computeItemKey:r,context:t,EmptyPlaceholder:l(\"EmptyPlaceholder\"),FooterComponent:l(\"Footer\"),GroupComponent:l(\"Group\",\"div\"),groupContent:o,HeaderComponent:l(\"Header\"),HeaderFooterTag:i,ItemComponent:l(\"Item\",\"div\"),itemContent:e,ListComponent:l(\"List\",\"div\"),ScrollerComponent:l(\"Scroller\",\"div\"),scrollerRef:s,ScrollSeekPlaceholder:l(\"ScrollSeekPlaceholder\"),TopItemListComponent:l(\"TopItemList\")}}),nr=j(([e,t])=>({...e,...t}),J(Zo,or)),rr=({height:e})=>M(\"div\",{style:{height:e}}),ir={overflowAnchor:\"none\",position:Xt(),zIndex:1},tn={overflowAnchor:\"none\"},lr={...tn,display:\"inline-block\",height:\"100%\"},Co=R.memo(function({showTopList:e=!1}){let t=P(\"listState\"),o=pe(\"sizeRanges\"),n=P(\"useWindowScroll\"),r=P(\"customScrollParent\"),i=pe(\"windowScrollContainerState\"),s=pe(\"scrollContainerState\"),l=r||n?i:s,c=P(\"itemContent\"),a=P(\"context\"),p=P(\"groupContent\"),x=P(\"trackItemSizes\"),f=P(\"itemSize\"),g=P(\"log\"),w=pe(\"gap\"),v=P(\"horizontalDirection\"),{callbackRef:h}=Mo(o,f,x,e?$e:l,g,w,r,v,P(\"skipAnimationFrameInResizeObserver\")),[u,d]=R.useState(0);eo(\"deviation\",k=>{u!==k&&d(k)});let H=P(\"EmptyPlaceholder\"),z=P(\"ScrollSeekPlaceholder\")||rr,T=P(\"ListComponent\"),m=P(\"ItemComponent\"),C=P(\"GroupComponent\"),E=P(\"computeItemKey\"),L=P(\"isSeeking\"),B=P(\"groupIndices\").length>0,A=P(\"alignToBottom\"),U=P(\"initialItemFinalLocationReached\"),$=e?{}:{boxSizing:\"border-box\",...v?{display:\"inline-block\",height:\"100%\",marginLeft:u!==0?u:A?\"auto\":0,paddingLeft:t.offsetTop,paddingRight:t.offsetBottom,whiteSpace:\"nowrap\"}:{marginTop:u!==0?u:A?\"auto\":0,paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},...U?{}:{visibility:\"hidden\"}};return!e&&t.totalCount===0&&H?M(H,{...X(H,a)}):M(T,{...X(T,a),\"data-testid\":e?\"virtuoso-top-item-list\":\"virtuoso-item-list\",ref:h,style:$,children:(e?t.topItems:t.items).map(k=>{let K=k.originalIndex,ie=E(K+t.firstItemIndex,k.data,a);return L?Ge(z,{...X(z,a),height:k.size,index:k.index,key:ie,type:k.type||\"item\",...k.type===\"group\"?{}:{groupIndex:k.groupIndex}}):k.type===\"group\"?Ge(C,{...X(C,a),\"data-index\":K,\"data-item-index\":k.index,\"data-known-size\":k.size,key:ie,style:ir},p(k.index,a)):Ge(m,{...X(m,a),...on(m,k.data),\"data-index\":K,\"data-item-group-index\":k.groupIndex,\"data-item-index\":k.index,\"data-known-size\":k.size,key:ie,style:v?lr:tn},B?c(k.index,k.groupIndex,k.data,a):c(k.index,k.data,a))})})}),sr={height:\"100%\",outline:\"none\",overflowY:\"auto\",position:\"relative\",WebkitOverflowScrolling:\"touch\"},cr={outline:\"none\",overflowX:\"auto\",position:\"relative\"},Xe=e=>({height:\"100%\",position:\"absolute\",top:0,width:\"100%\",...e?{display:\"flex\",flexDirection:\"column\"}:{}}),ar={position:Xt(),top:0,width:\"100%\",zIndex:1};function X(e,t){if(typeof e!=\"string\")return{context:t}}function on(e,t){return{item:typeof e==\"string\"?void 0:t}}var ur=R.memo(function(){let e=P(\"HeaderComponent\"),t=pe(\"headerHeight\"),o=P(\"HeaderFooterTag\"),n=ze(R.useMemo(()=>i=>{t(we(i,\"height\"))},[t]),!0,P(\"skipAnimationFrameInResizeObserver\")),r=P(\"context\");return e?M(o,{ref:n,children:M(e,{...X(e,r)})}):null}),dr=R.memo(function(){let e=P(\"FooterComponent\"),t=pe(\"footerHeight\"),o=P(\"HeaderFooterTag\"),n=ze(R.useMemo(()=>i=>{t(we(i,\"height\"))},[t]),!0,P(\"skipAnimationFrameInResizeObserver\")),r=P(\"context\");return e?M(o,{ref:n,children:M(e,{...X(e,r)})}):null});function Jt({useEmitter:e,useEmitterValue:t,usePublisher:o}){return R.memo(function({children:n,style:r,...i}){let s=o(\"scrollContainerState\"),l=t(\"ScrollerComponent\"),c=o(\"smoothScrollTargetReached\"),a=t(\"scrollerRef\"),p=t(\"context\"),x=t(\"horizontalDirection\")||!1,{scrollByCallback:f,scrollerRef:g,scrollToCallback:w}=en(s,c,l,a,void 0,x);return e(\"scrollTo\",w),e(\"scrollBy\",f),M(l,{\"data-testid\":\"virtuoso-scroller\",\"data-virtuoso-scroller\":!0,ref:g,style:{...x?cr:sr,...r},tabIndex:0,...i,...X(l,p),children:n})})}function Qt({useEmitter:e,useEmitterValue:t,usePublisher:o}){return R.memo(function({children:n,style:r,...i}){let s=o(\"windowScrollContainerState\"),l=t(\"ScrollerComponent\"),c=o(\"smoothScrollTargetReached\"),a=t(\"totalListHeight\"),p=t(\"deviation\"),x=t(\"customScrollParent\"),f=t(\"context\"),g=R.useRef(null),w=t(\"scrollerRef\"),{scrollByCallback:v,scrollerRef:h,scrollToCallback:u}=en(s,c,l,w,x);return Qo(()=>{var d;return h.current=x||((d=g.current)==null?void 0:d.ownerDocument.defaultView),()=>{h.current=null}},[h,x]),e(\"windowScrollTo\",u),e(\"scrollBy\",v),M(l,{ref:g,\"data-virtuoso-scroller\":!0,style:{position:\"relative\",...r,...a!==0?{height:a+p}:{}},...i,...X(l,f),children:n})})}var hr=({children:e})=>{let t=R.useContext(zt),o=pe(\"viewportHeight\"),n=pe(\"fixedItemHeight\"),r=P(\"alignToBottom\"),i=P(\"horizontalDirection\"),s=R.useMemo(()=>nt(o,c=>we(c,i?\"width\":\"height\")),[o,i]),l=ze(s,!0,P(\"skipAnimationFrameInResizeObserver\"));return R.useEffect(()=>{t&&(o(t.viewportHeight),n(t.itemHeight))},[t,o,n]),M(\"div\",{\"data-viewport-type\":\"element\",ref:l,style:Xe(r),children:e})},mr=({children:e})=>{let t=R.useContext(zt),o=pe(\"windowViewportRect\"),n=pe(\"fixedItemHeight\"),r=P(\"customScrollParent\"),i=Nt(o,r,P(\"skipAnimationFrameInResizeObserver\")),s=P(\"alignToBottom\");return R.useEffect(()=>{t&&(n(t.itemHeight),o({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,o,n]),M(\"div\",{\"data-viewport-type\":\"window\",ref:i,style:Xe(s),children:e})},fr=({children:e})=>{let t=P(\"TopItemListComponent\")||\"div\",o=P(\"headerHeight\"),n={...ar,marginTop:`${o}px`},r=P(\"context\");return M(t,{style:n,...X(t,r),children:e})},pr=R.memo(function(e){let t=P(\"useWindowScroll\"),o=P(\"topItemsIndexes\").length>0,n=P(\"customScrollParent\"),r=P(\"context\"),i=n||t?vr:gr,s=n||t?mr:hr;return Fe(i,{...e,...X(i,r),children:[o&&M(fr,{children:M(Co,{showTopList:!0})}),Fe(s,{children:[M(ur,{}),M(Co,{}),M(dr,{})]})]})}),{Component:nn,useEmitter:eo,useEmitterValue:P,usePublisher:pe}=$t(nr,{required:{},optional:{restoreStateFrom:\"restoreStateFrom\",context:\"context\",followOutput:\"followOutput\",itemContent:\"itemContent\",groupContent:\"groupContent\",overscan:\"overscan\",increaseViewportBy:\"increaseViewportBy\",totalCount:\"totalCount\",groupCounts:\"groupCounts\",topItemCount:\"topItemCount\",firstItemIndex:\"firstItemIndex\",initialTopMostItemIndex:\"initialTopMostItemIndex\",components:\"components\",atBottomThreshold:\"atBottomThreshold\",atTopThreshold:\"atTopThreshold\",computeItemKey:\"computeItemKey\",defaultItemHeight:\"defaultItemHeight\",fixedItemHeight:\"fixedItemHeight\",itemSize:\"itemSize\",scrollSeekConfiguration:\"scrollSeekConfiguration\",headerFooterTag:\"HeaderFooterTag\",data:\"data\",initialItemCount:\"initialItemCount\",initialScrollTop:\"initialScrollTop\",alignToBottom:\"alignToBottom\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",logLevel:\"logLevel\",horizontalDirection:\"horizontalDirection\",skipAnimationFrameInResizeObserver:\"skipAnimationFrameInResizeObserver\"},methods:{scrollToIndex:\"scrollToIndex\",scrollIntoView:\"scrollIntoView\",scrollTo:\"scrollTo\",scrollBy:\"scrollBy\",autoscrollToBottom:\"autoscrollToBottom\",getState:\"getState\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\",totalListHeightChanged:\"totalListHeightChanged\",itemsRendered:\"itemsRendered\",groupIndices:\"groupIndices\"}},pr),gr=Jt({useEmitter:eo,useEmitterValue:P,usePublisher:pe}),vr=Qt({useEmitter:eo,useEmitterValue:P,usePublisher:pe}),Yr=nn,$r=nn,xr=j(()=>{let e=S(a=>Fe(\"td\",{children:[\"Item $\",a]})),t=S(null),o=S(a=>Fe(\"td\",{colSpan:1e3,children:[\"Group \",a]})),n=S(null),r=S(null),i=S({}),s=S(Zt),l=S($e),c=(a,p=null)=>se(I(i,y(x=>x[a]),Z()),p);return{components:i,computeItemKey:s,context:t,EmptyPlaceholder:c(\"EmptyPlaceholder\"),FillerRow:c(\"FillerRow\"),fixedFooterContent:r,fixedHeaderContent:n,itemContent:e,groupContent:o,ScrollerComponent:c(\"Scroller\",\"div\"),scrollerRef:l,ScrollSeekPlaceholder:c(\"ScrollSeekPlaceholder\"),TableBodyComponent:c(\"TableBody\",\"tbody\"),TableComponent:c(\"Table\",\"table\"),TableFooterComponent:c(\"TableFoot\",\"tfoot\"),TableHeadComponent:c(\"TableHead\",\"thead\"),TableRowComponent:c(\"TableRow\",\"tr\"),GroupComponent:c(\"Group\",\"tr\")}}),Ir=j(([e,t])=>({...e,...t}),J(Zo,xr)),Tr=({height:e})=>M(\"tr\",{children:M(\"td\",{style:{height:e}})}),Sr=({height:e})=>M(\"tr\",{children:M(\"td\",{style:{border:0,height:e,padding:0}})}),wr={overflowAnchor:\"none\"},Ho={position:Xt(),zIndex:2,overflowAnchor:\"none\"},bo=R.memo(function({showTopList:e=!1}){let t=V(\"listState\"),o=V(\"computeItemKey\"),n=V(\"firstItemIndex\"),r=V(\"context\"),i=V(\"isSeeking\"),s=V(\"fixedHeaderHeight\"),l=V(\"groupIndices\").length>0,c=V(\"itemContent\"),a=V(\"groupContent\"),p=V(\"ScrollSeekPlaceholder\")||Tr,x=V(\"GroupComponent\"),f=V(\"TableRowComponent\"),g=(e?t.topItems:[]).reduce((v,h,u)=>(u===0?v.push(h.size):v.push(v[u-1]+h.size),v),[]),w=(e?t.topItems:t.items).map(v=>{let h=v.originalIndex,u=o(h+n,v.data,r),d=e?h===0?0:g[h-1]:0;return i?Ge(p,{...X(p,r),height:v.size,index:v.index,key:u,type:v.type||\"item\"}):v.type===\"group\"?Ge(x,{...X(x,r),\"data-index\":h,\"data-item-index\":v.index,\"data-known-size\":v.size,key:u,style:{...Ho,top:s}},a(v.index,r)):Ge(f,{...X(f,r),...on(f,v.data),\"data-index\":h,\"data-item-index\":v.index,\"data-known-size\":v.size,\"data-item-group-index\":v.groupIndex,key:u,style:e?{...Ho,top:s+d}:wr},l?c(v.index,v.groupIndex,v.data,r):c(v.index,v.data,r))});return M(co,{children:w})}),Cr=R.memo(function(){let e=V(\"listState\"),t=V(\"topItemsIndexes\").length>0,o=Te(\"sizeRanges\"),n=V(\"useWindowScroll\"),r=V(\"customScrollParent\"),i=Te(\"windowScrollContainerState\"),s=Te(\"scrollContainerState\"),l=r||n?i:s,c=V(\"trackItemSizes\"),a=V(\"itemSize\"),p=V(\"log\"),{callbackRef:x,ref:f}=Mo(o,a,c,l,p,void 0,r,!1,V(\"skipAnimationFrameInResizeObserver\")),[g,w]=R.useState(0);to(\"deviation\",B=>{g!==B&&(f.current.style.marginTop=`${B}px`,w(B))});let v=V(\"EmptyPlaceholder\"),h=V(\"FillerRow\")||Sr,u=V(\"TableBodyComponent\"),d=V(\"paddingTopAddition\"),H=V(\"statefulTotalCount\"),z=V(\"context\");if(H===0&&v)return M(v,{...X(v,z)});let T=(t?e.topItems:[]).reduce((B,A)=>B+A.size,0),m=e.offsetTop+d+g-T,C=e.offsetBottom,E=m>0?M(h,{context:z,height:m},\"padding-top\"):null,L=C>0?M(h,{context:z,height:C},\"padding-bottom\"):null;return Fe(u,{\"data-testid\":\"virtuoso-item-list\",ref:x,...X(u,z),children:[E,t&&M(bo,{showTopList:!0}),M(bo,{}),L]})}),Hr=({children:e})=>{let t=R.useContext(zt),o=Te(\"viewportHeight\"),n=Te(\"fixedItemHeight\"),r=ze(R.useMemo(()=>nt(o,i=>we(i,\"height\")),[o]),!0,V(\"skipAnimationFrameInResizeObserver\"));return R.useEffect(()=>{t&&(o(t.viewportHeight),n(t.itemHeight))},[t,o,n]),M(\"div\",{\"data-viewport-type\":\"element\",ref:r,style:Xe(!1),children:e})},br=({children:e})=>{let t=R.useContext(zt),o=Te(\"windowViewportRect\"),n=Te(\"fixedItemHeight\"),r=V(\"customScrollParent\"),i=Nt(o,r,V(\"skipAnimationFrameInResizeObserver\"));return R.useEffect(()=>{t&&(n(t.itemHeight),o({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,o,n]),M(\"div\",{\"data-viewport-type\":\"window\",ref:i,style:Xe(!1),children:e})},Rr=R.memo(function(e){let t=V(\"useWindowScroll\"),o=V(\"customScrollParent\"),n=Te(\"fixedHeaderHeight\"),r=Te(\"fixedFooterHeight\"),i=V(\"fixedHeaderContent\"),s=V(\"fixedFooterContent\"),l=V(\"context\"),c=ze(R.useMemo(()=>nt(n,u=>we(u,\"height\")),[n]),!0,V(\"skipAnimationFrameInResizeObserver\")),a=ze(R.useMemo(()=>nt(r,u=>we(u,\"height\")),[r]),!0,V(\"skipAnimationFrameInResizeObserver\")),p=o||t?yr:zr,x=o||t?br:Hr,f=V(\"TableComponent\"),g=V(\"TableHeadComponent\"),w=V(\"TableFooterComponent\"),v=i?M(g,{ref:c,style:{position:\"sticky\",top:0,zIndex:2},...X(g,l),children:i()},\"TableHead\"):null,h=s?M(w,{ref:a,style:{bottom:0,position:\"sticky\",zIndex:1},...X(w,l),children:s()},\"TableFoot\"):null;return M(p,{...e,...X(p,l),children:M(x,{children:Fe(f,{style:{borderSpacing:0,overflowAnchor:\"none\"},...X(f,l),children:[v,M(Cr,{},\"TableBody\"),h]})})})}),{Component:rn,useEmitter:to,useEmitterValue:V,usePublisher:Te}=$t(Ir,{required:{},optional:{restoreStateFrom:\"restoreStateFrom\",context:\"context\",followOutput:\"followOutput\",firstItemIndex:\"firstItemIndex\",itemContent:\"itemContent\",groupContent:\"groupContent\",fixedHeaderContent:\"fixedHeaderContent\",fixedFooterContent:\"fixedFooterContent\",overscan:\"overscan\",increaseViewportBy:\"increaseViewportBy\",totalCount:\"totalCount\",topItemCount:\"topItemCount\",initialTopMostItemIndex:\"initialTopMostItemIndex\",components:\"components\",groupCounts:\"groupCounts\",atBottomThreshold:\"atBottomThreshold\",atTopThreshold:\"atTopThreshold\",computeItemKey:\"computeItemKey\",defaultItemHeight:\"defaultItemHeight\",fixedItemHeight:\"fixedItemHeight\",itemSize:\"itemSize\",scrollSeekConfiguration:\"scrollSeekConfiguration\",data:\"data\",initialItemCount:\"initialItemCount\",initialScrollTop:\"initialScrollTop\",alignToBottom:\"alignToBottom\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",logLevel:\"logLevel\"},methods:{scrollToIndex:\"scrollToIndex\",scrollIntoView:\"scrollIntoView\",scrollTo:\"scrollTo\",scrollBy:\"scrollBy\",getState:\"getState\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\",totalListHeightChanged:\"totalListHeightChanged\",itemsRendered:\"itemsRendered\",groupIndices:\"groupIndices\"}},Rr),zr=Jt({useEmitter:to,useEmitterValue:V,usePublisher:Te}),yr=Qt({useEmitter:to,useEmitterValue:V,usePublisher:Te}),Xr=rn,Zr=rn,Ro={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},Er={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:zo,floor:wt,max:ot,min:Lt,round:yo}=Math;function Eo(e,t,o){return Array.from({length:t-e+1}).map((n,r)=>({data:o===null?null:o[r+e],index:r+e}))}function kr(e){return{...Er,items:e}}function gt(e,t){return e&&e.width===t.width&&e.height===t.height}function Br(e,t){return e&&e.column===t.column&&e.row===t.row}var Fr=j(([{increaseViewportBy:e,listBoundary:t,overscan:o,visibleRange:n},{footerHeight:r,headerHeight:i,scrollBy:s,scrollContainerState:l,scrollTo:c,scrollTop:a,smoothScrollTargetReached:p,viewportHeight:x},f,g,{didMount:w,propsReady:v},{customScrollParent:h,useWindowScroll:u,windowScrollContainerState:d,windowScrollTo:H,windowViewportRect:z},T])=>{let m=S(0),C=S(0),E=S(Ro),L=S({height:0,width:0}),B=S({height:0,width:0}),A=_(),U=_(),$=S(0),k=S(null),K=S({column:0,row:0}),ie=_(),fe=_(),ve=S(!1),xe=S(0),ue=S(!0),ce=S(!1),Pe=S(!1);q(I(w,G(xe),O(([b,N])=>!!N)),()=>{D(ue,!1)}),q(I(ne(w,ue,B,L,xe,ce),O(([b,N,Q,le,,te])=>b&&!N&&Q.height!==0&&le.height!==0&&!te)),([,,,,b])=>{D(ce,!0),Ut(1,()=>{D(A,b)}),Re(I(a),()=>{D(t,[0,0]),D(ue,!0)})}),F(I(fe,O(b=>b!=null&&b.scrollTop>0),He(0)),C),q(I(w,G(fe),O(([,b])=>b!=null)),([,b])=>{b&&(D(L,b.viewport),D(B,b.item),D(K,b.gap),b.scrollTop>0&&(D(ve,!0),Re(I(a,qe(1)),N=>{D(ve,!1)}),D(c,{top:b.scrollTop})))}),F(I(L,y(({height:b})=>b)),x),F(I(ne(W(L,gt),W(B,gt),W(K,(b,N)=>b&&b.column===N.column&&b.row===N.row),W(a)),y(([b,N,Q,le])=>({gap:Q,item:N,scrollTop:le,viewport:b}))),ie),F(I(ne(W(m),n,W(K,Br),W(B,gt),W(L,gt),W(k),W(C),W(ve),W(ue),W(xe)),O(([,,,,,,,b])=>!b),y(([b,[N,Q],le,te,Ae,Je,je,,ht,ke])=>{let{column:Be,row:Qe}=le,{height:mt,width:yt}=te,{width:oo}=Ae;if(je===0&&(b===0||oo===0))return Ro;if(yt===0){let so=Kt(ke,b),an=so+Math.max(je-1,0);return kr(Eo(so,an,Je))}let ft=ln(oo,yt,Be),Ue,Ve;ht?N===0&&Q===0&&je>0?(Ue=0,Ve=je-1):(Ue=ft*wt((N+Qe)/(mt+Qe)),Ve=ft*zo((Q+Qe)/(mt+Qe))-1,Ve=Lt(b-1,ot(Ve,ft-1)),Ue=Lt(Ve,ot(0,Ue))):(Ue=0,Ve=-1);let no=Eo(Ue,Ve,Je),{bottom:ro,top:io}=ko(Ae,le,te,no),lo=zo(b/ft),cn=lo*mt+(lo-1)*Qe-ro;return{bottom:ro,itemHeight:mt,items:no,itemWidth:yt,offsetBottom:cn,offsetTop:io,top:io}})),E),F(I(k,O(b=>b!==null),y(b=>b.length)),m),F(I(ne(L,B,E,K),O(([b,N,{items:Q}])=>Q.length>0&&N.height!==0&&b.height!==0),y(([b,N,{items:Q},le])=>{let{bottom:te,top:Ae}=ko(b,le,N,Q);return[Ae,te]}),Z(lt)),t);let Ie=S(!1);F(I(a,G(Ie),y(([b,N])=>N||b!==0)),Ie);let Ze=me(I(ne(E,m),O(([{items:b}])=>b.length>0),G(Ie),O(([[b,N],Q])=>{let le=b.items[b.items.length-1].index===N-1;return(Q||b.bottom>0&&b.itemHeight>0&&b.offsetBottom===0&&b.items.length===N)&&le}),y(([[,b]])=>b-1),Z())),_e=me(I(W(E),O(({items:b})=>b.length>0&&b[0].index===0),He(0),Z())),Ce=me(I(W(E),G(ve),O(([{items:b},N])=>b.length>0&&!N),y(([{items:b}])=>({endIndex:b[b.length-1].index,startIndex:b[0].index})),Z(Do),Le(0)));F(Ce,g.scrollSeekRangeChanged),F(I(A,G(L,B,m,K),y(([b,N,Q,le,te])=>{let Ae=Uo(b),{align:Je,behavior:je,offset:ht}=Ae,ke=Ae.index;ke===\"LAST\"&&(ke=le-1),ke=ot(0,ke,Lt(le-1,ke));let Be=At(N,te,Q,ke);return Je===\"end\"?Be=yo(Be-N.height+Q.height):Je===\"center\"&&(Be=yo(Be-N.height/2+Q.height/2)),ht&&(Be+=ht),{behavior:je,top:Be}})),c);let Ee=se(I(E,y(b=>b.offsetBottom+b.bottom)),0);return F(I(z,y(b=>({height:b.visibleHeight,width:b.visibleWidth}))),L),{customScrollParent:h,data:k,deviation:$,footerHeight:r,gap:K,headerHeight:i,increaseViewportBy:e,initialItemCount:C,itemDimensions:B,overscan:o,restoreStateFrom:fe,scrollBy:s,scrollContainerState:l,scrollHeight:U,scrollTo:c,scrollToIndex:A,scrollTop:a,smoothScrollTargetReached:p,totalCount:m,useWindowScroll:u,viewportDimensions:L,windowScrollContainerState:d,windowScrollTo:H,windowViewportRect:z,...g,gridState:E,horizontalDirection:Pe,initialTopMostItemIndex:xe,totalListHeight:Ee,...f,endReached:Ze,propsReady:v,rangeChanged:Ce,startReached:_e,stateChanged:ie,stateRestoreInProgress:ve,...T}},J(qt,ae,dt,$o,We,Yt,Oe));function ln(e,t,o){return ot(1,wt((e+o)/(wt(t)+o)))}function ko(e,t,o,n){let{height:r}=o;if(r===void 0||n.length===0)return{bottom:0,top:0};let i=At(e,t,o,n[0].index);return{bottom:At(e,t,o,n[n.length-1].index)+r,top:i}}function At(e,t,o,n){let r=ln(e.width,o.width,t.column),i=wt(n/r),s=i*o.height+ot(0,i-1)*t.row;return s>0?s+t.row:s}var Lr=j(()=>{let e=S(x=>`Item ${x}`),t=S({}),o=S(null),n=S(\"virtuoso-grid-item\"),r=S(\"virtuoso-grid-list\"),i=S(Zt),s=S(\"div\"),l=S($e),c=(x,f=null)=>se(I(t,y(g=>g[x]),Z()),f),a=S(!1),p=S(!1);return F(W(p),a),{components:t,computeItemKey:i,context:o,FooterComponent:c(\"Footer\"),HeaderComponent:c(\"Header\"),headerFooterTag:s,itemClassName:n,ItemComponent:c(\"Item\",\"div\"),itemContent:e,listClassName:r,ListComponent:c(\"List\",\"div\"),readyStateChanged:a,reportReadyState:p,ScrollerComponent:c(\"Scroller\",\"div\"),scrollerRef:l,ScrollSeekPlaceholder:c(\"ScrollSeekPlaceholder\",\"div\")}}),Mr=j(([e,t])=>({...e,...t}),J(Fr,Lr)),Or=R.memo(function(){let e=ee(\"gridState\"),t=ee(\"listClassName\"),o=ee(\"itemClassName\"),n=ee(\"itemContent\"),r=ee(\"computeItemKey\"),i=ee(\"isSeeking\"),s=ge(\"scrollHeight\"),l=ee(\"ItemComponent\"),c=ee(\"ListComponent\"),a=ee(\"ScrollSeekPlaceholder\"),p=ee(\"context\"),x=ge(\"itemDimensions\"),f=ge(\"gap\"),g=ee(\"log\"),w=ee(\"stateRestoreInProgress\"),v=ge(\"reportReadyState\"),h=ze(R.useMemo(()=>u=>{let d=u.parentElement.parentElement.scrollHeight;s(d);let H=u.firstChild;if(H){let{height:z,width:T}=H.getBoundingClientRect();x({height:z,width:T})}f({column:Bo(\"column-gap\",getComputedStyle(u).columnGap,g),row:Bo(\"row-gap\",getComputedStyle(u).rowGap,g)})},[s,x,f,g]),!0,!1);return Qo(()=>{e.itemHeight>0&&e.itemWidth>0&&v(!0)},[e]),w?null:M(c,{className:t,ref:h,...X(c,p),\"data-testid\":\"virtuoso-item-list\",style:{paddingBottom:e.offsetBottom,paddingTop:e.offsetTop},children:e.items.map(u=>{let d=r(u.index,u.data,p);return i?M(a,{...X(a,p),height:e.itemHeight,index:u.index,width:e.itemWidth},d):Ge(l,{...X(l,p),className:o,\"data-index\":u.index,key:d},n(u.index,u.data,p))})})}),Wr=R.memo(function(){let e=ee(\"HeaderComponent\"),t=ge(\"headerHeight\"),o=ee(\"headerFooterTag\"),n=ze(R.useMemo(()=>i=>{t(we(i,\"height\"))},[t]),!0,!1),r=ee(\"context\");return e?M(o,{ref:n,children:M(e,{...X(e,r)})}):null}),Pr=R.memo(function(){let e=ee(\"FooterComponent\"),t=ge(\"footerHeight\"),o=ee(\"headerFooterTag\"),n=ze(R.useMemo(()=>i=>{t(we(i,\"height\"))},[t]),!0,!1),r=ee(\"context\");return e?M(o,{ref:n,children:M(e,{...X(e,r)})}):null}),Ar=({children:e})=>{let t=R.useContext(Jo),o=ge(\"itemDimensions\"),n=ge(\"viewportDimensions\"),r=ze(R.useMemo(()=>i=>{n(i.getBoundingClientRect())},[n]),!0,!1);return R.useEffect(()=>{t&&(n({height:t.viewportHeight,width:t.viewportWidth}),o({height:t.itemHeight,width:t.itemWidth}))},[t,n,o]),M(\"div\",{ref:r,style:Xe(!1),children:e})},Vr=({children:e})=>{let t=R.useContext(Jo),o=ge(\"windowViewportRect\"),n=ge(\"itemDimensions\"),r=ee(\"customScrollParent\"),i=Nt(o,r,!1);return R.useEffect(()=>{t&&(n({height:t.itemHeight,width:t.itemWidth}),o({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,o,n]),M(\"div\",{ref:i,style:Xe(!1),children:e})},Dr=R.memo(function({...e}){let t=ee(\"useWindowScroll\"),o=ee(\"customScrollParent\"),n=o||t?_r:Nr,r=o||t?Vr:Ar,i=ee(\"context\");return M(n,{...e,...X(n,i),children:Fe(r,{children:[M(Wr,{}),M(Or,{}),M(Pr,{})]})})}),{Component:Gr,useEmitter:sn,useEmitterValue:ee,usePublisher:ge}=$t(Mr,{optional:{context:\"context\",totalCount:\"totalCount\",overscan:\"overscan\",itemContent:\"itemContent\",components:\"components\",computeItemKey:\"computeItemKey\",data:\"data\",initialItemCount:\"initialItemCount\",scrollSeekConfiguration:\"scrollSeekConfiguration\",headerFooterTag:\"headerFooterTag\",listClassName:\"listClassName\",itemClassName:\"itemClassName\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",logLevel:\"logLevel\",restoreStateFrom:\"restoreStateFrom\",initialTopMostItemIndex:\"initialTopMostItemIndex\",increaseViewportBy:\"increaseViewportBy\"},methods:{scrollTo:\"scrollTo\",scrollBy:\"scrollBy\",scrollToIndex:\"scrollToIndex\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\",stateChanged:\"stateChanged\",readyStateChanged:\"readyStateChanged\"}},Dr),Nr=Jt({useEmitter:sn,useEmitterValue:ee,usePublisher:ge}),_r=Qt({useEmitter:sn,useEmitterValue:ee,usePublisher:ge});function Bo(e,t,o){return t!==\"normal\"&&!(t!=null&&t.endsWith(\"px\"))&&o(`${e} was not resolved to pixel value correctly`,t,de.WARN),t===\"normal\"?0:parseInt(t??\"0\",10)}var Jr=Gr;export{Zr as GroupedTableVirtuoso,$r as GroupedVirtuoso,de as LogLevel,Xr as TableVirtuoso,Yr as Virtuoso,Jr as VirtuosoGrid,Jo as VirtuosoGridMockContext,zt as VirtuosoMockContext};\n","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// react-virtuoso — served from our own origin.\n//\n// **Pinned to 4.13.0, and the pin is load-bearing.** Do not float it and do not\n// \"upgrade past\" it without first driving a window-scrolled grid under a sticky\n// bar, because that is this page's layout and it is where every 4.18.x measured\n// here raced: the grid sometimes froze on its first cells with the scroll\n// landing on blank space (endReached dead, so no page 2 either), and sometimes\n// reset itself to row one mid-scroll, which reads as the page yanking the\n// visitor back up. 4.13.0 is what soundee-nextjs-test has run in production on\n// the same API and the same pattern all along.\n//\n// This replaced a 57 KB copy of the minified bundle that lived in `src/vendor/`\n// and was `@ts-nocheck`d. Framer inlines shared code into every component\n// bundle, so that copy was inlined into each list and browser; an https import\n// stays one external module. It also gets its real prop types back — the\n// vendored bundle carried none, so `Virtuoso` had to be cast to\n// `ComponentType<any>` at the call site.\n//\n// Regenerate with `npm run build:vendor` (needs react-virtuoso@4.13.0 in\n// node_modules), deploy, then change the URL here. Types come from\n// `node_modules` via the `declare module` block in `framer-components.d.ts`.\nexport*from\"https://framer.soundee.com/vendor/react-virtuoso-4.13.0.js\";\nexport const __FramerMetadata__ = {\"exports\":{\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./react_virtuoso.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// filter_trigger_host — where the mobile filter button is allowed to stand.\n//\n// The button belongs to the filter bar: that component owns the schema, the\n// tokens and the sheet it opens. But it has to *stand* inside something tall,\n// because `position: sticky` pins an element within its own container and the\n// bar collapses to nothing on a phone. So the list offers a spot and the bar\n// fills it with a portal.\n//\n// A portal is safe here in a way it was not for the CMS link: the click handler\n// on this button is ours, so React bubbling the event up its own tree — to the\n// bar — is exactly what we want.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{useBottomInset}from\"https://framerusercontent.com/modules/kzYBDVoF2Qa1Nph54gmt/W3lh9aOdXwFNqPdMZ3fq/viewport_cover.js\";const HOST_KEY=\"__soundeeFilterTriggerHost__\";const LISTENERS_KEY=\"__soundeeFilterTriggerListeners__\";// On `globalThis`, because Framer serves every component from its own module\n// URL: the list offering the spot and the bar filling it are different module\n// instances of this file.\nfunction scope(){return globalThis;}function listeners(){const s=scope();let set=s[LISTENERS_KEY];if(!set){set=new Set;s[LISTENERS_KEY]=set;}return set;}function notify(){for(const listener of listeners())listener();}/** Offer a spot. Returns the cleanup, so an unmounting list takes it back. */export function registerFilterTriggerHost(el){scope()[HOST_KEY]=el??undefined;notify();return()=>{if(scope()[HOST_KEY]===el){scope()[HOST_KEY]=undefined;notify();}};}/** The spot on offer, or null when no list is on the page. */export function useFilterTriggerHost(){return React.useSyncExternalStore(onChange=>{const set=listeners();set.add(onChange);return()=>{set.delete(onChange);};},()=>scope()[HOST_KEY]??null,()=>null);}/**\n * The spot itself: a sticky strip at the end of a list.\n *\n * Sticky rather than fixed because the button belongs to the list. It rides\n * along at the bottom of the window while the list is on screen and slides\n * away with it, instead of hovering over the footer forever.\n *\n * It renders nothing of its own — the filter bar portals the button in.\n */export function FilterTriggerSpot(){const[el,setEl]=React.useState(null);const bottom=useBottomInset(20);React.useEffect(()=>registerFilterTriggerHost(el),[el]);return /*#__PURE__*/_jsx(\"div\",{ref:setEl,style:{position:\"sticky\",bottom,display:\"flex\",justifyContent:\"center\",// Empty until the bar fills it, and empty for good on desktop:\n// no height of its own, so it costs the list nothing.\npointerEvents:\"none\",zIndex:20}});}\nexport const __FramerMetadata__ = {\"exports\":{\"FilterTriggerSpot\":{\"type\":\"reactComponent\",\"name\":\"FilterTriggerSpot\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFilterTriggerHost\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"registerFilterTriggerHost\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./filter_trigger_host.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// perf_debug — a floating readout for the one device that can see the bug.\n//\n// Every remote theory about the mobile hangs has now been tested and the hang\n// is still there, so the phone itself gets instrumentation. Behind a URL\n// parameter because it is a diagnostic, not a feature: nothing here runs for a\n// visitor.\n//\n// Usage: open any page with `?soundee_debug=perf`. The overlay shows\n//   lag   — how late a 250ms timer fires, i.e. how blocked the main thread is\n//   task  — the last long task: duration and, when the browser knows, where\n//            it came from\n//   tot   — long-task time accumulated since load\n// Numbers turn red when they are the hang.\nexport function ensurePerfDebug(){if(typeof window===\"undefined\")return;if(!window.location.search.includes(\"soundee_debug=perf\"))return;const scope=globalThis;if(scope.__soundeePerfDebug__)return;scope.__soundeePerfDebug__=true;const el=document.createElement(\"div\");el.setAttribute(\"style\",[\"position:fixed\",\"left:8px\",\"top:8px\",\"z-index:99999\",\"background:rgba(0,0,0,0.85)\",\"color:#7fff7f\",\"font:11px/1.5 monospace\",\"padding:6px 9px\",\"border-radius:6px\",\"pointer-events:none\",\"white-space:pre\",\"max-width:80vw\"].join(\";\"));document.body.appendChild(el);let totalLong=0;let lastTask=\"\";let taskCount=0;try{new PerformanceObserver(list=>{for(const entry of list.getEntries()){totalLong+=entry.duration;taskCount++;const attr=entry.attribution?.[0];const src=attr?.containerSrc||attr?.containerName||attr?.name||\"\";lastTask=`${Math.round(entry.duration)}ms ${String(src).split(\"/\").pop()??\"\"}`;}}).observe({type:\"longtask\",buffered:true});}catch{}// The other half of the question: is the page waiting on the network?\n// Rate limiting looked exactly like jank from a phone today — the API\n// answered 429 seven times in one test session — and a phone has no\n// network panel to see it on.\nlet inFlight=0;let lastResponse=\"\";const origFetch=window.fetch.bind(window);window.fetch=(...args)=>{inFlight++;const url=String(typeof args[0]===\"string\"?args[0]:args[0].url);const tail=url.replace(/^https?:\\/\\/[^/]+/,\"\").slice(0,34);return origFetch(...args).then(res=>{inFlight--;lastResponse=`${res.status} ${tail}`;return res;}).catch(err=>{inFlight--;lastResponse=`ERR ${tail}`;throw err;});};// And how long a tap takes to reach the next frame.\nlet tapPaint=0;window.addEventListener(\"pointerdown\",()=>{const t=performance.now();requestAnimationFrame(()=>{tapPaint=Math.round(performance.now()-t);});},{passive:true,capture:true});let last=performance.now();let worstLag=0;const tick=()=>{const now=performance.now();const lag=Math.max(0,now-last-250);if(lag>worstLag)worstLag=lag;last=now;const bad=lag>500||worstLag>2e3;el.style.color=bad?\"#ff6b6b\":\"#7fff7f\";el.textContent=`lag  ${Math.round(lag)}ms  (max ${Math.round(worstLag)})\n`+`task ${lastTask||\"—\"}  (n=${taskCount})\n`+`tot  ${Math.round(totalLong)}ms\n`+`net  ${inFlight} open  ${lastResponse||\"—\"}\n`+`tap  ${tapPaint}ms`;setTimeout(tick,250);};tick();}\nexport const __FramerMetadata__ = {\"exports\":{\"ensurePerfDebug\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./perf_debug.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// list_growth — whether any catalog list on the page can still grow.\n//\n// An infinite list pushes the footer further away with every page it loads:\n// a visitor scrolling toward the footer is the very gesture that fetches more\n// rows and moves it. The footer override reads this registry and hides the\n// footer while any list still has pages to add, then shows it again once the\n// catalogue is fully on the page.\n//\n// The registry lives on globalThis, not in module scope: the override in a\n// producer's own project and this store arrive in separate bundles, and two\n// copies of a module-level Map would each see only their own lists. The\n// contract is the shape of `__soundeeListGrowth` below; the override reads it\n// with its own copy of these few lines rather than importing this module.\nimport{useSyncExternalStore}from\"react\";function getRegistry(){const scope=globalThis;if(!scope.__soundeeListGrowth){scope.__soundeeListGrowth={lists:new Map,listeners:new Set};}return scope.__soundeeListGrowth;}/** A list reports itself while mounted; pass null on unmount to withdraw. */export function setListGrowth(id,entry){const reg=getRegistry();if(entry===null){if(!reg.lists.delete(id))return;}else{const prev=reg.lists.get(id);if(prev&&prev.hasData===entry.hasData&&prev.canGrow===entry.canGrow&&prev.emptyCatalogue===entry.emptyCatalogue){return;}reg.lists.set(id,entry);}reg.listeners.forEach(l=>l());}function subscribe(listener){const reg=getRegistry();reg.listeners.add(listener);return()=>{reg.listeners.delete(listener);};}function getSnapshot(){for(const entry of getRegistry().lists.values()){if(entry.hasData&&entry.canGrow)return true;}return false;}/**\n * True while any list on the page has data and more pages to load. Before the\n * first page lands this is false — the footer starts visible — and it settles\n * back to false when the last page is in.\n */export function useAnyListCanGrow(){return useSyncExternalStore(subscribe,getSnapshot,()=>false);}function getEmptySnapshot(){const lists=getRegistry().lists;if(lists.size===0)return false;for(const entry of lists.values()){if(!entry.emptyCatalogue)return false;}return true;}/**\n * Every list on the page is looking at an empty catalogue.\n *\n * Page-wide rather than per-list because a browser holds its list as a child\n * and never learns its id — and because the answer only differs on a page\n * carrying two catalogues at once, where \"one of them still has something\"\n * is the right reason to keep the controls.\n *\n * Starts false and stays false until every list has answered, so a bar keyed\n * off this never blinks away during the first fetch.\n */export function useCatalogueIsEmpty(){return useSyncExternalStore(subscribe,getEmptySnapshot,()=>false);}\nexport const __FramerMetadata__ = {\"exports\":{\"setListGrowth\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAnyListCanGrow\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCatalogueIsEmpty\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./list_growth.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// browser_min_height — the list reserve a browser measures for its list.\n//\n// Its own file, between `browser_shell` and `SoundeeCatalogListStandalone`,\n// because each would be the wrong home: in the shell the consumer would drag\n// the whole filter bar into every standalone list's bundle, and in the list\n// the *decision* would be an inference (\"a scroll ref exists, so this must be\n// a browser\") instead of something the browser states by providing it.\n//\n// The browser is the one place this measurement is possible at all: it owns\n// the shell element a filter change scrolls to the top, and it owns the cap\n// that starts exactly where the list starts. The list only has to read the\n// answer.\nimport*as React from\"react\";import{playerBarHeight}from\"https://framerusercontent.com/modules/kzYBDVoF2Qa1Nph54gmt/W3lh9aOdXwFNqPdMZ3fq/viewport_cover.js\";/**\n * On `globalThis`, like every store here: Framer can serve the shell and the\n * list from separate copies of this module, and two copies means two context\n * objects — a provider the consumer can never see. First copy to build it\n * wins.\n */function getContext(){const scope=globalThis;const key=\"__soundeeBrowserListMinHeight__\";const existing=scope[key];if(existing)return existing;const created=/*#__PURE__*/React.createContext(null);scope[key]=created;return created;}export const BrowserListMinHeight=getContext();/**\n * The space the list really has once a filter change has scrolled the shell\n * to the top of the viewport:\n *\n *     viewport − (cap top − shell top) − player bar\n *\n * The cap is the wrapper the shell puts around its list, so its top *is* the\n * list's top — the distance covers the bar, the tags and the gaps above in\n * one measurement, whatever the producer toggled on.\n *\n * Re-measured on resize, when the shell's own layout moves (a bar wrapping\n * to two lines), and on a 1s interval because the player bar appears the\n * first time something plays — the same cadence `useBottomInset` uses for\n * the same reason. Floored at 320px so a strange measurement can only waste\n * reserve, never collapse it into a visible hop; 2px of hysteresis so\n * rounding wobble cannot re-render a list of thirty rows.\n */export function useMeasuredListMinHeight(shellRef,capRef){const[minHeight,setMinHeight]=React.useState(null);React.useLayoutEffect(()=>{const shell=shellRef.current;const cap=capRef.current;if(!shell||!cap)return;let frame=0;const measure=()=>{const vh=window.innerHeight;if(vh<=0)return;const distance=Math.max(0,cap.getBoundingClientRect().top-shell.getBoundingClientRect().top);const next=Math.max(320,Math.round(vh-distance-playerBarHeight()));setMinHeight(prev=>prev!=null&&Math.abs(prev-next)<2?prev:next);};const schedule=()=>{cancelAnimationFrame(frame);frame=requestAnimationFrame(measure);};measure();window.addEventListener(\"resize\",schedule);const timer=window.setInterval(measure,1e3);let observer=null;if(typeof ResizeObserver!==\"undefined\"){observer=new ResizeObserver(schedule);observer.observe(shell);}return()=>{window.removeEventListener(\"resize\",schedule);window.clearInterval(timer);cancelAnimationFrame(frame);observer?.disconnect();};},[shellRef,capRef]);return minHeight;}\nexport const __FramerMetadata__ = {\"exports\":{\"BrowserListMinHeight\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMeasuredListMinHeight\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./browser_min_height.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r3 (2026-08-18 22:45) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{hasUserFilters}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";import{motion,RenderTarget}from\"framer\";import{useInfiniteQuery,QueryClientProvider}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{Virtuoso as VirtuosoBase,VirtuosoGrid as VirtuosoGridBase}from\"https://framerusercontent.com/modules/imeijzWlAyXyG3sctoxx/D1IvaREGR6D3VQzWST26/react_virtuoso.js\";// Still widened on purpose. The hosted bundle now brings its real types along\n// (see `lib/vendor/react_virtuoso.tsx`), but this call site passes a union of\n// list and grid props through one pair of components, which the precise types\n// reject. Narrowing that is its own change.\nconst Virtuoso=VirtuosoBase;const VirtuosoGrid=VirtuosoGridBase;import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/S0Kmw9574uaRNxylK8em/config.js\";import{firstLoad,NEVER_COLLECT}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{useEntitySelector}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{PlaylistContext,registerPlaylist}from\"https://framerusercontent.com/modules/xHhQmu9KUyaDJlvQ1REJ/bWd9qzndMaNhQDLTwfIv/playlist.js\";import{normalizeSlot,renderSlotWithSizing}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{EmptyState}from\"https://framerusercontent.com/modules/tC1behCumjtvssYcM3eK/XIJA7gEqIZqG6iAuzdnW/EmptyState.js\";import{SellerGate}from\"https://framerusercontent.com/modules/H46XGEKpmTPtqYBWZeIg/SR177hzVGhqiKaEJmqrm/SellerGate.js\";import{consumeFilterIntent}from\"https://framerusercontent.com/modules/WZfzyBLhjpoCS0yXtkaW/Izfmec8rxkTKSZZcZD3Z/filter_intent.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/QPYxKewklLhpEooyt8R4/session.js\";import{requestSoundeeAuth}from\"https://framerusercontent.com/modules/WO1OkTRlQ7Ujgw4kWkqW/CfsiFGnaWgQ1QvOs342E/auth_state.js\";import{registerCatalogFilterEntityType,setCatalogLocalDelta}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{FilterTriggerSpot}from\"https://framerusercontent.com/modules/xJtVMvQLqvvftBQKiwcF/OViklEgXqXgQ0jff9C8V/filter_trigger_host.js\";import{ensurePerfDebug}from\"https://framerusercontent.com/modules/mUoovyYiGwCRmu1W1gJS/0ssIzZkG4zJWCHoCOWdv/perf_debug.js\";import{getLikeActivity,isLiked,useLikeStore}from\"https://framerusercontent.com/modules/FCo7CeK86NShihctg8Ql/5vsld33GwD57YYnnUFr3/likes.js\";import{dedupeEntityIds,takeUnseenPageItems}from\"https://framerusercontent.com/modules/FwdQf9t7jXrQK2VaZWlS/X6tT6pbwVK4ubbFN4aMb/catalog_ids.js\";import{setListGrowth}from\"https://framerusercontent.com/modules/iODtZvjeTLoGSw3FWxMf/nDiDt9S4XhmoJG5zfmVU/list_growth.js\";/** Opt-in tracing: `?soundee_debug=scroll`. */function debugScroll(){if(typeof window===\"undefined\")return false;try{return new URLSearchParams(window.location.search).get(\"soundee_debug\")===\"scroll\";}catch{return false;}}import{buildListQueryKey,queryKeyToString}from\"https://framerusercontent.com/modules/JcGkFxuDjRfBADgMmXWq/pvonKNExnbKIMYF0pgOe/query_key.js\";import{claimEntryRefresh,queryClient}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{topCoverHeight}from\"https://framerusercontent.com/modules/kzYBDVoF2Qa1Nph54gmt/W3lh9aOdXwFNqPdMZ3fq/viewport_cover.js\";import{BrowserListMinHeight}from\"https://framerusercontent.com/modules/Fo3cxfXOSwZYsol3Xc2O/t5MQgLzzhrLDxK0vnYct/browser_min_height.js\";import{cancelScrollRestorationToTop,ensureScrollRestoration,isRestoring}from\"https://framerusercontent.com/modules/r0CAv0YpHCMOiaBy9POg/VepPLPXaPoYGah8pYdP2/history_cache.js\";const gridStyles=`\n.catalog-grid {\n    display: grid !important;\n    grid-template-columns: repeat(auto-fill, minmax(var(--grid-min-width, 240px), 1fr));\n    gap: var(--grid-gap, 16px);\n    width: 100%;\n}\n`;const spinnerStyles=`@keyframes soundee-spin { to { transform: rotate(360deg); } }`;function Spinner({color=\"rgba(255,255,255,0.5)\"}){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:spinnerStyles}),/*#__PURE__*/_jsx(\"div\",{style:{width:24,height:24,borderRadius:\"50%\",border:\"2px solid transparent\",borderTopColor:color,borderRightColor:color,animation:\"soundee-spin 0.7s linear infinite\"}})]});}function ListFooter({isFetchingNextPage,spinnerColor}){if(!isFetchingNextPage)return null;return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"center\",padding:\"20px 0\"},children:/*#__PURE__*/_jsx(Spinner,{color:spinnerColor})});}function hasSlotContent(slot){if(Array.isArray(slot))return slot.some(n=>/*#__PURE__*/React.isValidElement(n));return /*#__PURE__*/React.isValidElement(slot);}// Shared fade timeline: each loaded batch opens a window of this length. Items\n// that mount within it pick up the current progress and all converge to full\n// opacity at the same moment (fadeStart + FADE_TIMELINE_MS), giving a single\n// \"curtain\" reveal instead of independent per-item fades. Items mounting after\n// the window (e.g. recycled rows while scrolling) render solid, so virtuoso\n// re-mounts never re-trigger the animation.\nconst FADE_TIMELINE_MS=800;// NOTE / known tradeoffs for the fade + height-freeze polish below:\n// - fadeTimerRef is (re)armed by both the data-load effect and the\n//   [layoutKey] effect. Harmless (both only clear the eligibility set with the\n//   same duration), but ownership is intentionally shared; consolidate if it\n//   grows.\n// - FADE_TIMELINE_MS (800) and the freeze release (400ms) are fixed. When a\n//   layout switch goes to a SHORTER layout, the frozen min-height shows ~400ms\n//   of extra whitespace before it snaps. A ResizeObserver-based release\n//   (free as soon as the new content reaches the frozen height, timer as\n//   fallback) would be smoother; not worth the complexity unless it bothers.\n// - Rapid layout toggling (<400ms) can briefly accumulate the frozen height to\n//   the largest measured value; bounded by real content, so acceptable.\nfunction prefersReducedMotion(){if(typeof window===\"undefined\"||!window.matchMedia)return false;return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}function FadeInItem({id,pendingRef,startRef,style,children}){// Decide once at mount: an id only fades if it is still flagged as freshly\n// loaded. Consuming the id here prevents the same item from fading again on\n// a later re-mount. The start opacity reflects how far the shared timeline\n// has already progressed, and the duration is the remaining time, so every\n// item reaches opacity 1 together.\nconst[fade]=React.useState(()=>{if(id==null||!pendingRef.current.has(id))return null;pendingRef.current.delete(id);if(prefersReducedMotion())return null;const elapsed=Date.now()-startRef.current;const remaining=FADE_TIMELINE_MS-elapsed;if(remaining<=0)return null;const startOpacity=Math.min(Math.max(elapsed/FADE_TIMELINE_MS,0),1);return{startOpacity,duration:remaining/1e3};});if(!fade)return /*#__PURE__*/_jsx(\"div\",{style:style,children:children});return /*#__PURE__*/_jsx(motion.div,{style:style,initial:{opacity:fade.startOpacity},animate:{opacity:1},transition:{duration:fade.duration,ease:\"easeOut\"},children:children});}function parseInitialFilterParams(input){const value=input?.trim().replace(/^\\?/,\"\");if(!value)return{};const params=new URLSearchParams(value);const result={};params.forEach((paramValue,key)=>{if(key&&paramValue)result[key]=paramValue;});return result;}// `dvh`, not `vh`: on a phone `vh` is the viewport with the browser chrome\n// hidden, so the reserve overshot the visible screen by the address bar and a\n// short list left a blank strip under itself. `dvh` follows what is actually\n// on screen — the same thing the measured path (`browser_min_height`) reads\n// from `innerHeight`, so the guess and the measurement now agree.\nfunction resolveListMinHeight(minHeightOffset){const offset=Math.max(0,Number(minHeightOffset)||0);if(offset<=0)return\"100dvh\";return`calc(100dvh - ${offset}px)`;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeCatalogList(props){return /*#__PURE__*/_jsx(QueryClientProvider,{client:queryClient,children:/*#__PURE__*/_jsx(CatalogListInner,{...props})});}SoundeeCatalogList.displayName=\"Soundee Catalog List\";function CanvasCatalogPreview({layout,limit,gap,gridMinWidth,previewItems,renderItem}){const items=(previewItems??[]).slice(0,Math.max(1,Math.min(limit,20)));const playlistId=\"soundee-canvas-preview\";if(!items.length)return null;if(layout===\"grid\"){return /*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:`repeat(auto-fill, minmax(${gridMinWidth??200}px, 1fr))`,gap,width:\"100%\"},children:items.map((item,index)=>/*#__PURE__*/_jsx(PlaylistContext.Provider,{value:playlistId,children:renderItem(item,index,playlistId)},`${item.entityId}-${index}`))});}return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap,width:\"100%\"},children:items.map((item,index)=>/*#__PURE__*/_jsx(PlaylistContext.Provider,{value:playlistId,children:renderItem(item,index,playlistId)},`${item.entityId}-${index}`))});}/**\n * The list, plus the spot where the mobile filter button is allowed to stand.\n *\n * The button belongs to the filter bar — that component owns the schema, the\n * tokens and the sheet — but it has to *stand* inside something tall, because\n * `position: sticky` pins an element within its own container and the bar\n * collapses to nothing on a phone. So the list offers the spot and the bar\n * fills it. On desktop, and on any page without a bar, it stays empty and\n * costs nothing.\n */function CatalogListInner(props){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",width:\"100%\"},children:[/*#__PURE__*/_jsx(SellerGate,{children:/*#__PURE__*/_jsx(CatalogListBody,{...props})}),/*#__PURE__*/_jsx(FilterTriggerSpot,{})]});}function CatalogListBody({layout=\"list\",filterEntityType=\"tracks\",entityPath,limit,gap,spinnerColor,initialFilters,emptyTitle=\"No results\",emptyText=\"Try changing or resetting your filters to see more results.\",showEmptyReset=true,gridMinWidth=200,scrollTargetId=\"\",scrollTargetRef,scrollOffset=0,minHeightOffset=0,filtersSource=\"Global Filters\",infiniteLoading=\"On\",extraParams,previewItems,emptySlot,layoutKey=\"\",fetchFn,upsertFn,getEntityIds,selectEntities,filterItemIds,refreshOnEntry=false,refreshVersion=0,renderItem,renderSkeleton}){// Publish both the entity type and this list's source/relation params, so\n// result-count consumers scope their count the same way this list scopes\n// its items (e.g. `list_type=liked` on a Favorites list). Keyed on the\n// serialized params so switching source re-registers.\n// `refreshVersion` doubles as the membership version: it changes exactly\n// when what this source matches changes (e.g. a like), while the params\n// stay identical. The count folds it into its cache key so it refetches.\nconst sourceParamsKey=JSON.stringify(extraParams??{});React.useEffect(()=>{return registerCatalogFilterEntityType(filterEntityType,extraParams,refreshOnEntry?refreshVersion:0);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[filterEntityType,sourceParamsKey,refreshOnEntry,refreshVersion]);if(RenderTarget.current()===RenderTarget.canvas){return /*#__PURE__*/_jsx(CanvasCatalogPreview,{layout:layout,limit:limit,gap:gap,gridMinWidth:gridMinWidth,previewItems:previewItems,renderItem:renderItem});}const cfg=useSoundeeConfig();const Filters=filterRegistry[filterEntityType].filters;const filterStore=Filters.useStore();const entityMap=useEntitySelector(selectEntities);const didMountRef=React.useRef(false);const isGlobalFilters=filtersSource===\"Global Filters\";const shouldLoadMore=infiniteLoading===\"On\";// Client-only render gate. The server (and hydration render) returns null so\n// no mode-specific skeleton HTML is painted before localStorage is known;\n// once mounted, the skeleton appears directly in the stored layout. Data\n// hooks below keep running, so the fetch still starts immediately.\nconst[mounted,setMounted]=React.useState(false);React.useEffect(()=>setMounted(true),[]);const userId=cfg.userId;const storeId=cfg.storeId;const defaultFilters=React.useMemo(()=>{return Filters.parseQueryString(initialFilters??\"\");},[initialFilters]);const initialFilterParams=React.useMemo(()=>{return parseInitialFilterParams(initialFilters);},[initialFilters]);React.useEffect(()=>{if(!isGlobalFilters)return;if(!userId||!storeId||!cfg._ready)return;// Consumed here, after the ready guard — a pass that bails above must\n// not eat the intent before the pass that actually hydrates. Parsed\n// by this store's own schema, so a tracks intent passes a kits list\n// untouched; init's replaceState then writes the values into the URL.\nconst intent=consumeFilterIntent(Filters.parseQueryString);const generation=Filters.init(defaultFilters,intent??undefined);Filters.fetchOptions(cfg.baseUrl,String(storeId),filterEntityType);// Only this list's own hydration: on a page transition the next\n// page's list has already re-hydrated the store by the time this\n// cleanup runs, and wiping it left that page unhydrated.\nreturn()=>Filters.resetState(generation);},[userId,storeId,cfg.baseUrl,cfg._ready,defaultFilters,filterEntityType,isGlobalFilters]);const filterParams=React.useMemo(()=>{const base=isGlobalFilters?Filters.getQueryParams():initialFilterParams;if(!extraParams)return base;const merged={...base};for(const[key,value]of Object.entries(extraParams)){merged[key]=String(value);}return merged;},[filterStore.committed,initialFilterParams,isGlobalFilters,extraParams]);// Its own ref, not `containerRef`: that one is read during a layout switch\n// to freeze the committed height, and must keep measuring the real list.\n// This one only has to mark where the list sits, including while it is a\n// skeleton — which is exactly the state a filter change lands in.\nconst anchorRef=React.useRef(null);// ─── The reserve: the browser's measurement, or the 100dvh guess ───────\n//\n// The min-height exists so the skeleton→rows swap cannot collapse the\n// page and so a filter change has room to land. A full 100dvh was the\n// safe guess for a bare list; under a browser it overshoots by exactly\n// the bands sitting above the list — bar, tags, count — plus the player\n// pinned over the bottom. The browser measures the real space and\n// publishes it (see browser_min_height); a standalone list gets null and\n// keeps the guess. Height Offset subtracts from either.\nconst browserMinHeight=React.useContext(BrowserListMinHeight);const listMinHeight=React.useMemo(()=>{// `typeof`, because Framer's older TypeScript fails to narrow the\n// context's `number | null` through `!= null` here.\nif(typeof browserMinHeight===\"number\"){const offset=Math.max(0,Number(minHeightOffset)||0);return`${Math.max(320,browserMinHeight-offset)}px`;}return resolveListMinHeight(minHeightOffset);},[browserMinHeight,minHeightOffset]);// Set when the filters change, cleared by the settled pass below.\nconst pendingCorrectionRef=React.useRef(false);const scrollTriggerKey=React.useMemo(()=>{return JSON.stringify({userId,filters:filterParams});},[userId,filterParams]);// A favorites view is the one list whose contents can change without any\n// filter changing, so its cache entry carries when the likes last settled.\n// Read once here and again whenever the filters move — never while the list\n// sits on screen, or every heart would restart the list under the visitor.\n// Re-entering, switching filters and pressing Clear therefore all ask the\n// server again; staying put does not.\nconst likedView=filterParams.list_type===\"liked\";// A favorites view belongs to the signed-in visitor, so an anonymous\n// one has nothing to fetch — the server answers with an error, which\n// used to surface as a red \"Failed to load items.\" Catch it before the\n// query instead and show a sign-in prompt in the list's place;\n// `isLoggedIn` flips on sign-in, re-enabling the query.\nconst isLoggedIn=useSessionStore().isLoggedIn;// Canvas already returned above (the preview branch), so reaching here\n// means a live render.\nconst needsAuth=likedView&&!isLoggedIn;const[likeActivity,setLikeActivity]=React.useState(getLikeActivity);const likeActivityScope=React.useMemo(()=>JSON.stringify(filterParams),[filterParams]);React.useEffect(()=>{// Same value on mount, so React bails and nothing refetches.\nsetLikeActivity(getLikeActivity());},[likeActivityScope]);const queryKey=React.useMemo(()=>{return buildListQueryKey({baseUrl:cfg.baseUrl,storeId:cfg.storeId,path:`/users/${userId}${entityPath}`,params:{limit,...filterParams},// Key only, never sent: the server has no idea what this is, and it\n// would be a filter it does not know if it arrived as one.\nextra:likedView?[likeActivity]:[]});},[cfg.baseUrl,cfg.storeId,userId,limit,filterParams,entityPath,likedView,likeActivity]);// See `refreshOnEntry`. Evaluated on entry and when the query identity\n// changes (e.g. switching source), never while merely re-rendering — the\n// version is read through a ref so liking a row cannot trigger a refetch.\n// `claimEntryRefresh` returns false when nothing changed since this query's\n// data was loaded, which is the common case: then the cached pages and the\n// restored scroll position are kept and no request is made.\nconst queryKeyForEntry=React.useMemo(()=>queryKeyToString(queryKey),[queryKey]);const refreshVersionRef=React.useRef(refreshVersion);refreshVersionRef.current=refreshVersion;// The long list on the page is the reason scroll restoration exists, so it\n// installs it rather than waiting for someone to remember the component.\n// Idempotent, and the component still works for tuning the window.\nReact.useEffect(()=>{ensureScrollRestoration();ensurePerfDebug();},[]);// A saved offset is only meaningful if the pages it was measured against\n// are still cached. When they are not — a hard load, a dropped entry, a key\n// that moved because likes settled — this list starts at page 1, and\n// restoring to 3000px would strand the visitor in reserved empty space\n// under a single page of rows. Better the top.\n//\n// Waits for the config, or the key is still being built and every list\n// would look uncached. Runs once: later cache misses are page changes, not\n// arrivals.\nconst restoreCheckedRef=React.useRef(false);React.useEffect(()=>{if(restoreCheckedRef.current)return;if(!cfg._ready||!userId)return;restoreCheckedRef.current=true;if(!queryClient.getQueryData(queryKey)){cancelScrollRestorationToTop();}},[cfg._ready,userId,queryKey]);// Whether this effect has already run for the list currently on screen.\nconst enteredRef=React.useRef(false);React.useEffect(()=>{// `refreshOnEntry` is the Source control saying Favorites; `likedView`\n// catches the same view reached through the bar's toggle, which used to\n// be left out and kept its stale membership on re-entry.\n// Claimed before the guard, not after it. A list that is not a liked\n// view returns below on every run, so the flag never got set — and the\n// first time the favorites toggle made the guard pass, an hour into a\n// session, this read as an arrival and threw the page to the top.\n// Mounting is what makes an arrival, not the shape of the filters.\nconst arriving=!enteredRef.current;enteredRef.current=true;if(!refreshOnEntry&&!likedView)return;if(!claimEntryRefresh(queryKeyForEntry,refreshVersionRef.current)){return;}queryClient.removeQueries({queryKey});// Only when arriving. The key also changes when the filters move, and a\n// filter change already has somewhere to be — the effect on\n// `scrollTriggerKey` puts the visitor at the filter bar. Firing this as\n// well meant a hard jump to the very top of the page racing that, which\n// is why it only sometimes went wrong.\n//\n// On arrival it is still right: the list restarts at page 1, so a\n// restored offset deeper than that would land in empty space.\nif(arriving)cancelScrollRestorationToTop();},[refreshOnEntry,likedView,queryKeyForEntry]);const{data,fetchNextPage,hasNextPage,isFetchingNextPage,isPending:isPendingV5,isLoading:isLoadingV4,isError}=useInfiniteQuery({queryKey,// `pageParam` is optional because v4 ignores `initialPageParam` and\n// starts the first page at `undefined`.\nqueryFn:({pageParam})=>fetchFn({baseUrl:cfg.baseUrl,storeId:cfg.storeId,userId:cfg.userId},String(userId),pageParam??1,limit,filterParams),initialPageParam:1,getNextPageParam:lastPage=>lastPage.nextPage??undefined,enabled:!!userId&&cfg._ready&&!needsAuth&&(!isGlobalFilters||filterStore.hydrated),...NEVER_COLLECT,refetchOnMount:false,refetchOnWindowFocus:false,refetchOnReconnect:false});// One flag for both majors — see `firstLoad`. Everything below reads this,\n// never the raw fields.\nconst isPending=firstLoad({isPending:isPendingV5,isLoading:isLoadingV4});React.useEffect(()=>{if(typeof window===\"undefined\")return;if(!didMountRef.current){didMountRef.current=true;return;}// Don't yank to top/target while a history-back scroll restore is in\n// progress; the restore owns the scroll position then.\nif(isRestoring())return;pendingCorrectionRef.current=true;const frame=window.requestAnimationFrame(()=>{if(isRestoring())return;// An explicit id wins — someone saying \"land here\". Otherwise the\n// list's own top, which is the one thing on the page guaranteed\n// not to be sticky: reading the bar's position was the mistake,\n// because a stuck bar reports where it is *painted*, which is\n// roughly where you already are.\nconst explicit=scrollTargetRef?.current??(scrollTargetId?document.getElementById(scrollTargetId):null);// A pinned anchor cannot be measured — see `isPinned`. Falling\n// back to the list means an anchor placed inside a sticky filter\n// section still lands you in the right place instead of doing\n// nothing at all.\n// An explicit id is taken at face value: it was placed on purpose,\n// at a spot only the person who placed it can judge. Second-guessing\n// it — measuring whether it looked pinned, deciding to use\n// something else — is how a setup that worked stopped working.\nconst anchor=explicit??anchorRef.current;if(anchor){// Only when nobody said where to land. With an anchor placed,\n// its position already accounts for the layout around it, and\n// adding a measured cover on top would double up.\nconst cover=explicit?0:topCoverHeight();const targetTop=anchor.getBoundingClientRect().top+window.scrollY-cover-scrollOffset;if(debugScroll()){console.warn(\"[soundee] scroll-back\",{anchor:explicit?scrollTargetId:\"list container\",anchorTop:anchor.getBoundingClientRect().top,scrollY:window.scrollY,cover,scrollOffset,targetTop,willScroll:window.scrollY>targetTop});}if(window.scrollY>targetTop){window.scrollTo({top:Math.max(0,targetTop),behavior:\"auto\"});}return;}if(window.scrollY>0){window.scrollTo({top:0,behavior:\"auto\"});}});return()=>window.cancelAnimationFrame(frame);},[scrollTriggerKey,scrollOffset,scrollTargetId,scrollTargetRef]);// A second pass once the data has landed.\n//\n// The jump above happens while the list is still a skeleton, so it measures\n// a layout that is about to change: a suggested-tags row appears, the bar\n// grows a line, the rows are a different height than their placeholders.\n// The first pass gets you there; this one corrects the drift, and only ever\n// upward, so a visitor who has already scrolled down is left alone.\nReact.useEffect(()=>{if(!pendingCorrectionRef.current)return;if(isPending)return;pendingCorrectionRef.current=false;if(isRestoring())return;const frame=window.requestAnimationFrame(()=>{if(isRestoring())return;const explicit=scrollTargetRef?.current??(scrollTargetId?document.getElementById(scrollTargetId):null);const anchor=explicit??anchorRef.current;if(!anchor)return;const cover=explicit?0:topCoverHeight();const targetTop=anchor.getBoundingClientRect().top+window.scrollY-cover-scrollOffset;if(debugScroll()){console.warn(\"[soundee] scroll-back (settled)\",{anchorTop:anchor.getBoundingClientRect().top,scrollY:window.scrollY,cover,scrollOffset,targetTop,willScroll:window.scrollY>targetTop});}if(window.scrollY>targetTop){window.scrollTo({top:Math.max(0,targetTop),behavior:\"auto\"});}});return()=>window.cancelAnimationFrame(frame);},[isPending,scrollOffset,scrollTargetId,scrollTargetRef]);const playlistId=React.useMemo(()=>queryKeyToString(queryKey),[queryKey]);const pendingFadeIdsRef=React.useRef(new Set);const fadeTimerRef=React.useRef(null);const fadeStartRef=React.useRef(0);const prevLayoutKeyRef=React.useRef(null);const containerRef=React.useRef(null);const[frozenHeight,setFrozenHeight]=React.useState(null);const freezeTimerRef=React.useRef(null);// Only pages the entity store hasn't seen yet — see `takeUnseenPageItems`.\n// Tracked by page identity rather than a per-instance count, so a re-mount\n// on navigation neither re-writes cached pages into the store nor replays\n// the fade over rows the visitor already had on screen.\n// A layout effect, not a passive one: with a passive effect the render\n// where the query resolves paints first — data present, store still\n// empty — and that paint is a one-frame skeleton flash between \"loading\n// done\" and \"rows in\". Pre-paint, the store catches up invisibly.\nReact.useLayoutEffect(()=>{if(!data)return;const newItems=takeUnseenPageItems(data.pages);if(newItems.length){upsertFn(newItems);// Flag the freshly loaded ids as fade-eligible and (re)open the\n// shared timeline. Only items that mount within it fade in, and\n// they converge to full opacity at fadeStart + FADE_TIMELINE_MS.\nfor(const it of newItems){if(it?.entityId!=null){pendingFadeIdsRef.current.add(it.entityId);}}fadeStartRef.current=Date.now();if(fadeTimerRef.current)window.clearTimeout(fadeTimerRef.current);fadeTimerRef.current=window.setTimeout(()=>{pendingFadeIdsRef.current.clear();fadeTimerRef.current=null;},FADE_TIMELINE_MS);}},[data,playlistId,upsertFn]);React.useEffect(()=>{return()=>{if(fadeTimerRef.current)window.clearTimeout(fadeTimerRef.current);};},[]);// Close the eligibility window after a layout switch. The set itself is\n// filled during render (see above); this only (re)arms the clear timer so\n// ids that never mounted don't linger and fade in on a later scroll.\nReact.useEffect(()=>{if(fadeTimerRef.current)window.clearTimeout(fadeTimerRef.current);fadeTimerRef.current=window.setTimeout(()=>{pendingFadeIdsRef.current.clear();fadeTimerRef.current=null;},FADE_TIMELINE_MS);},[layoutKey]);// Release the frozen height once the new layout has had time to measure.\nReact.useEffect(()=>{if(frozenHeight==null)return;if(freezeTimerRef.current)window.clearTimeout(freezeTimerRef.current);freezeTimerRef.current=window.setTimeout(()=>{setFrozenHeight(null);freezeTimerRef.current=null;},400);return()=>{if(freezeTimerRef.current){window.clearTimeout(freezeTimerRef.current);}};},[layoutKey,frozenHeight]);// Unliking a row has to remove it from a favorites view, and a favorites\n// view arrives two ways: the list's own Source, and the heart in the filter\n// bar writing `list_type=liked`. Both end up in the same params, so read\n// them rather than the Source prop — a list on Source = Tracks with the\n// toggle on is just as much a favorites view.\n// `likedView`, decided once further up where the query key is built.\nconst{version:likeVersion}=useLikeStore();// Applied here rather than by refetching: invalidating an infinite query\n// re-requests every cached page sequentially and breaks scroll restoration,\n// so membership we already know locally is filtered on the way out.\n// `filterItemIds` stays as the escape hatch for anything else a wrapper\n// needs to drop.\nconst itemIds=React.useMemo(()=>{// Deduped before anything else looks at them: pages are numbered over a\n// set that can change between two requests — a like shifts every\n// boundary in a favorites list — and rows are keyed by entity id.\nconst ids=data?dedupeEntityIds(getEntityIds(data)):[];const afterLikes=likedView?ids.filter(id=>isLiked(id)):ids;return filterItemIds?filterItemIds(afterLikes):afterLikes;// eslint-disable-next-line react-hooks/exhaustive-deps\n},[data,getEntityIds,filterItemIds,likedView,likeVersion]);// How far this list has moved from the number the server last gave the\n// count. Rows it dropped because the heart emptied, minus rows it added\n// because the heart filled — both of which the count is frozen against and\n// would otherwise disagree with while the visitor watches it happen.\nReact.useEffect(()=>{if(!likedView){setCatalogLocalDelta(0);return;}const pages=data?.pages;let added=0;let removed=0;for(const page of pages??[]){for(const item of page?.items??[]){const id=item?.entityId;if(typeof id!==\"number\")continue;// A row this client put there, so the server's count predates\n// it — but only while the like still stands.\nif(item?.optimistic){if(isLiked(id))added++;continue;}if(!isLiked(id))removed++;}}setCatalogLocalDelta(added-removed);},[data,likedView,likeVersion]);// Nothing published once this list is gone: the next one answers for\n// itself, and a stale delta would bend its count.\nReact.useEffect(()=>()=>setCatalogLocalDelta(0),[]);const visibleItemIds=React.useMemo(()=>{if(shouldLoadMore)return itemIds;return itemIds.slice(0,limit);},[itemIds,limit,shouldLoadMore]);// Reported for the footer override (see store/list_growth): the footer\n// hides while this list has data and can still add pages — including while\n// the next page is in flight — and returns once the catalogue is complete.\n// Before the first page lands, `hasData` is false and the footer stays.\nconst growthId=React.useId();const growthHasData=visibleItemIds.length>0;const growthCanGrow=shouldLoadMore&&(hasNextPage===true||isFetchingNextPage);// Published for the browser shell, which hides its bar and tags when there\n// is nothing in the catalogue to filter. Narrow on purpose: the answer has\n// to be in, the list genuinely empty, and nothing narrowing it.\nconst emptyCatalogue=isGlobalFilters&&!isPending&&!isError&&itemIds.length===0&&!Filters.hasNarrowingFilters();React.useEffect(()=>{setListGrowth(growthId,{hasData:growthHasData,canGrow:growthCanGrow,emptyCatalogue});},[growthId,growthHasData,growthCanGrow,emptyCatalogue]);React.useEffect(()=>()=>setListGrowth(growthId,null),[growthId]);// A layout-mode switch changes layoutKey, which remounts the virtualizer in\n// the same commit. The eligibility set must be filled during render (before\n// the children mount), so we detect the change here rather than in an effect\n// (which would run too late). Ref mutation here is idempotent under repeated\n// renders since prevLayoutKeyRef is updated immediately.\nif(prevLayoutKeyRef.current===null){prevLayoutKeyRef.current=layoutKey;}else if(prevLayoutKeyRef.current!==layoutKey){prevLayoutKeyRef.current=layoutKey;for(const id of visibleItemIds){pendingFadeIdsRef.current.add(id);}fadeStartRef.current=Date.now();// Freeze the current container height so the page doesn't collapse and\n// jump while the remounted virtualizer re-measures. Read here (during\n// render the ref still points at the old, committed DOM); an effect\n// would run after the old DOM is already gone.\nconst h=containerRef.current?.offsetHeight;if(h)setFrozenHeight(h);}const fetchPageFn=React.useCallback(pageParam=>fetchFn({baseUrl:cfg.baseUrl,storeId:cfg.storeId,userId:cfg.userId},String(userId),pageParam,limit,filterParams),[fetchFn,cfg.baseUrl,cfg.storeId,userId,limit,filterParams]);React.useEffect(()=>{if(!data||itemIds.length===0)return;registerPlaylist(playlistId,itemIds,queryKey,fetchPageFn,hasNextPage??false,upsertFn);},[data,itemIds,queryKey,fetchPageFn,hasNextPage,playlistId,upsertFn]);const items=React.useMemo(()=>{return visibleItemIds.map(id=>entityMap[id]).filter(Boolean);},[visibleItemIds,entityMap]);// Use itemIds (derived synchronously from `data`) for the empty check, not\n// the store-derived `items`. `items` lags one frame on a filter change\n// (entityMap is filled in an effect after render), so checking it here would\n// briefly flag a non-empty result as empty and flash the no-minHeight\n// EmptyState between the skeleton and the new data -> visible hop.\nconst isEmpty=!isPending&&!isError&&itemIds.length===0;// The store (entityMap) is filled in an effect that runs AFTER render, so on\n// a filter change there is a frame where `data` already holds the new page\n// (itemIds > 0) but the store-derived `items` is still empty. Rendering the\n// loaded list in that frame yields an empty, content-less container that\n// collapses to a bare 100dvh below the taller skeleton -> visible hop right\n// between \"skeleton gone\" and \"new data in\". Keep the skeleton up until the\n// store has caught up so we swap skeleton -> populated list in one step.\nconst storeCatchingUp=!isPending&&!isError&&itemIds.length>0&&items.length===0;if(!mounted){return /*#__PURE__*/_jsx(\"div\",{ref:anchorRef,style:{width:\"100%\",minHeight:listMinHeight}});}// A favorites view a signed-out visitor landed on: a prompt, not a\n// fetch. The query is disabled while this holds (see `needsAuth`), so\n// this must win before the skeleton branch — a disabled query reads as\n// pending forever otherwise. Signing in flips `isLoggedIn`, this clears,\n// and the query runs.\nif(needsAuth){return /*#__PURE__*/_jsx(\"div\",{ref:anchorRef,style:{width:\"100%\",minHeight:320},children:/*#__PURE__*/_jsx(EmptyState,{title:\"Sign in to see your favorites\",text:\"The tracks you like are saved to your account.\",action:{label:\"Sign in\",onClick:()=>{void requestSoundeeAuth();}},icon:/*#__PURE__*/_jsx(\"svg\",{width:22,height:22,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:1.8,strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z\"})})})});}if(isPending||storeCatchingUp){return /*#__PURE__*/_jsx(motion.div,{ref:anchorRef,animate:{opacity:[.6,1,.6]},transition:{duration:1,repeat:Infinity,ease:\"easeInOut\"},style:{display:layout===\"grid\"?\"grid\":\"flex\",flexDirection:layout===\"list\"?\"column\":undefined,gridTemplateColumns:layout===\"grid\"?`repeat(auto-fill, minmax(${gridMinWidth}px, 1fr))`:undefined,gap,width:\"100%\",// Reserve the same 100dvh the loaded list holds while more\n// pages can arrive, so the initial skeleton -> first-page\n// swap doesn't collapse and hop.\nminHeight:listMinHeight},children:Array.from({length:Math.min(limit,10)}).map((_,i)=>renderSkeleton(i))});}if(isError){return /*#__PURE__*/_jsx(\"div\",{style:{padding:20,color:\"rgba(255,0,0,0.6)\",fontSize:12,minHeight:listMinHeight},children:\"Failed to load items.\"});}if(isEmpty){// A modest reserve, not the full one. The full reserve exists for a\n// list that is about to be tall — holding the page still while\n// skeletons swap for rows — and an empty state is the one outcome\n// that never gets tall: a screen of blank under \"No results\" reads\n// as a broken page. Not zero either, deliberately: the document\n// shrinking under the visitor's scroll position makes the browser\n// clamp it, and the whole page jumps exactly when the answer lands.\n// A few hundred pixels keeps that cushion and the footer nearby.\nconst emptyMinHeight=320;if(hasSlotContent(emptySlot)){const slot=normalizeSlot(emptySlot);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",minHeight:emptyMinHeight},children:renderSlotWithSizing(slot,{},\"catalog-empty-state\",{width:\"Fill\",height:\"Auto\"})});}return /*#__PURE__*/_jsx(\"div\",{ref:anchorRef,style:{width:\"100%\",minHeight:emptyMinHeight},children:/*#__PURE__*/_jsx(EmptyState,{title:emptyTitle,// \"Try changing your filters\" is a lie on a catalogue that\n// is simply empty, so the title stands alone there.\n// The copy and the Reset ask what the VISITOR did — a page\n// sitting on its own defaults has nothing for them to\n// undo, and offering a Reset that only restores those same\n// defaults is a button that visibly does nothing.\n// `emptyCatalogue` above stays on the raw question.\ntext:hasUserFilters(Filters,filterStore,\"pending\")?emptyText:undefined,showReset:showEmptyReset&&isGlobalFilters&&hasUserFilters(Filters,filterStore,\"pending\"),onReset:()=>Filters.resetFilters()})});}if(!shouldLoadMore){if(layout===\"grid\"){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:gridStyles}),/*#__PURE__*/_jsx(\"div\",{className:\"catalog-grid\",style:{\"--grid-min-width\":`${gridMinWidth}px`,\"--grid-gap\":`${gap}px`,minHeight:listMinHeight},children:items.map((item,index)=>/*#__PURE__*/_jsx(FadeInItem,{id:item.entityId,pendingRef:pendingFadeIdsRef,startRef:fadeStartRef,children:/*#__PURE__*/_jsx(PlaylistContext.Provider,{value:playlistId,children:renderItem(item,index,playlistId)})},item.entityId??index))})]});}return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",minHeight:listMinHeight},children:items.map((item,index)=>/*#__PURE__*/_jsx(FadeInItem,{id:item.entityId,pendingRef:pendingFadeIdsRef,startRef:fadeStartRef,style:{paddingBottom:gap},children:/*#__PURE__*/_jsx(PlaylistContext.Provider,{value:playlistId,children:renderItem(item,index,playlistId)})},item.entityId??index))});}const virtualizerMinHeight=listMinHeight;if(layout===\"grid\"){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:gridStyles}),/*#__PURE__*/_jsx(\"div\",{ref:node=>{containerRef.current=node;anchorRef.current=node;},style:{width:\"100%\",\"--grid-min-width\":`${gridMinWidth}px`,\"--grid-gap\":`${gap}px`,minHeight:frozenHeight!=null?`max(${frozenHeight}px, ${virtualizerMinHeight})`:virtualizerMinHeight,// The virtualizer re-anchors its own content; the\n// browser must not also try. Chrome's scroll\n// anchoring watches the document for layout\n// shifts, and a virtualizer swapping cells for\n// padding above the viewport is exactly the shift\n// it compensates — measured on the live site as\n// the page jumping up by the padding amount,\n// mid-scroll. Excluding the whole subtree keeps\n// the browser's anchor on the static content\n// above the list.\noverflowAnchor:\"none\"},children:/*#__PURE__*/_jsx(VirtuosoGrid,{useWindowScroll:true,data:items,endReached:()=>{if(isRestoring())return;if(hasNextPage&&!isFetchingNextPage){fetchNextPage();}},// By entity, not by position. The default keys a cell\n// by its index, so a list that loses a row at the\n// front — unliking inside Favorites — hands every\n// cell after it a different product while React keeps\n// the mounted card, and the fade below, which decides\n// once at mount, never re-decides.\ncomputeItemKey:(index,item)=>item?.entityId??index,// A grid row is a whole cover tall, so the row-sized\n// window the list uses buys nothing here: one flick\n// of the wheel clears it and lands on blank space.\n// Measured off the card itself — the cover is square\n// at column width, and the title, metadata and price\n// under it come to roughly 120px.\nincreaseViewportBy:{bottom:(gridMinWidth+120)*1.5,top:gridMinWidth+120},listClassName:\"catalog-grid\",itemContent:(index,item)=>/*#__PURE__*/_jsx(FadeInItem,{id:item.entityId,pendingRef:pendingFadeIdsRef,startRef:fadeStartRef,children:/*#__PURE__*/_jsx(PlaylistContext.Provider,{value:playlistId,children:renderItem(item,index,playlistId)})}),style:{width:\"100%\"}},`grid-${layoutKey}`)}),/*#__PURE__*/_jsx(ListFooter,{isFetchingNextPage:isFetchingNextPage,spinnerColor:spinnerColor})]});}return /*#__PURE__*/_jsx(\"div\",{ref:node=>{containerRef.current=node;anchorRef.current=node;},style:{width:\"100%\",minHeight:frozenHeight!=null?`max(${frozenHeight}px, ${virtualizerMinHeight})`:virtualizerMinHeight,// Same as the grid: only the virtualizer moves this subtree.\noverflowAnchor:\"none\"},children:/*#__PURE__*/_jsx(Virtuoso,{useWindowScroll:true,data:items,endReached:()=>{if(isRestoring())return;if(hasNextPage&&!isFetchingNextPage){fetchNextPage();}},increaseViewportBy:200,itemContent:(index,item)=>/*#__PURE__*/_jsx(FadeInItem,{id:item.entityId,pendingRef:pendingFadeIdsRef,startRef:fadeStartRef,style:{paddingBottom:gap},children:/*#__PURE__*/_jsx(PlaylistContext.Provider,{value:playlistId,children:renderItem(item,index,playlistId)})}),components:{Footer:()=>/*#__PURE__*/_jsx(ListFooter,{isFetchingNextPage:isFetchingNextPage,spinnerColor:spinnerColor})}},`list-${layoutKey}`)});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeCatalogList\",\"slots\":[\"emptySlot\"],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"CatalogListProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CatalogFiltersSource\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CatalogLayout\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CatalogInfiniteLoading\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import SoundeeWaveform from\"https://framerusercontent.com/modules/ucOncfIOoCB7bcXfAfGl/7KgIXhMeEC3oQZ3pZYpH/SoundeeWaveform.js\";import SoundeeChipList from\"https://framerusercontent.com/modules/PC57mgvaDV9A9sP8uwDw/PTfCnKrb1Id3zHIs1a79/SoundeeChipList.js\";import{DEFAULT_SEEK_TOOLTIP}from\"https://framerusercontent.com/modules/xCcUCztOE3T5z5I5xW15/OmwvQ1Xzh1uxHOSoRb1U/useSeekUi.js\";import{ROW_METRICS}from\"https://framerusercontent.com/modules/8841CNm8EKjvZRVrjFfe/IYq9trq37cXscGsUnnZL/tokens.js\";/**\n * A touch smaller than the row's meta font.\n *\n * Derived rather than its own control: this line is a footnote to the waveform,\n * not a third kind of text, and a separate font would let it drift away from\n * the subtitle it sits under. Scaling keeps the designer's Meta Font in charge.\n */function footnoteFont(font){const size=font?.fontSize;if(typeof size!==\"string\")return{...font};const match=size.match(/^([\\d.]+)([a-z%]*)$/i);if(!match)return{...font};const value=Number(match[1]);if(!Number.isFinite(value))return{...font};return{...font,fontSize:`${Math.round(value*.92*10)/10}${match[2]||\"px\"}`};}/**\n * The waveform column: the scrubber, with the track's metadata and its length\n * on one line underneath.\n *\n * Replaces the tag chips rather than joining them. Both want the row's free\n * width, and a waveform squeezed next to three chips is not a scrubber any\n * more — it is a decoration you cannot aim at.\n */export function RowWaveform({track,tokens,wave,tagTypes,maxTags}){// Just the length. The position lives in the waveform's own tooltip, which\n// reads it out where the pointer is — closer to the thing it describes than\n// a number at the end of the row, and it cannot resize the column as the\n// seconds tick over.\nconst total=track.durationFormatted??\"\";const footnote=footnoteFont(tokens.fontMeta);return /*#__PURE__*/_jsxs(\"div\",{style:{flex:\"1 1 0\",minWidth:0,display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsx(\"div\",{style:{height:wave.height,width:\"100%\"},children:/*#__PURE__*/_jsx(SoundeeWaveform,{entityID:track.entityId,waveform:{mode:wave.mode,mirror:wave.mirror,minBarHeight:wave.minBarHeight},bars:{width:wave.barWidth,gap:wave.barGap,radius:wave.barRadius},transition:wave.transition,colors:{gutter:wave.gutter,progress:wave.progress},hoverEnabled:true,hover:{progress:wave.hover,intent:wave.intent,showIntent:true},tooltipVisible:wave.tooltipVisible,tooltip:{...DEFAULT_SEEK_TOOLTIP,placement:wave.tooltipPlacement,background:wave.tooltipBackground,text:wave.tooltipText,radius:Math.min(tokens.radius,8)},playhead:{show:wave.playhead,width:wave.playheadWidth,color:wave.playheadColor,overshoot:0}})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"baseline\",gap:ROW_METRICS.actionGap,minWidth:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{flex:\"1 1 0\",minWidth:0},children:tagTypes.length>0&&/*#__PURE__*/_jsx(SoundeeChipList,{entityID:track.entityId,chipTypes:tagTypes,itemLimit:\"auto\",maxChips:maxTags,showRemaining:false,truncate:true,gap:4,textStyle:{font:footnote,color:tokens.textSecondary,// Non-breaking spaces: the chip list drops its\n// gap to zero as soon as a separator is set, and\n// plain spaces inside the separator's own\n// inline-flex box collapse.\nseparator:\"\\xa0\\xb7\\xa0\"}})}),wave.durationShow!==false&&total&&/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,whiteSpace:\"nowrap\",fontVariantNumeric:\"tabular-nums\",...footnote,// The Font control wins outright when set; unset it\n// is undefined and the footnote above stands.\n...wave.durationFont,color:wave.durationColor??tokens.textSecondary},children:total})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"RowWaveform\":{\"type\":\"reactComponent\",\"name\":\"RowWaveform\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{RenderTarget}from\"framer\";import{RowMenu}from\"https://framerusercontent.com/modules/jUfrK8MfKpQBn73ZLkel/5WdC3mQvr4k7HE5fMdUV/RowMenu.js\";import{RowWaveform}from\"https://framerusercontent.com/modules/5uHxf6kMtFQiU1wjf3HI/yKbmX5Wiq5g3eC9nonnw/RowWaveform.js\";import SoundeeChipList from\"https://framerusercontent.com/modules/PC57mgvaDV9A9sP8uwDw/PTfCnKrb1Id3zHIs1a79/SoundeeChipList.js\";import SoundeeArtwork from\"https://framerusercontent.com/modules/SvQ80p4cAsd88JPYWgze/Qq09ALzx6F4r8Yo3Oux8/SoundeeArtwork.js\";import{buildChipData}from\"https://framerusercontent.com/modules/RHDRA0LlqBZ48LGdAjXC/8yxeMZ17mAoc8ZwH3FqA/build_chip_data.js\";import{useLikeToggle}from\"https://framerusercontent.com/modules/JC0a9KKMuPydWQTekyia/VnSJUFmB47W5OenDDwUt/like.js\";import{playEntity,usePlaylistContext}from\"https://framerusercontent.com/modules/xHhQmu9KUyaDJlvQ1REJ/bWd9qzndMaNhQDLTwfIv/playlist.js\";import{pauseTrack,resumeTrack,usePlayerSelector}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{useAddToCart}from\"https://framerusercontent.com/modules/RQ0otqKV2TW3jegGju98/nnX4ZDN5ocKeDKC0tola/cart.js\";import{useStoreCurrency}from\"https://framerusercontent.com/modules/W0ZcNXEfQdPU6fsCwczm/PsAzEIjzMNTtcMNXjRwU/currency.js\";import{formatPrice}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{CmsLink}from\"https://framerusercontent.com/modules/W9fjsr5lFdL2bnlC2Asr/kcV7c8GVsKn0YK9iXBRH/cms_link_slot.js\";import{canDemoDownload}from\"https://framerusercontent.com/modules/SS5orfCMcKgfbITH48SC/eC2z6QlmsUuqPjh2EMil/entity_capabilities.js\";import{useTrackIsNewDays}from\"https://framerusercontent.com/modules/1C0GagjgfuDFRJ9FgBvQ/vA2eEs3TA2I41S4tjUXn/propage_config.js\";import{openSoundeeOverlay}from\"https://framerusercontent.com/modules/JWE25h6PrJ9N8RSe2d8l/rwQ7b5YTPb3c7KuBqZJd/open_overlay.js\";import{buildCmsUrlFromBasePath}from\"https://framerusercontent.com/modules/wnrXHoohp8XHWajzV5xv/PrYNsbjSxzfzlBSz8giZ/cms_base_path.js\";import{HoverButton,mixToward,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";const ROW_CLASS=\"soundee-track-row\";const ROW_STYLE_ID=\"soundee-track-row-hover\";/**\n * The row's hover background, in CSS rather than in React.\n *\n * It used to be `useState`, and it cost a full re-render of the row on every\n * mouseenter and mouseleave — including `RowWaveform`, which is not memoised\n * and rebuilds the whole canvas-backed waveform underneath it. Dragging the\n * pointer down a list of thirty rows fired sixty of those, which is what made\n * the highlight stutter. Hovering is a paint, so the browser should own it.\n *\n * `!important` is deliberate: the base colour stays an inline style so a\n * server-rendered row is never briefly transparent, and only `!important`\n * outranks an inline style.\n */function ensureRowHoverStyles(){if(typeof document===\"undefined\")return;if(document.getElementById(ROW_STYLE_ID))return;const style=document.createElement(\"style\");style.id=ROW_STYLE_ID;style.textContent=`\n        .${ROW_CLASS}:hover {\n            background: var(--sndee-row-hover) !important;\n        }\n    `;document.head.appendChild(style);}import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{ROW_METRICS,DEFAULT_ROW_PADDING}from\"https://framerusercontent.com/modules/8841CNm8EKjvZRVrjFfe/IYq9trq37cXscGsUnnZL/tokens.js\";/**\n * Whether Framer's Border control has been given anything that paints.\n *\n * Width, not colour: the control sends `borderWidth` for a uniform border but\n * swaps to per-side keys the moment the designer splits it, and never both. A\n * check on `borderWidth` alone therefore reads a split border as unset — the\n * ring would quietly keep using the old colour token instead.\n */function hasStroke(value){if(!value)return false;return(value.borderWidth??0)>0||(value.borderTopWidth??0)>0||(value.borderRightWidth??0)>0||(value.borderBottomWidth??0)>0||(value.borderLeftWidth??0)>0;}/** A badge is one word; wrapping it is never the right answer. */const NO_BADGE_WRAP={whiteSpace:\"nowrap\",textTransform:\"uppercase\"};const selectEntityId=s=>s.entityId;const selectIsPlaying=s=>s.isPlaying;/**\n * The finished row rendered when no Row design is connected.\n *\n * Reads the same props a designer's template would receive, so switching\n * between built-in and custom is a slot connection, not a rebuild.\n *//**\n * Whether this entity has any of `types` at all.\n *\n * The chip list renders nothing for an entity without the configured metadata,\n * but a wrapper reserving flex space around it still leaves a hole in the row.\n * Asking for a single chip is enough to know, and it goes through the same\n * builder so the answer can't disagree with what gets rendered.\n */function useHasMetadata(track,types,isCanvas){const typesKey=types.join(\"\\x01\");return React.useMemo(()=>{if(!types.length)return false;// Canvas preview entities are hand-built and carry no `_raw`, while the\n// chip list shows its own mock chips there. Gating on real data would\n// hide the very thing the designer is trying to style.\nif(isCanvas)return true;const raw=track._raw;if(!raw)return false;return buildChipData(raw,types,1).length>0;// eslint-disable-next-line react-hooks/exhaustive-deps\n},[track,typesKey,isCanvas]);}export function BuiltInTrackRow({track,index,tokens,chipTokens,waveTokens,middle,playTokens,columns,subtitleTypes,tagTypes,maxTags,titleGap,columnGap,titleWidth,titleFill,rowLayout,detailsUrl}){// Read here rather than taking it as a prop: the row is rendered from three\n// places (list, grid, canvas preview) and one of them forgetting to pass it\n// would make the canvas fire real plays and likes.\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const metrics=ROW_METRICS;// Not a narrower desktop row — a different arrangement. Index, play button,\n// BPM and chips are dropped rather than squeezed, the cover doubles as the\n// play control, and Free loses its label. Set this per Framer breakpoint.\nconst isMobile=rowLayout===\"Mobile\";const playlistId=usePlaylistContext();const activeEntityId=usePlayerSelector(selectEntityId);const playing=usePlayerSelector(selectIsPlaying);ensureRowHoverStyles();const isActive=track.entityId===activeEntityId;const isPlaying=isActive&&playing;const hasSubtitle=useHasMetadata(track,subtitleTypes,isCanvas);const hasTags=useHasMetadata(track,tagTypes,isCanvas);const{liked,toggle:toggleLikeWithAuth}=useLikeToggle(track.entityId,{isCanvas});// `variant` carries the Sold / Unavailable / InCart / Loading rules that\n// already exist in the cart hook — restating them here is how the row and\n// the cart button end up disagreeing about what is buyable.\nconst{onClick:addToCart,variant:liveCartVariant}=useAddToCart(track.entityId);// Canvas preview entities never reach the entity store, so the hook finds\n// no status and reports Unavailable for every row — which would make the\n// buy button impossible to style. Treat the canvas as a normal for-sale\n// track; the real states still apply on the published site.\nconst cartVariant=isCanvas?\"Default\":liveCartVariant;// The store's own symbol, not a hardcoded dollar: a euro store was showing\n// its prices in the wrong currency on the buy button alone.\nconst{symbol:currency}=useStoreCurrency();// A CMS probe gives the producer's own detail page and follows a rename;\n// the Soundee route is the floor when none is placed.\nconst href=buildCmsUrlFromBasePath(track.cmsSlug??\"\")||detailsUrl;function handlePlay(event){event.stopPropagation();if(isCanvas)return;if(isActive){if(playing)pauseTrack();else resumeTrack();return;}playEntity(track.entityId,playlistId);}function handleLike(event){event.stopPropagation();toggleLikeWithAuth();}function handleDownload(event){event.stopPropagation();if(isCanvas)return;openSoundeeOverlay({name:\"download\",withEntity:true,entityId:track.entityId});}// The store decides how long \"new\" lasts; we only compare against it. No\n// window means the setting is missing or still loading, and a badge that\n// guesses would be wrong on every track at once.\nconst newDays=useTrackIsNewDays();const isNew=React.useMemo(()=>{if(isCanvas)return true;if(!newDays||!track.created)return false;const ageDays=(Date.now()/1e3-track.created)/86400;return ageDays>=0&&ageDays<=newDays;},[isCanvas,newDays,track.created]);const price=track.minLicensePrice??track.price;const pill={display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:6,height:tokens.buttonHeight,// Fixed footprint so $9 and $129 sit in the same column and the heart\n// and menu after them never move between rows.\nminWidth:isMobile?76:metrics.actionWidth,padding:\"0 12px\",borderRadius:tokens.buttonRadius,border:`1px solid ${tokens.accent}`,background:\"transparent\",color:tokens.accent,cursor:\"pointer\",whiteSpace:\"nowrap\",...tokens.fontButton};const iconButton={display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:tokens.buttonHeight,height:tokens.buttonHeight,borderRadius:tokens.buttonRadius,border:\"none\",background:\"transparent\",color:tokens.textSecondary,cursor:\"pointer\"};// One set of hover rules for the whole row, so the heart, the menu and the\n// two pills cannot end up reacting differently to the same gesture.\nconst iconHover={background:tint(tokens.textPrimary,10),color:tokens.textPrimary};const outlineHover={background:tint(tokens.accent,14)};const filledHover={background:mixToward(tokens.accent,tokens.accentText,16)};// One representation for both states. Mixing the `border` shorthand with\n// longhands across a state change leaves React clearing half of it, which is\n// how these buttons lost their outline after a hover once before.\n// Longhands on both sides of the swap. Mixing the `border` shorthand with\n// longhands across a state change leaves React clearing half of it, which is\n// how these buttons lost their outline after a hover once before.\nconst playRing=hasStroke(playTokens.stroke)?{borderStyle:\"solid\",...playTokens.stroke}:{borderStyle:\"none\"};// Its own border, not the resting one recoloured — but falling back to the\n// resting one when it has no width, so an active ring can never be the only\n// thing missing.\nconst activeRing=hasStroke(playTokens.activeStroke)?{borderStyle:\"solid\",...playTokens.activeStroke}:playRing;const activePlayStyle={background:playTokens.activeBackground,...activeRing,color:playTokens.activeIcon};return /*#__PURE__*/_jsxs(\"div\",{className:ROW_CLASS,style:{display:\"flex\",alignItems:\"center\",gap:isMobile?Math.min(columnGap,10):columnGap,padding:tokens.padding??DEFAULT_ROW_PADDING,borderRadius:tokens.radius,border:`1px solid ${tokens.border}`,background:isActive?tokens.surfaceActive:tokens.surface,// Active outranks hover: a pointer should not be able to hide which\n// track is loaded, so an active row hovers to its own colour.\n[\"--sndee-row-hover\"]:isActive?tokens.surfaceActive:tokens.surfaceHover,transition:\"background 150ms ease\",boxSizing:\"border-box\",width:\"100%\",minWidth:0},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:metrics.leadGap,flex:isMobile||titleFill?\"1 1 0\":`0 1 ${titleWidth}px`,minWidth:0},children:[columns.index&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{width:metrics.indexWidth,flexShrink:0,textAlign:\"right\",color:tokens.textSecondary,...tokens.fontMeta},children:index}),/*#__PURE__*/_jsxs(\"div\",{onClick:handlePlay,style:{position:\"relative\",flexShrink:0,width:metrics.artwork,height:metrics.artwork,cursor:isCanvas?\"default\":\"pointer\"},children:[/*#__PURE__*/_jsx(SoundeeArtwork,{entityID:track.entityId,imageSize:\"Small\",artworkColor:track.artworkColor,title:track.title,borderRadius:`${Math.min(tokens.radius,10)}px`,border:tokens.coverBorder??true,loading:\"lazy\",style:{width:\"100%\",height:\"100%\"}}),columns.newBadge&&isNew&&// On the cover, not in the row: it belongs to the release\n// rather than to a column, and anywhere else it would take\n// width from the title on every new track.\n/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",top:4,left:4,padding:\"2px 6px\",borderRadius:999,background:tokens.newBackground,color:tokens.newText,fontSize:10,fontWeight:700,letterSpacing:\"0.04em\",lineHeight:1.2,pointerEvents:\"none\",...NO_BADGE_WRAP},children:tokens.newLabel})]}),columns.play&&!isMobile&&/*#__PURE__*/_jsx(HoverButton,{onClick:handlePlay,\"aria-label\":isPlaying?\"Pause\":\"Play\",// Hover borrows the active paint rather than inventing a third\n// colour: hovering is a preview of what clicking makes true.\nhoverStyle:activePlayStyle,style:{...iconButton,width:metrics.playSize,height:metrics.playSize,flexShrink:0,borderRadius:playTokens.radius,...playRing,background:playTokens.background,color:playTokens.icon,...isActive?activePlayStyle:null},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:isPlaying?\"pause\":\"play\",size:14})}),/*#__PURE__*/_jsxs(\"div\",{style:{// Takes whatever the block has left after the number, cover\n// and play button, and ellipsises rather than pushing them.\nflex:\"1 1 0\",minWidth:0,display:\"flex\",flexDirection:\"column\",gap:titleGap},children:[/*#__PURE__*/_jsx(CmsLink,{entityId:track.entityId,label:track.title,style:{color:isActive?tokens.accent:tokens.textPrimary,textDecoration:\"none\",display:\"block\",overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",...tokens.fontTitle},children:track.title}),columns.subtitle&&hasSubtitle&&// Reuses the metadata component rather than joining strings:\n// truncation and per-type limits already live there, and the\n// subtitle then behaves the same as a designer's own chip\n// list elsewhere on the page.\n/*#__PURE__*/_jsx(SoundeeChipList,{entityID:track.entityId,chipTypes:subtitleTypes,// Fit-width rather than a fixed count: a subtitle should\n// fill the space it has and stop, not always show four\n// names regardless of how much room there is. No +N —\n// it is a byline, and a count there reads as an action.\nitemLimit:\"auto\",maxChips:8,maxPerType:0,showRemaining:false,truncate:true,gap:4,textStyle:{font:tokens.fontMeta,color:tokens.textSecondary,separator:\",\"}})]})]}),columns.bpm&&!isMobile&&middle===\"Tags\"&&// Fixed width and always rendered, even without a tempo: the\n// column has to start at the same x on every row or the chips\n// and actions after it wander. Shows N/A rather than 0, which\n// would read as an actual tempo.\n/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,width:52,color:tokens.textSecondary,whiteSpace:\"nowrap\",lineHeight:1.15,...tokens.fontMeta},children:track.bpm?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{children:track.bpm}),/*#__PURE__*/_jsx(\"div\",{children:\"BPM\"})]}):/*#__PURE__*/_jsx(\"div\",{style:{opacity:.5},children:\"N/A\"})}),middle===\"Waveform\"&&!isMobile&&/*#__PURE__*/_jsx(RowWaveform,{track:track,tokens:tokens,wave:waveTokens,tagTypes:tagTypes,maxTags:maxTags}),middle===\"Tags\"&&columns.chips&&hasTags&&!isMobile&&// Takes the free space rather than a fixed share: the chip\n// list measures its own width and collapses the overflow into\n// a +N, so the more room it gets the more it shows.\n/*#__PURE__*/_jsx(\"div\",{style:{// Both filling would split the slack down the middle and\n// the title would not actually get wider, which is the\n// whole point of the toggle. Chips size to content then.\nflex:titleFill?\"0 1 auto\":\"1 1 0\",minWidth:0,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(SoundeeChipList,{entityID:track.entityId,chipTypes:tagTypes,itemLimit:\"auto\",maxChips:maxTags,showRemaining:true,gap:6,textStyle:{font:tokens.fontMeta,color:chipTokens.text,separator:\"\"},chipStyle:{height:tokens.buttonHeight,padding:\"0 12px\",borderRadius:chipTokens.radius,border:`1px solid ${chipTokens.border}`,background:chipTokens.background,color:chipTokens.text}})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",// The menu sits flush against the heart — two icon buttons\n// side by side already have their own padding between them,\n// and a gap on top of that reads as two separate controls\n// rather than the pair they are. Everything before the menu\n// keeps its spacing, in the group below.\ngap:0,flexShrink:0,marginLeft:\"auto\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:metrics.actionGap},children:[columns.free&&// Kept in the layout even when this entity has no demo, so\n// the price column does not jump left on those rows.\n(canDemoDownload(track)?/*#__PURE__*/_jsxs(HoverButton,{onClick:handleDownload,\"aria-label\":\"Free download\",hoverStyle:outlineHover,style:isMobile?{// Icon only: at this width the word\n// costs more than it explains.\n...pill,minWidth:tokens.buttonHeight,width:tokens.buttonHeight,padding:0}:pill,children:[/*#__PURE__*/_jsx(SoundeeIcon,{name:\"download\",size:14}),!isMobile&&\"Free\"]}):/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{width:isMobile?tokens.buttonHeight:metrics.actionWidth,height:tokens.buttonHeight,flexShrink:0}})),columns.price&&/*#__PURE__*/_jsxs(HoverButton,{onClick:cartVariant===\"Sold\"||cartVariant===\"Unavailable\"?undefined:addToCart,disabled:cartVariant===\"Sold\"||cartVariant===\"Unavailable\",// In-cart is a filled button that no longer buys\n// anything, so it keeps the fill but drops the hover.\ninert:cartVariant===\"InCart\",hoverStyle:filledHover,style:{...pill,// Sold and unavailable read as state, not as an\n// action, so they drop the accent fill — but they\n// keep the slot so the row after them doesn't move.\nbackground:cartVariant===\"Sold\"||cartVariant===\"Unavailable\"?\"transparent\":tokens.accent,color:cartVariant===\"Sold\"||cartVariant===\"Unavailable\"?tokens.textSecondary:tokens.accentText,border:`1px solid ${cartVariant===\"Sold\"||cartVariant===\"Unavailable\"?tokens.border:tokens.accent}`,cursor:cartVariant===\"Sold\"||cartVariant===\"Unavailable\"?\"default\":\"pointer\",opacity:cartVariant===\"Loading\"?.6:1},children:[cartVariant===\"Sold\"||cartVariant===\"Unavailable\"?null:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"cart\",size:14}),cartVariant===\"Sold\"?\"Sold\":cartVariant===\"Unavailable\"?\"N/A\":cartVariant===\"InCart\"?\"In Cart\":price!=null?formatPrice(price,currency):\"N/A\"]}),columns.like&&/*#__PURE__*/_jsx(HoverButton,{onClick:handleLike,\"aria-label\":liked?\"Unlike\":\"Like\",\"aria-pressed\":liked,hoverStyle:{background:tint(tokens.accent,12),color:tokens.accent},style:{...iconButton,color:liked?tokens.accent:tokens.textSecondary},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"heart\",size:18,filled:liked})})]}),/*#__PURE__*/_jsx(RowMenu,{track:track,tokens:tokens,subtitleTypes:subtitleTypes,titleGap:titleGap,liked:liked,onToggleLike:toggleLikeWithAuth,isCanvas:isCanvas,isMobile:isMobile,trigger:/*#__PURE__*/_jsx(HoverButton,{\"aria-label\":\"More\",hoverStyle:iconHover,style:iconButton,children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"more\",size:18})})})]})]});}/**\n * The row, with every value replaced by a bar.\n *\n * It takes the same props the row does and lays itself out the same way —\n * columns, gaps, title width, waveform or tags — because a placeholder that is\n * merely row-height still moves everything sideways when the data lands. The\n * cover, the play button and each action sit exactly where their real\n * counterparts will.\n */export function BuiltInRowSkeleton({tokens,columnGap,chipTokens=DEFAULT_SKELETON_CHIPS,waveTokens,playTokens,middle=\"Tags\",columns,titleGap=2,titleWidth=430,titleFill=false,rowLayout=\"Desktop\",index=0}){const metrics=ROW_METRICS;const isMobile=rowLayout===\"Mobile\";const show=columns??FULL_SKELETON_COLUMNS;const bar=(width,height,opacity=1)=>({width,height,borderRadius:Math.min(height/2,6),background:tokens.skeleton,opacity,flexShrink:0});const block=radius=>({borderRadius:radius,background:tokens.skeleton,flexShrink:0});// Three widths, cycled. Every title the same length is the one thing that\n// makes a stack of placeholders look like a table rather than a list.\nconst titleRun=[72,58,84][index%3];const subtitleRun=[44,52,38][index%3];return /*#__PURE__*/_jsxs(\"div\",{\"aria-hidden\":true,style:{display:\"flex\",alignItems:\"center\",gap:isMobile?Math.min(columnGap,10):columnGap,padding:tokens.padding??DEFAULT_ROW_PADDING,borderRadius:tokens.radius,border:`1px solid ${tokens.border}`,background:tokens.surface,boxSizing:\"border-box\",width:\"100%\",minWidth:0},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:metrics.leadGap,flex:isMobile||titleFill?\"1 1 0\":`0 1 ${titleWidth}px`,minWidth:0},children:[show.index&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{width:metrics.indexWidth,display:\"flex\",justifyContent:\"flex-end\",flexShrink:0},children:/*#__PURE__*/_jsx(\"div\",{style:bar(14,10,.7)})}),/*#__PURE__*/_jsx(\"div\",{style:{...block(Math.min(tokens.radius,10)),width:metrics.artwork,height:metrics.artwork}}),show.play&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{...block(playTokens?.radius??999),width:metrics.playSize,height:metrics.playSize,opacity:.7}}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:\"1 1 0\",minWidth:0,display:\"flex\",flexDirection:\"column\",gap:titleGap+4},children:[/*#__PURE__*/_jsx(\"div\",{style:bar(`${titleRun}%`,12)}),show.subtitle&&/*#__PURE__*/_jsx(\"div\",{style:bar(`${subtitleRun}%`,10,.6)})]})]}),show.bpm&&!isMobile&&middle===\"Tags\"&&/*#__PURE__*/_jsxs(\"div\",{style:{width:52,flexShrink:0,display:\"flex\",flexDirection:\"column\",gap:4},children:[/*#__PURE__*/_jsx(\"div\",{style:bar(30,10)}),/*#__PURE__*/_jsx(\"div\",{style:bar(26,10,.6)})]}),middle===\"Waveform\"&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{flex:\"1 1 0\",minWidth:0,height:waveTokens?.height??34,borderRadius:4,background:tokens.skeleton,opacity:.5}}),middle===\"Tags\"&&show.chips&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{flex:titleFill?\"0 1 auto\":\"1 1 0\",minWidth:0,display:\"flex\",gap:6,overflow:\"hidden\"},children:[64,48,56].map((width,i)=>/*#__PURE__*/_jsx(\"div\",{style:{...block(chipTokens.radius),width,height:tokens.buttonHeight,opacity:.6}},i))}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:metrics.actionGap,flexShrink:0,marginLeft:\"auto\"},children:[show.free&&/*#__PURE__*/_jsx(\"div\",{style:{...block(tokens.buttonRadius),width:isMobile?tokens.buttonHeight:metrics.actionWidth,height:tokens.buttonHeight,opacity:.7}}),show.price&&/*#__PURE__*/_jsx(\"div\",{style:{...block(tokens.buttonRadius),width:isMobile?tokens.buttonHeight:metrics.actionWidth,height:tokens.buttonHeight}}),show.like&&/*#__PURE__*/_jsx(\"div\",{style:{...block(tokens.buttonRadius),width:tokens.buttonHeight,height:tokens.buttonHeight,opacity:.7}}),/*#__PURE__*/_jsx(\"div\",{style:{...block(tokens.buttonRadius),width:tokens.buttonHeight,height:tokens.buttonHeight,opacity:.7}})]})]});}/** Everything on, for a caller that has no column settings to hand. */const FULL_SKELETON_COLUMNS={// No badge: a placeholder cannot know whether the track it stands in for\n// is new, and a badge that appears on load would move the row.\nnewBadge:false,index:true,play:true,subtitle:true,bpm:true,chips:true,free:true,price:true,like:true};const DEFAULT_SKELETON_CHIPS={radius:999};\nexport const __FramerMetadata__ = {\"exports\":{\"BuiltInTrackRowProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BuiltInRowSkeleton\":{\"type\":\"reactComponent\",\"name\":\"BuiltInRowSkeleton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"BuiltInTrackRow\":{\"type\":\"reactComponent\",\"name\":\"BuiltInTrackRow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// Global, persisted catalog layout mode. A SoundeeLayoutToggle writes the mode\n// here and any SoundeeTracksList with Layout Mode \"Auto\" reads it, even\n// when toggle and list are not nested. Persisted to localStorage and synced\n// across tabs.\n//\n// Hydration: the live client snapshot is seeded synchronously from localStorage\n// at module load, while the server snapshot stays `null` so the SSR/hydration\n// render still matches the server markup. useSyncExternalStore reconciles the\n// difference before paint, so the very first client render (including the list\n// skeletons) already reflects the stored mode instead of flashing the default.\n// `hydrateCatalogMode()` then only wires up the cross-tab `storage` listener.\nimport{createExternalStore}from\"https://framerusercontent.com/modules/UH4WTHe23jjVFZ4QN9aB/pXMXEE6fEy1994ZzJknr/create_store.js\";const STORAGE_KEY=\"snd_catalog_layout\";const SCHEMA_VERSION=1;export function isCatalogMode(value){return value===\"large\"||value===\"minimal\"||value===\"card\";}/**\n * On `globalThis`, for the same reason the filter stores and the filter\n * context are: Framer serves every component from its own module URL, so the\n * toggle, the button and the state component each held their own copy of this\n * store. Toggling then wrote localStorage and the writer's own copy, while the\n * component actually drawing the layout kept the value it started with — the\n * switch only appeared to work after a reload.\n *\n * First module to build it wins and everyone else gets that one.\n */function getLayoutContext(){const scope=globalThis;const key=\"__soundeeCatalogLayout__\";const existing=scope[key];if(existing)return existing;const created={// Client snapshot reads localStorage now (window-guarded, so null on\n// the server); the explicit server snapshot stays null for hydration\n// safety.\nstore:createExternalStore({current:loadCatalogMode(),fallback:null},{current:null,fallback:null}),hydrated:false};scope[key]=created;return created;}function loadCatalogMode(){try{if(typeof window===\"undefined\")return null;const raw=window.localStorage.getItem(STORAGE_KEY);if(!raw)return null;const parsed=JSON.parse(raw);if(parsed.version!==SCHEMA_VERSION)return null;return isCatalogMode(parsed.mode)?parsed.mode:null;}catch{return null;}}function saveCatalogMode(mode){try{if(typeof window===\"undefined\")return;const payload={version:SCHEMA_VERSION,mode};window.localStorage.setItem(STORAGE_KEY,JSON.stringify(payload));}catch{}}export function setCatalogMode(mode){const store=getLayoutContext().store;store.setState({...store.getState(),current:mode});saveCatalogMode(mode);}/** See `fallback`. Idempotent, so a list may call it on every render pass. */export function setCatalogModeDefault(mode){const store=getLayoutContext().store;const state=store.getState();if(state.fallback===mode)return;store.setState({...state,fallback:mode});}export function getCatalogMode(){const state=getLayoutContext().store.getState();return state.current??state.fallback;}// Lazy, run-once hydration. The stored value is already seeded into the client\n// snapshot at module load, so this only registers a single cross-tab `storage`\n// listener (and re-syncs once in case localStorage changed between module load\n// and mount). Safe to call from any mount effect.\nexport function hydrateCatalogMode(){const ctx=getLayoutContext();if(ctx.hydrated)return;ctx.hydrated=true;if(typeof window===\"undefined\")return;const stored=loadCatalogMode();if(stored&&stored!==ctx.store.getState().current){ctx.store.setState({...ctx.store.getState(),current:stored});}window.addEventListener(\"storage\",event=>{if(event.key!==STORAGE_KEY)return;ctx.store.setState({...ctx.store.getState(),current:loadCatalogMode()});});}/** The effective mode: the visitor's choice, else the producer's default. */export function useCatalogMode(){return getLayoutContext().store.useSelector(s=>s.current??s.fallback);}\nexport const __FramerMetadata__ = {\"exports\":{\"useCatalogMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setCatalogModeDefault\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CatalogMode\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCatalogMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hydrateCatalogMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isCatalogMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setCatalogMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./catalog_layout.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r7 (2026-08-25, v4 hardening) — rebuild for the\n// dual-major cache option (gcTime/cacheTime) and the NaN-proof page counter\n// in api/{tracks,kits,services}.tsx. On v4 `undefined + 1` made nextPage NaN,\n// which is not nullish, so the list would ask for page=NaN forever.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r5 (2026-08-25, engine fix) — rebuild for the\n// corrected dynamic import in lib/audio/engine.tsx (../store -> ../../store).\n// That path resolved nowhere, which is the code error that blocked Update in\n// the Starter. Importers do not rebuild when only an imported file changes.\n// soundee-core republish (2026-08-25) — rebuild so this component picks up the\n// shared playlist runtime (store/playlist.tsx moved onto globalThis). Without a\n// rebuild it keeps its own inlined copy and playback state stays split.\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{fetchTracks}from\"https://framerusercontent.com/modules/QPiVLQ8pWtFwIWe9M71m/hbdnbW4sKeMG2B4atCYP/tracks.js\";import{METADATA_TYPE_OPTIONS,METADATA_TYPE_TITLES}from\"https://framerusercontent.com/modules/RHDRA0LlqBZ48LGdAjXC/8yxeMZ17mAoc8ZwH3FqA/build_chip_data.js\";import{upsertTracks}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{useLikeStore}from\"https://framerusercontent.com/modules/FCo7CeK86NShihctg8Ql/5vsld33GwD57YYnnUFr3/likes.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/S0Kmw9574uaRNxylK8em/config.js\";import SoundeeResultCount from\"https://framerusercontent.com/modules/JalUuqDS2H6xZO4J8HK1/4duaiIv8A2pkwdWjHYJD/SoundeeResultCount.js\";import{buildEntityUrl,resolveEntityUrlTemplates}from\"https://framerusercontent.com/modules/3k8Y3cHpFSqmVB6KTjnO/4pnR3qwdQXwXRlbiSoxC/entity_url.js\";import{DEMO_TRACK_ENTITY}from\"https://framerusercontent.com/modules/y33CnMbsLsRpKYyVdkip/ovJVzRba4ULeCAGmCMSq/entity_actions.js\";import SoundeeCatalogList from\"https://framerusercontent.com/modules/ZBw6ZYaIoQz2zc8x4Vrj/W81l2DiiKWPHaDSOzPZt/SoundeeCatalogListStandalone.js\";import{BuiltInRowSkeleton,BuiltInTrackRow}from\"https://framerusercontent.com/modules/mSOthu4GPi96rh5kPayq/shFILx027ghCI8lX0yAI/BuiltInTrackRow.js\";import{BuiltInProductCard,BuiltInProductCardSkeleton}from\"https://framerusercontent.com/modules/uq7DruyCvJdeAn2MHpta/3WYlmWBJ6D4W2Jez4sXd/BuiltInProductCard.js\";import{hydrateCatalogMode,setCatalogModeDefault,useCatalogMode}from\"https://framerusercontent.com/modules/tSe6igB2HLAgjgBlJf8z/iDFJBF8W0owss4QQBa89/catalog_layout.js\";import{chipTokenControls,DEFAULT_CHIP_TOKENS,DEFAULT_WAVE_TOKENS,waveTokenControls,DEFAULT_PLAY_TOKENS,playTokenControls,DEFAULT_ROW_COLUMNS,DEFAULT_ROW_PADDING,DEFAULT_ROW_TOKENS,rowColumnControls,rowStyleHidden,rowTokenControls}from\"https://framerusercontent.com/modules/8841CNm8EKjvZRVrjFfe/IYq9trq37cXscGsUnnZL/tokens.js\";import{applyBrand,playBrand,rowBrand,useBrandOverrides}from\"https://framerusercontent.com/modules/yD9Ys9s3cEToBITrvdLi/73etEDTq7Xf4D5LzHkb0/brand.js\";import{buildSourceParams,useExcludeTrackId,CATALOG_SOURCE_OPTIONS}from\"https://framerusercontent.com/modules/vU9ONunXtgjMhgntbHBm/xMctimlGPN1F1VrKhWj7/catalog_source.js\";export const DEFAULT_CONTENT={source:\"Tracks\",playlistId:\"\",initialFilters:\"\",excludeId:0,filtersSource:\"Global Filters\"};export const DEFAULT_METADATA={subtitleTypes:[\"artists\",\"key\"],tagTypes:[\"genre\",\"moods\",\"tags\"],maxTags:3};export const DEFAULT_SPACING={titleFill:false,titleWidth:430,titleGap:2,columnGap:16};export const DEFAULT_LIST={defaultLayout:\"List\",showCount:true,gap:8,minCardWidth:240,cardGap:16,infiniteLoading:\"On\",limit:10,spinnerColor:\"rgba(255,255,255,0.55)\",minHeightOffset:0};export const DEFAULT_SCROLLING={scrollTargetId:\"\",scrollOffset:0};function getOrigin(){return typeof window===\"undefined\"?undefined:window.location.origin;}// Canvas-only. DEMO_TRACK_ENTITY carries no artwork at all, which left twelve\n// blank squares on the canvas and made the row impossible to judge; a rotating\n// colour stands in for the real thing.\nconst PREVIEW_ARTWORK_COLORS=[\"#8a5a3c\",\"#3c5a8a\",\"#5a3c8a\",\"#3c8a5a\",\"#8a3c5a\",\"#7a7a3c\"];const PREVIEW_TRACKS=Array.from({length:12},(_,index)=>({...DEMO_TRACK_ENTITY,artworkColor:PREVIEW_ARTWORK_COLORS[index%PREVIEW_ARTWORK_COLORS.length],entityId:9e3+index,trackId:9e3+index,title:[\"Midnight Bounce\",\"Golden Hour\",\"Cold Streets\",\"Sunday Drive\",\"Late Night Keys\",\"Ocean View\",\"No Signal\",\"Blue Smoke\",\"After Party\",\"Neon Soul\",\"Lost Files\",\"Velvet Drums\"][index],duration:120+index*7,durationFormatted:`${2+Math.floor(index/6)}:${String(8+index*7%52).padStart(2,\"0\")}`,genre:index%2===0?\"Hip Hop\":\"R&B\",bpm:72+index*4,keyString:index%2===0?\"C Minor\":\"F# Minor\",price:29.99+index,minLicensePrice:29.99+index,urlSlug:`demo-track-${index+1}`}));const TrackRowWrapper=/*#__PURE__*/React.memo(function TrackRowWrapper({track,index,rowStyle,chipTokens,waveTokens,middle,playTokens,columns,subtitleTypes,tagTypes,maxTags,titleGap,columnGap,titleWidth,titleFill,rowLayout}){const cfg=useSoundeeConfig();const templates=React.useMemo(()=>resolveEntityUrlTemplates(null,cfg.urlTemplates),[cfg.urlTemplates]);// The Soundee route, used only when no CMS detail page was found for this\n// track — the row prefers the producer's own page and falls back to ours.\nconst detailsUrl=React.useMemo(()=>buildEntityUrl(track,templates,getOrigin()),[templates,track]);return /*#__PURE__*/_jsx(BuiltInTrackRow,{track:track,index:index,tokens:rowStyle,chipTokens:chipTokens,waveTokens:waveTokens,middle:middle,playTokens:playTokens,columns:columns,subtitleTypes:subtitleTypes,tagTypes:tagTypes,maxTags:maxTags,titleGap:titleGap,columnGap:columnGap,titleWidth:titleWidth,titleFill:titleFill,rowLayout:rowLayout,detailsUrl:detailsUrl});});// ─── Component ────────────────────────────────────────────────────────────────\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeTracksList({source=DEFAULT_CONTENT.source,playlistId=DEFAULT_CONTENT.playlistId,initialFilters=DEFAULT_CONTENT.initialFilters,excludeId=DEFAULT_CONTENT.excludeId,filtersSource=DEFAULT_CONTENT.filtersSource,rowLayout=\"Desktop\",middle=\"Tags\",columns=DEFAULT_ROW_COLUMNS,metadata,spacing,rowStyle=DEFAULT_ROW_TOKENS,playTokens=DEFAULT_PLAY_TOKENS,chipTokens=DEFAULT_CHIP_TOKENS,waveTokens=DEFAULT_WAVE_TOKENS,list,scrolling,scrollTargetRef}){// Brand before anything else: what the producer set in SoundeeModals is\n// this component's default, and a value set here on the instance still\n// wins. Untouched SoundeeModals means untouched behaviour.\nconst brand=useBrandOverrides();rowStyle=applyBrand(DEFAULT_ROW_TOKENS,rowBrand(brand),rowStyle);playTokens=applyBrand(DEFAULT_PLAY_TOKENS,playBrand(brand),playTokens);// Merged field by field rather than defaulted whole: Framer stores an\n// object control as whatever the producer touched, so a group can arrive\n// with three of its seven keys and the rest missing.\nconst c={source,playlistId,initialFilters,excludeId,filtersSource};const meta={...DEFAULT_METADATA,...metadata};const space={...DEFAULT_SPACING,...spacing};const l={...DEFAULT_LIST,...list};const scroll={...DEFAULT_SCROLLING,...scrolling};const effectiveLimit=l.infiniteLoading===\"On\"?30:Math.max(1,Math.min(30,Math.round(l.limit)));const excludeTrackId=useExcludeTrackId(c.excludeId);const extraParams=React.useMemo(()=>buildSourceParams(c.source,{playlistId:c.playlistId,excludeTrackId}),[c.source,c.playlistId,excludeTrackId]);const selectEntitiesFn=React.useCallback(entities=>entities.tracks,[]);const getEntityIdsFn=React.useCallback(data=>data.pages.flatMap(p=>p.items.map(t=>t.entityId)),[]);// Dropping unliked rows lives in SoundeeCatalogList, which reads the\n// effective params and so covers the filter-bar toggle as well as this\n// Source. Only the cache-refresh signals stay here.\n// `serverVersion`, not `version`: this is published as the source's\n// membership version and the results count keys its query on it. The local\n// one moves the moment the heart fills, so the count refetched alongside\n// the write still in flight and got the previous number back — the same\n// one-behind the favorites badge had.\nconst{serverVersion:likeVersion}=useLikeStore();const isFavorites=c.source===\"Favorites\";const renderSkeletonFn=React.useCallback(// Matches the row's height so the swap from skeleton to data does not\n// shift the page.\ni=>/*#__PURE__*/_jsx(BuiltInRowSkeleton,{index:i,tokens:rowStyle,columnGap:space.columnGap,chipTokens:chipTokens,waveTokens:waveTokens,playTokens:playTokens,middle:middle,columns:columns,titleGap:space.titleGap,titleWidth:space.titleWidth,titleFill:space.titleFill,rowLayout:rowLayout},`skeleton-${i}`),[rowStyle,space.columnGap,chipTokens,waveTokens,playTokens,middle,columns,space.titleGap,space.titleWidth,space.titleFill,rowLayout]);const renderItemFn=React.useCallback((track,index)=>/*#__PURE__*/_jsx(TrackRowWrapper,{track:track,index:index+1,rowStyle:rowStyle,chipTokens:chipTokens,waveTokens:waveTokens,middle:middle,playTokens:playTokens,columns:columns,subtitleTypes:meta.subtitleTypes,tagTypes:meta.tagTypes,maxTags:meta.maxTags,titleGap:space.titleGap,columnGap:space.columnGap,titleWidth:space.titleWidth,titleFill:space.titleFill,rowLayout:rowLayout},track.entityId),[rowStyle,chipTokens,waveTokens,middle,playTokens,columns,meta.subtitleTypes,meta.tagTypes,meta.maxTags,space.titleGap,space.columnGap,space.titleWidth,space.titleFill,rowLayout]);// Rows or cards, from the shared catalog mode the filter bar's Layout\n// button writes. Read here rather than passed down as a prop: the button\n// and this list are two components a producer places separately, and the\n// store is what already carries the answer between them.\n//\n// `large` and `minimal` both mean rows; only `card` is the grid.\nconst catalogMode=useCatalogMode();React.useEffect(()=>{hydrateCatalogMode();},[]);// The producer's opening position, registered into the shared store so\n// the bar's toggle shows the same answer. A visitor's own choice is\n// persisted and wins; this only fills the silence before it. Layout\n// effect, not a passive one: pre-paint, so a fresh visitor's very first\n// skeleton already has the right shape instead of flashing rows for a\n// frame before the grid.\nReact.useLayoutEffect(()=>{setCatalogModeDefault(l.defaultLayout===\"Grid\"?\"card\":\"large\");},[l.defaultLayout]);// Never on a phone: a card grid there is one column of covers, which is a\n// taller, thinner version of the row with less information in it. The bar\n// hides the button on mobile for the same reason, and this is the half\n// that makes it true — the mode is shared and persisted, so someone who\n// picked cards on a desktop would otherwise carry them onto their phone.\nconst asCards=catalogMode===\"card\"&&rowLayout!==\"Mobile\";const renderCardSkeletonFn=React.useCallback(i=>/*#__PURE__*/_jsx(BuiltInProductCardSkeleton,{tokens:rowStyle,showPrice:true,index:i},`card-skeleton-${i}`),[rowStyle]);const renderCardFn=React.useCallback(track=>/*#__PURE__*/_jsx(BuiltInProductCard,{entity:track,tokens:rowStyle,playTokens:playTokens,metaTypes:meta.subtitleTypes,playable:true,// Same reasoning as the carousel: a title links where the CMS\n    // link component found a page and stays plain text where it\n    // did not, rather than guessing a route nobody built.\n    detailsUrl:\"\"},track.entityId),[rowStyle,playTokens,meta.subtitleTypes]);const listElement=/*#__PURE__*/_jsx(SoundeeCatalogList,{layout:asCards?\"grid\":\"list\",gridMinWidth:l.minCardWidth,// The switch this list can make, which nothing else here can.\n//\n// Without it the catalog list never learns that the layout moved:\n// it swaps Virtuoso for VirtuosoGrid, but the machinery built for\n// exactly this moment never fires — the container height is not\n// frozen while the new virtualizer measures, so the page collapses\n// and the scroll position lands nowhere, and the fade-in set is\n// not primed, so cards fade in again on a later scroll. That is\n// the jank and the dead scrolling, not the grid itself.\nlayoutKey:asCards?\"grid\":\"list\",filterEntityType:\"tracks\",entityPath:\"/tracks\",limit:effectiveLimit,gap:asCards?l.cardGap:l.gap,spinnerColor:l.spinnerColor,initialFilters:c.initialFilters,scrollTargetId:scroll.scrollTargetId,scrollTargetRef:scrollTargetRef,scrollOffset:scroll.scrollOffset,minHeightOffset:l.minHeightOffset,filtersSource:c.filtersSource,infiniteLoading:l.infiniteLoading,extraParams:extraParams,fetchFn:fetchTracks,upsertFn:upsertTracks,getEntityIds:getEntityIdsFn,selectEntities:selectEntitiesFn,refreshOnEntry:isFavorites,refreshVersion:likeVersion,renderSkeleton:asCards?renderCardSkeletonFn:renderSkeletonFn,renderItem:asCards?renderCardFn:renderItemFn,previewItems:PREVIEW_TRACKS});if(!l.showCount)return listElement;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",// Start, not the default stretch: a flex parent that stretches\n// its children fights a virtualizer, which needs to own its own\n// height.\nalignItems:\"flex-start\",gap:Math.max(l.gap,12),width:\"100%\",minWidth:0},children:[/*#__PURE__*/_jsx(SoundeeResultCount,{source:\"committed\",previewState:\"Default\",contentSize:{width:\"Auto\",height:\"Auto\"},countFont:rowStyle.fontTitle,countColor:rowStyle.textPrimary,nounColor:rowStyle.textSecondary}),listElement]});}SoundeeTracksList.displayName=\"Soundee Tracks List\";// Typed rather than inferred: a bare object literal widens the enums to\n// `string`, which Framer's checker rejects when the component is registered.\nconst tracksListDefaults={source:DEFAULT_CONTENT.source,playlistId:DEFAULT_CONTENT.playlistId,initialFilters:DEFAULT_CONTENT.initialFilters,excludeId:DEFAULT_CONTENT.excludeId,filtersSource:DEFAULT_CONTENT.filtersSource,rowLayout:\"Desktop\",middle:\"Tags\",columns:DEFAULT_ROW_COLUMNS,metadata:DEFAULT_METADATA,spacing:DEFAULT_SPACING,rowStyle:DEFAULT_ROW_TOKENS,playTokens:DEFAULT_PLAY_TOKENS,chipTokens:DEFAULT_CHIP_TOKENS,waveTokens:DEFAULT_WAVE_TOKENS,list:DEFAULT_LIST,scrolling:DEFAULT_SCROLLING};SoundeeTracksList.defaultProps=tracksListDefaults;/**\n * Exported so `SoundeeTracksBrowser` — the bar + tags + list bundle — can\n * spread the exact same panel instead of copying it. One definition, or the\n * two drift the way the kits and services grids once did.\n */export const tracksListPanelControls={// ── What the list loads ───────────────────────────────────────────────\nsource:{type:ControlType.Enum,title:\"Source\",options:CATALOG_SOURCE_OPTIONS,optionTitles:CATALOG_SOURCE_OPTIONS,defaultValue:DEFAULT_CONTENT.source,description:\"Which list to load. Favorites uses the signed-in visitor; Tracks browses the catalogue.\"},initialFilters:{type:ControlType.String,title:\"Filters\",placeholder:\"genre=rnb&mood=soulful\",defaultValue:DEFAULT_CONTENT.initialFilters,description:\"URL query string sent to the tracks endpoint. Bind a page parameter here to drive the list from the address.\",hidden:props=>props.source!==\"Tracks\"},playlistId:{type:ControlType.String,title:\"Playlist ID\",defaultValue:DEFAULT_CONTENT.playlistId,placeholder:\"Playlist ID\",description:\"The id of the Soundee playlist to load. Found in its address on your store.\",hidden:props=>props.source!==\"Playlist\"},excludeId:{type:ControlType.Number,title:\"Exclude\",defaultValue:DEFAULT_CONTENT.excludeId,min:0,step:1,displayStepper:false,description:\"An entity id to leave out — bind it to the current page's track so a More Beats list does not include the one being viewed. 0 leaves everything in.\"},filtersSource:{type:ControlType.Enum,title:\"Follow\",options:[\"Global Filters\",\"Initial Filters Only\"],optionTitles:[\"Filter Bar\",\"Own Filters\"],defaultValue:DEFAULT_CONTENT.filtersSource,description:\"Whether this list follows the filter bar on the page, or stays on its own query.\"},// ── The row ───────────────────────────────────────────────────────────\n// Both of these stay at the top level on purpose: they are the two things\n// set per breakpoint, and a Framer override replaces a whole object rather\n// than one field inside it.\nrowLayout:{type:ControlType.Enum,title:\"Row Layout\",options:[\"Desktop\",\"Mobile\"],optionTitles:[\"Desktop\",\"Mobile\"],defaultValue:\"Desktop\",displaySegmentedControl:true,description:\"Mobile drops the number, play button, BPM and tags, and the cover plays instead. Set this per breakpoint.\"},middle:{type:ControlType.Enum,title:\"Middle\",options:[\"Tags\",\"Waveform\"],optionTitles:[\"Tags\",\"Waveform\"],defaultValue:\"Tags\",displaySegmentedControl:true,hidden:props=>props.rowLayout===\"Mobile\",description:\"What fills the row between the title and the buttons. Waveform shows the tags as text underneath it instead of as chips, drops the BPM column, and reads the position out where you point.\"},columns:{...rowColumnControls,title:\"Columns\"},metadata:{type:ControlType.Object,title:\"Metadata\",icon:\"object\",buttonTitle:\"Fields\",description:\"Which of the track's own fields the row prints. Every value \"+\"comes from Soundee, so a field a track does not have is simply \"+\"left out rather than shown empty.\",defaultValue:DEFAULT_METADATA,controls:{subtitleTypes:{type:ControlType.Array,title:\"Subtitle\",control:{type:ControlType.Enum,options:METADATA_TYPE_OPTIONS,optionTitles:METADATA_TYPE_TITLES},defaultValue:DEFAULT_METADATA.subtitleTypes,maxCount:4,description:\"Shown under the title, as plain text.\"},tagTypes:{type:ControlType.Array,title:\"Tags\",control:{type:ControlType.Enum,options:METADATA_TYPE_OPTIONS,optionTitles:METADATA_TYPE_TITLES},defaultValue:DEFAULT_METADATA.tagTypes,maxCount:6,description:\"Shown as chips before the actions, or as text under the waveform.\"},maxTags:{type:ControlType.Number,title:\"Max Tags\",min:1,max:8,step:1,defaultValue:DEFAULT_METADATA.maxTags,displayStepper:true,description:\"How many values to show. In chip mode the rest collapse into a +N.\"}}},// ── The list around the rows ──────────────────────────────────────────\nlist:{type:ControlType.Object,title:\"List\",icon:\"object\",buttonTitle:\"Options\",description:\"The list around the rows: how many arrive at a time, what sits \"+\"above them, and what is shown while more are on the way.\",defaultValue:DEFAULT_LIST,controls:{defaultLayout:{type:ControlType.Enum,title:\"Layout\",options:[\"List\",\"Grid\"],optionTitles:[\"List\",\"Grid\"],defaultValue:DEFAULT_LIST.defaultLayout,displaySegmentedControl:true,description:\"What a first-time visitor sees. The bar's Layout toggle switches it per visitor, and their choice is remembered.\"},showCount:{type:ControlType.Boolean,title:\"Result Count\",defaultValue:DEFAULT_LIST.showCount,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:'A line above the list — \"234 Beats\". The word follows the entity type this list registers, and it is styled from Row Style. Its own component exists too, for putting it somewhere else.'},gap:{type:ControlType.Number,title:\"Row Gap\",min:0,max:40,step:1,defaultValue:DEFAULT_LIST.gap,unit:\"px\",description:\"Space between rows. There is no dividing line — this gap \"+\"and the hover state are what separate one row from the \"+\"next.\"},cardGap:{type:ControlType.Number,title:\"Card Gap\",min:0,max:48,step:1,defaultValue:DEFAULT_LIST.cardGap,unit:\"px\",description:\"Card layout only. The gutter between cards, horizontally and vertically. Rows use Row Gap instead — they sit closer than cards can.\"},minCardWidth:{type:ControlType.Number,title:\"Min Card\",min:120,max:480,step:10,defaultValue:DEFAULT_LIST.minCardWidth,unit:\"px\",description:\"Card layout only. How narrow a card may get before the grid drops to fewer columns — the columns themselves follow the width available, so this is the only number the grid needs.\"},infiniteLoading:{type:ControlType.Enum,title:\"Infinite\",options:[\"On\",\"Off\"],optionTitles:[\"On\",\"Off\"],defaultValue:DEFAULT_LIST.infiniteLoading,displaySegmentedControl:true,description:\"On loads pages of 30 as the visitor reaches the end. Off shows one page, capped by Limit.\"},limit:{type:ControlType.Number,title:\"Limit\",min:1,max:30,step:1,defaultValue:DEFAULT_LIST.limit,hidden:props=>props.infiniteLoading!==\"Off\",description:\"How many tracks to show when Infinite is off.\"},spinnerColor:{type:ControlType.Color,title:\"Spinner\",defaultValue:DEFAULT_LIST.spinnerColor,description:\"Shown under the last row while the next page loads. Only \"+\"seen with Infinite on.\"}}},scrolling:{type:ControlType.Object,title:\"Scrolling\",icon:\"interaction\",buttonTitle:\"Target\",description:\"Where the page lands when the filters change and the results \"+\"underneath are replaced.\",defaultValue:DEFAULT_SCROLLING,controls:{scrollTargetId:{type:ControlType.String,title:\"Target ID\",defaultValue:DEFAULT_SCROLLING.scrollTargetId,placeholder:\"Auto — the filter bar\",description:\"Leave it empty and the page jumps back to the Soundee Filter Bar when the filters change, or to the top if there is none. Set an id only to land somewhere else.\"},scrollOffset:{type:ControlType.Number,title:\"Offset\",defaultValue:DEFAULT_SCROLLING.scrollOffset,min:0,max:200,step:1,unit:\"px\",description:\"Extra breathing room on top of what is measured. A fixed nav and a sticky filter bar are already cleared automatically — their heights do not belong here.\"}}},spacing:{type:ControlType.Object,title:\"Spacing\",icon:\"object\",buttonTitle:\"Widths\",description:\"How the row divides its width. These are what keep BPM and the \"+\"buttons starting at the same x on every row instead of moving \"+\"with the length of each title.\",defaultValue:DEFAULT_SPACING,controls:{titleFill:{type:ControlType.Boolean,title:\"Title Fills\",defaultValue:DEFAULT_SPACING.titleFill,description:\"The title block takes whatever the row has left instead of a set width. Tags then size to their content, or the two would split the slack and the title would not actually get wider.\"},titleWidth:{type:ControlType.Number,title:\"Title Width\",min:160,max:800,step:10,defaultValue:DEFAULT_SPACING.titleWidth,unit:\"px\",hidden:props=>props.titleFill===true,description:\"Width of the number, cover, play button and title together — so BPM starts at the same x on every row. The title shrinks inside it.\"},columnGap:{type:ControlType.Number,title:\"Column Gap\",min:4,max:60,step:1,defaultValue:DEFAULT_SPACING.columnGap,unit:\"px\",description:\"Space between the title block, BPM, tags and the actions. Inside those groups the spacing stays tight, so the cover keeps its title and the heart keeps its price.\"},titleGap:{type:ControlType.Number,title:\"Title Gap\",min:0,max:16,step:1,defaultValue:DEFAULT_SPACING.titleGap,unit:\"px\",description:\"Space between the title and the metadata under it.\"}}},// ── How it looks ──────────────────────────────────────────────────────\nrowStyle:{...rowTokenControls,title:\"Row Style\",// Added here rather than in the shared group: the carousel and the\n// kits and services lists spread that same group as Card Style and\n// already carry their own Cover Border, so putting it there would put\n// two of the same switch in their panels.\ncontrols:{...rowTokenControls.controls,padding:{type:ControlType.Padding,hidden:rowStyleHidden,title:\"Row Padding\",defaultValue:DEFAULT_ROW_PADDING,description:\"Inside the row, around everything in it. Worth turning \"+\"down on a phone, where the page already has padding of \"+\"its own and the two stack up — the cover then sits twice \"+\"as far from the edge as the filters above it.\"},coverBorder:{type:ControlType.Boolean,hidden:rowStyleHidden,title:\"Cover Border\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"A hairline around the artwork. It tidies up a list of \"+\"pale covers and reads as a halo on dark ones, so it is \"+\"worth judging against your own catalogue.\"}}},playTokens:{...playTokenControls,hidden:props=>props.rowLayout===\"Mobile\"||props.columns?.play===false},chipTokens:{...chipTokenControls,hidden:props=>props.middle===\"Waveform\"||props.columns?.chips===false},waveTokens:{...waveTokenControls,hidden:props=>props.rowLayout===\"Mobile\"||props.middle!==\"Waveform\"}};addPropertyControls(SoundeeTracksList,tracksListPanelControls);\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeTracksList\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"DEFAULT_SPACING\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_METADATA\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ContentGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tracksListPanelControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_CONTENT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ScrollingGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MetadataGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SpacingGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_SCROLLING\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ListGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_LIST\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// Stops iOS Safari zooming the page when a text field takes focus.\n//\n// Safari on iPhone zooms in on any focused input whose font-size is under\n// 16px, and it does not zoom back out afterwards — the visitor is left on a\n// magnified page they have to pinch their way out of. On a filter bar, where\n// the search field sits beside pills that are now half off-screen, that reads\n// as the page breaking rather than as a keyboard opening.\n//\n// The usual fix is `maximum-scale=1` on the viewport meta, which disables\n// pinch-zoom for the whole site — an accessibility loss to solve a styling\n// problem, and not ours to set anyway: Framer owns that tag.\n//\n// So instead the field itself asks for 16px, and only where it matters: on\n// coarse pointers, and only when the design asked for something smaller.\n// Desktop keeps the size the producer set.\n/** Below this, iOS zooms. */export const IOS_MIN_INPUT_FONT_SIZE=16;/**\n * CSS that lifts one field to 16px on touch devices, or `\"\"` when the field is\n * already large enough to be left alone.\n *\n * `!important` because the size arrives as an inline style, which a stylesheet\n * rule cannot otherwise outrank.\n *\n * @param selector A full CSS selector — `#some-id`.\n * @param fontSize The size the field is styled at, in px.\n */export function iosZoomGuardCss(selector,fontSize){if(!(fontSize<IOS_MIN_INPUT_FONT_SIZE))return\"\";return`@media (pointer: coarse) {\n    ${selector} { font-size: ${IOS_MIN_INPUT_FONT_SIZE}px !important; }\n}`;}/** The px number out of a CSS font-size, falling back when it is unreadable. */export function parseFontSize(value,fallback){const parsed=parseFloat(String(value??\"\"));return Number.isFinite(parsed)&&parsed>0?parsed:fallback;}\nexport const __FramerMetadata__ = {\"exports\":{\"IOS_MIN_INPUT_FONT_SIZE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parseFontSize\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"iosZoomGuardCss\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ios_zoom.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{useBrandOverrides}from\"https://framerusercontent.com/modules/yD9Ys9s3cEToBITrvdLi/73etEDTq7Xf4D5LzHkb0/brand.js\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{iosZoomGuardCss}from\"https://framerusercontent.com/modules/P542p3u9ykvDUJKb8yyx/GbYAiUB9nBb2l2RLD8El/ios_zoom.js\";const DEFAULT_STYLE={font:{fontSize:\"14px\"},color:\"#ffffff\",placeholderColor:\"rgba(255,255,255,0.4)\",fill:\"rgba(255,255,255,0.08)\",padding:\"10px 14px\",borderRadius:\"8px\",focusBorderColor:\"rgba(255,255,255,0.3)\"};function useDebounce(value,ms=300){const[debounced,setDebounced]=React.useState(value);React.useEffect(()=>{const id=setTimeout(()=>setDebounced(value),ms);return()=>clearTimeout(id);},[value,ms]);return debounced;}function getPaddingPart(padding,side){const parts=padding.trim().split(/\\s+/).filter(Boolean);if(parts.length===0)return\"0px\";if(parts.length===1)return parts[0];if(parts.length===2)return parts[1];if(parts.length===3)return parts[1];return side===\"left\"?parts[3]:parts[1];}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeSearchInput({filterKey=\"q\",placeholder=\"Search...\",showSearchIcon=true,searchStyle,style}){const brandFont=useBrandOverrides().fontBody;const{font,color,placeholderColor,fill,padding,borderRadius,border,focusBorderColor}={...DEFAULT_STYLE,// The field's type follows the Body font set in SoundeeModals; a font\n// set on this instance still wins.\n...brandFont?{font:brandFont}:null,...searchStyle};const fontSize=parseFloat(String(font?.fontSize??14))||14;const clearIconSize=fontSize*.85;const searchIconSize=fontSize;const searchIconLeft=getPaddingPart(padding,\"left\");const inputPaddingLeft=showSearchIcon?`calc(${searchIconLeft} + ${searchIconSize+8}px)`:undefined;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const inputRef=React.useRef(null);const[focused,setFocused]=React.useState(false);const filterEntityType=useActiveFilterEntityType();const Filters=filterRegistry[filterEntityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const[search,setSearch]=React.useState(\"\");// The store is one global object that outlives a page. Mounting on the\n// next page, this field can meet it still holding the previous page's\n// search — which is how a term typed on /beats turned up in the bar on\n// /exclusive-beats. So the store is only mirrored once this page's own\n// list has hydrated it; until then the field reads as what it is: empty.\nconst onThisPage=store.hydrated&&(typeof window===\"undefined\"||!store.pathname||store.pathname===window.location.pathname);const storeValue=onThisPage?store.committed[filterKey]??\"\":\"\";React.useEffect(()=>{if(storeValue!==search.trim())setSearch(storeValue);// `search` deliberately left out: this mirrors the store *into* the\n// field, and must not run again because the visitor typed.\n// eslint-disable-next-line react-hooks/exhaustive-deps\n},[storeValue,filterKey]);const debouncedSearch=useDebounce(search.trim(),300);// What the store holds right now, readable from inside the debounce\n// without subscribing the effect to every store change.\nconst committedRef=React.useRef(\"\");committedRef.current=storeValue;const isInitial=React.useRef(true);React.useEffect(()=>{if(isInitial.current){isInitial.current=false;return;}// Nothing to write when the field already says what the store holds:\n// the store just pushed this value in (a mirror, not a keystroke), or\n// Enter committed it before the timer ran out — and a second commit\n// of the same value is a second history entry. This one comparison\n// replaced a \"skip the next debounce\" flag that could be left set by\n// a mirror the timer never delivered, swallowing the next real search.\nif(debouncedSearch===committedRef.current)return;Filters.setText(filterKey,debouncedSearch);},[Filters,debouncedSearch,filterKey]);// Enter commits what is typed right away and puts the keyboard away — on\n// a phone the field is otherwise left focused, keyboard up, over the\n// results it just asked for.\nconst handleKeyDown=React.useCallback(event=>{if(event.key!==\"Enter\")return;event.preventDefault();const value=search.trim();if(value!==committedRef.current)Filters.setText(filterKey,value);inputRef.current?.blur();},[Filters,filterKey,search]);const borderStyle=border?{...border}:{borderWidth:1,borderStyle:\"solid\",borderColor:\"transparent\"};const focusBorder=focused?{borderColor:focusBorderColor}:{};const hasValue=search.length>0;// No refocus after clearing. It read as a courtesy on a desktop, but on\n// a phone it raised the keyboard over the results the visitor had just\n// cleared their way back to — and the X is usually pressed to be done\n// with the search, not to start another one.\nconst handleClear=React.useCallback(()=>{setSearch(\"\");Filters.setText(filterKey,\"\");},[Filters,filterKey]);const rawId=React.useId();const placeholderStyleId=`soundee-search-${rawId.replace(/:/g,\"\")}`;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                #${placeholderStyleId}::placeholder {\n                    color: ${placeholderColor};\n                    opacity: 1;\n                }\n                ${iosZoomGuardCss(`#${placeholderStyleId}`,fontSize)}\n            `}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",...style},children:[showSearchIcon&&/*#__PURE__*/_jsxs(\"svg\",{\"aria-hidden\":\"true\",width:searchIconSize,height:searchIconSize,viewBox:\"0 0 16 16\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.8\",strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{position:\"absolute\",left:searchIconLeft,top:\"50%\",transform:\"translateY(-50%)\",color:placeholderColor,pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"7\",cy:\"7\",r:\"4.5\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"10.5\",y1:\"10.5\",x2:\"14\",y2:\"14\"})]}),/*#__PURE__*/_jsx(\"input\",{id:placeholderStyleId,ref:inputRef,type:\"text\",value:isCanvas?\"\":search,placeholder:placeholder,onChange:e=>setSearch(e.target.value),onKeyDown:handleKeyDown,onFocus:()=>setFocused(true),onBlur:()=>setFocused(false),// The phone keyboard's return key reads \"Search\".\nenterKeyHint:\"search\",style:{width:\"100%\",height:\"100%\",boxSizing:\"border-box\",...font,color,background:fill,padding,...inputPaddingLeft?{paddingLeft:inputPaddingLeft}:{},paddingRight:36,borderRadius,...borderStyle,...focusBorder,outline:\"none\",transition:\"border-color 0.15s ease\"}}),hasValue&&!isCanvas&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:handleClear,\"aria-label\":\"Clear search\",style:{position:\"absolute\",right:8,top:\"50%\",transform:\"translateY(-50%)\",background:\"none\",border:\"none\",padding:4,cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:placeholderColor,transition:\"color 0.15s ease\"},onMouseEnter:e=>e.currentTarget.style.color=color,onMouseLeave:e=>e.currentTarget.style.color=placeholderColor,children:/*#__PURE__*/_jsxs(\"svg\",{width:clearIconSize,height:clearIconSize,viewBox:\"0 0 16 16\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",children:[/*#__PURE__*/_jsx(\"line\",{x1:\"4\",y1:\"4\",x2:\"12\",y2:\"12\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"4\",x2:\"4\",y2:\"12\"})]})})]})]});}SoundeeSearchInput.displayName=\"Soundee Search Input\";addPropertyControls(SoundeeSearchInput,{filterKey:{type:ControlType.String,title:\"Filter key\",defaultValue:\"q\",placeholder:\"q\",description:\"Filter key the search text is written to, e.g. q.\"},placeholder:{type:ControlType.String,title:\"Placeholder\",defaultValue:\"Search...\",description:\"Placeholder text shown when the field is empty.\"},showSearchIcon:{type:ControlType.Boolean,title:\"Search Icon\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Shows a leading search icon. It uses Placeholder Color and automatically adds left padding.\"},searchStyle:{type:ControlType.Object,title:\"Style\",description:\"Appearance of the input. Note: colors set here cannot bind to color tokens.\",controls:{font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"14px\"}},color:{type:ControlType.Color,title:\"Text color\",defaultValue:\"#ffffff\"},placeholderColor:{type:ControlType.Color,title:\"Placeholder Color\",defaultValue:\"rgba(255,255,255,0.4)\",description:\"Also used for the clear (✕) button.\"},fill:{type:ControlType.Color,title:\"Fill\",defaultValue:\"rgba(255,255,255,0.08)\"},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"10px 14px\"},borderRadius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"8px\"},border:{type:ControlType.Border,title:\"Border\"},focusBorderColor:{type:ControlType.Color,title:\"Focus border\",defaultValue:\"rgba(255,255,255,0.3)\"}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeSearchInput\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * A dual range slider component that allows selecting a range with two handles.\n * Enhanced with cross-platform haptic feedback and sound effects.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */export default function DualRangeSlider(props){const{min,max,step,defaultLowValue,defaultHighValue,trackColor,rangeColor,handleColor,handleSize,trackHeight,showLabels,labelPosition,labelColor,labelFont,onChange,onCommit,style,width=\"100%\",name,onValueChange,enableHaptics=true,enableSound=true,soundVolume=.5,hapticIntensity=\"medium\"}=props;// Use state with proper initialization from props\nconst[values,setValues]=useState([defaultLowValue,defaultHighValue]);// Update values when props change\nuseEffect(()=>{setValues([defaultLowValue,defaultHighValue]);},[defaultLowValue,defaultHighValue]);const[isDragging,setIsDragging]=useState(false);const[activeDot,setActiveDot]=useState(null);const[audioInitialized,setAudioInitialized]=useState(false);const sliderRef=useRef(null);const audioContextRef=useRef(null);const audioBufferRef=useRef(null);const lastHapticTimeRef=useRef(0);const audioUnlockHandlerRef=useRef(null);// Get current values from state\nconst lowValue=values[0];const highValue=values[1];// Enhanced haptic feedback with proper iOS support\nconst triggerHapticFeedback=type=>{if(!enableHaptics)return;const now=Date.now();// Throttle haptic feedback to prevent overwhelming the user\nif(now-lastHapticTimeRef.current<50)return;lastHapticTimeRef.current=now;try{// Check for iOS device\nconst isIOS=/iPad|iPhone|iPod/.test(navigator.userAgent);if(isIOS){// iOS: Use Web Vibration API (works in Safari iOS 15+)\nif(navigator.vibrate){const patterns={light:{start:10,end:[15,10,15],step:5},medium:{start:20,end:[30,20,30],step:10},heavy:{start:40,end:[50,30,50],step:20}};const pattern=patterns[hapticIntensity]||patterns.medium;switch(type){case\"start\":navigator.vibrate(pattern.start);break;case\"end\":navigator.vibrate(pattern.end);break;case\"step\":navigator.vibrate(pattern.step);break;}}else{// Fallback: Try to trigger haptics via audio context resume\nif(audioContextRef.current&&audioContextRef.current.state===\"suspended\"){audioContextRef.current.resume();}}}else{// Android/Other: Use standard vibration API\nif(navigator.vibrate){const intensityMap={light:{start:10,end:[15,10,15],step:5},medium:{start:20,end:[30,20,30],step:10},heavy:{start:30,end:[50,30,50],step:15}};const intensity=intensityMap[hapticIntensity]||intensityMap.medium;switch(type){case\"start\":navigator.vibrate(intensity.start);break;case\"end\":navigator.vibrate(intensity.end);break;case\"step\":navigator.vibrate(intensity.step);break;}}}}catch(error){console.log(\"Haptic feedback error:\",error);}};// Initialize audio system with proper iOS/macOS support\nconst initializeAudio=async()=>{if(!enableSound||audioInitialized)return;try{// Create AudioContext with proper vendor prefixes\nconst AudioContext=window.AudioContext||window.webkitAudioContext;if(!AudioContext){console.log(\"Web Audio API not supported\");return;}audioContextRef.current=new AudioContext;// Create a simple click sound buffer\nconst sampleRate=audioContextRef.current.sampleRate;const duration=.05// Shorter duration for better performance\n;const buffer=audioContextRef.current.createBuffer(1,sampleRate*duration,sampleRate);const channelData=buffer.getChannelData(0);// Generate a pleasant click sound\nfor(let i=0;i<channelData.length;i++){const t=i/sampleRate;const frequency=800;const envelope=Math.exp(-t*20)// Fast decay\n;channelData[i]=Math.sin(2*Math.PI*frequency*t)*envelope*.3;}audioBufferRef.current=buffer;setAudioInitialized(true);}catch(error){console.log(\"Audio initialization error:\",error);}};// Setup audio unlock for iOS/Safari\nconst setupAudioUnlock=()=>{if(audioUnlockHandlerRef.current||!enableSound)return;const unlockAudio=async()=>{try{if(!audioContextRef.current){await initializeAudio();}if(audioContextRef.current&&audioContextRef.current.state===\"suspended\"){await audioContextRef.current.resume();}// Test play a silent sound to unlock audio\nif(audioContextRef.current&&audioBufferRef.current){const source=audioContextRef.current.createBufferSource();const gainNode=audioContextRef.current.createGain();source.buffer=audioBufferRef.current;gainNode.gain.value=0// Silent\n;source.connect(gainNode);gainNode.connect(audioContextRef.current.destination);source.start();}// Clean up event listeners\ndocument.removeEventListener(\"touchstart\",unlockAudio);document.removeEventListener(\"click\",unlockAudio);document.removeEventListener(\"keydown\",unlockAudio);audioUnlockHandlerRef.current=null;}catch(error){console.log(\"Audio unlock error:\",error);}};audioUnlockHandlerRef.current=unlockAudio;document.addEventListener(\"touchstart\",unlockAudio,{once:true,passive:true});document.addEventListener(\"click\",unlockAudio,{once:true});document.addEventListener(\"keydown\",unlockAudio,{once:true});};// Play sound with proper error handling\nconst playDragSound=()=>{if(!enableSound||!audioContextRef.current||!audioBufferRef.current)return;try{// Ensure audio context is running\nif(audioContextRef.current.state===\"suspended\"){audioContextRef.current.resume();}const source=audioContextRef.current.createBufferSource();const gainNode=audioContextRef.current.createGain();source.buffer=audioBufferRef.current;gainNode.gain.value=soundVolume;source.connect(gainNode);gainNode.connect(audioContextRef.current.destination);source.start();}catch(error){console.log(\"Audio play error:\",error);}};// Initialize audio on component mount\nuseEffect(()=>{if(enableSound&&typeof window!==\"undefined\"){initializeAudio();setupAudioUnlock();}return()=>{if(audioContextRef.current&&audioContextRef.current.state!==\"closed\"){audioContextRef.current.close();}if(audioUnlockHandlerRef.current){document.removeEventListener(\"touchstart\",audioUnlockHandlerRef.current);document.removeEventListener(\"click\",audioUnlockHandlerRef.current);document.removeEventListener(\"keydown\",audioUnlockHandlerRef.current);}};},[enableSound]);// Re-initialize when sound settings change\nuseEffect(()=>{if(enableSound&&!audioInitialized){initializeAudio();setupAudioUnlock();}},[enableSound,soundVolume]);// Calculate percentage for positioning.\n//\n// Clamped, and guarded against a zero-width scale. A value outside\n// [min,max] — a page default under the catalogue's own floor, a stale URL\n// param — otherwise renders its handle clean off the track and stretches\n// the fill past 100%. A slider is a picture of a bounded scale, so a value\n// beyond the end belongs at the end rather than nowhere.\nconst span=max-min;const toPercent=value=>span>0?Math.min(100,Math.max(0,(value-min)/span*100)):0;const lowPercentage=toPercent(lowValue);const highPercentage=toPercent(highValue);// Update values function to keep code DRY\nconst updateValues=newValues=>{setValues(newValues);if(onChange){onChange({low:newValues[0],high:newValues[1]});}};// Handle mouse/touch events\nconst handleMouseDown=async(e,dot)=>{e.preventDefault();setIsDragging(true);setActiveDot(dot);// Ensure audio is initialized on first interaction\nif(enableSound&&!audioInitialized){await initializeAudio();}// Enhanced feedback on start\ntriggerHapticFeedback(\"start\");playDragSound();// Enable audio context on user interaction (required for iOS)\nif(audioContextRef.current&&audioContextRef.current.state===\"suspended\"){audioContextRef.current.resume();}};const handleMouseUp=()=>{setIsDragging(false);setActiveDot(null);triggerHapticFeedback(\"end\");if(onCommit){onCommit({low:values[0],high:values[1]});}if(onValueChange){onValueChange(values);}};const updateValue=(newValue,dot)=>{let valueChanged=false;let newValues=[...values];if(dot===\"low\"&&newValue<=highValue-step&&newValue!==lowValue){newValues[0]=newValue;valueChanged=true;}else if(dot===\"high\"&&newValue>=lowValue+step&&newValue!==highValue){newValues[1]=newValue;valueChanged=true;}if(valueChanged){triggerHapticFeedback(\"step\");playDragSound();updateValues(newValues);}};const handleMouseMove=e=>{if(!isDragging||!sliderRef.current)return;const rect=sliderRef.current.getBoundingClientRect();const offsetX=e.clientX-rect.left;const percentage=Math.min(Math.max(0,offsetX/rect.width),1);const newValue=Math.round((percentage*(max-min)+min)/step)*step;updateValue(newValue,activeDot);};// Handle touch events for mobile\nconst handleTouchMove=e=>{if(!isDragging||!sliderRef.current)return;e.preventDefault()// Prevent scrolling\n;const touch=e.touches[0];const rect=sliderRef.current.getBoundingClientRect();const offsetX=touch.clientX-rect.left;const percentage=Math.min(Math.max(0,offsetX/rect.width),1);const newValue=Math.round((percentage*(max-min)+min)/step)*step;updateValue(newValue,activeDot);};// Add event listeners\nuseEffect(()=>{if(isDragging){window.addEventListener(\"mousemove\",handleMouseMove);window.addEventListener(\"mouseup\",handleMouseUp);window.addEventListener(\"touchmove\",handleTouchMove,{passive:false});window.addEventListener(\"touchend\",handleMouseUp);// Prevent scrolling during drag\ndocument.body.style.overscrollBehavior=\"none\";}else{document.body.style.overscrollBehavior=\"auto\";}return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"mouseup\",handleMouseUp);window.removeEventListener(\"touchmove\",handleTouchMove);window.removeEventListener(\"touchend\",handleMouseUp);document.body.style.overscrollBehavior=\"auto\";};},[isDragging,lowValue,highValue,activeDot]);// Calculate label positions to ensure they align with handles\nconst getLabelPosition=percentage=>{return`calc(${percentage}% - ${handleSize/2}px)`;};return /*#__PURE__*/_jsxs(\"div\",{style:{padding:\"20px 10px\",position:\"relative\",width:width,boxSizing:\"border-box\",userSelect:\"none\",...style},children:[/*#__PURE__*/_jsx(\"input\",{type:\"hidden\",name:name,value:JSON.stringify(values)}),showLabels&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:getLabelPosition(lowPercentage),top:labelPosition===\"top\"?\"-30px\":\"70px\",color:labelColor,...labelFont,whiteSpace:\"nowrap\",textAlign:\"center\",width:`${handleSize}px`,userSelect:\"none\"},children:lowValue}),showLabels&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:getLabelPosition(highPercentage),top:labelPosition===\"top\"?\"-30px\":\"70px\",color:labelColor,...labelFont,whiteSpace:\"nowrap\",textAlign:\"center\",width:`${handleSize}px`,userSelect:\"none\"},children:highValue}),/*#__PURE__*/_jsxs(\"div\",{ref:sliderRef,style:{position:\"relative\",width:\"100%\",height:`${trackHeight}px`,backgroundColor:trackColor,borderRadius:trackHeight/2,cursor:\"pointer\",touchAction:\"none\",userSelect:\"none\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${lowPercentage}%`,width:`${highPercentage-lowPercentage}%`,height:\"100%\",backgroundColor:rangeColor,borderRadius:trackHeight/2,transition:isDragging?\"none\":\"all 0.2s ease\"}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${lowPercentage}%`,top:\"50%\",width:`${handleSize}px`,height:`${handleSize}px`,backgroundColor:handleColor,borderRadius:\"50%\",transform:isDragging&&activeDot===\"low\"?\"translate(-50%, -50%) scale(1.15)\":\"translate(-50%, -50%)\",cursor:isDragging&&activeDot===\"low\"?\"grabbing\":\"grab\",boxShadow:isDragging&&activeDot===\"low\"?\"0 6px 12px rgba(0, 0, 0, 0.4)\":\"0 3px 6px rgba(0, 0, 0, 0.2)\",zIndex:activeDot===\"low\"?3:1,touchAction:\"none\",transition:isDragging?\"none\":\"all 0.2s ease\",border:\"2px solid rgba(255, 255, 255, 0.9)\",userSelect:\"none\"},onMouseDown:e=>handleMouseDown(e,\"low\"),onTouchStart:e=>handleMouseDown(e,\"low\"),role:\"slider\",\"aria-valuemin\":min,\"aria-valuemax\":highValue,\"aria-valuenow\":lowValue,\"aria-label\":`Low value: ${lowValue}`,tabIndex:0}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${highPercentage}%`,top:\"50%\",width:`${handleSize}px`,height:`${handleSize}px`,backgroundColor:handleColor,borderRadius:\"50%\",transform:isDragging&&activeDot===\"high\"?\"translate(-50%, -50%) scale(1.15)\":\"translate(-50%, -50%)\",cursor:isDragging&&activeDot===\"high\"?\"grabbing\":\"grab\",boxShadow:isDragging&&activeDot===\"high\"?\"0 6px 12px rgba(0, 0, 0, 0.4)\":\"0 3px 6px rgba(0, 0, 0, 0.2)\",zIndex:activeDot===\"high\"?3:1,touchAction:\"none\",transition:isDragging?\"none\":\"all 0.2s ease\",border:\"2px solid rgba(255, 255, 255, 0.9)\",userSelect:\"none\"},onMouseDown:e=>handleMouseDown(e,\"high\"),onTouchStart:e=>handleMouseDown(e,\"high\"),role:\"slider\",\"aria-valuemin\":lowValue,\"aria-valuemax\":max,\"aria-valuenow\":highValue,\"aria-label\":`High value: ${highValue}`,tabIndex:0})]})]});}addPropertyControls(DualRangeSlider,{min:{type:ControlType.Number,title:\"Min Value\",defaultValue:0},max:{type:ControlType.Number,title:\"Max Value\",defaultValue:100},step:{type:ControlType.Number,title:\"Step\",defaultValue:1,min:.1},defaultLowValue:{type:ControlType.Number,title:\"Low Value\",defaultValue:25},defaultHighValue:{type:ControlType.Number,title:\"High Value\",defaultValue:75},trackColor:{type:ControlType.Color,title:\"Track Color\",defaultValue:\"#E5E7EB\"},rangeColor:{type:ControlType.Color,title:\"Range Color\",defaultValue:\"#3B82F6\"},handleColor:{type:ControlType.Color,title:\"Handle Color\",defaultValue:\"#FFFFFF\"},handleSize:{type:ControlType.Number,title:\"Handle Size\",defaultValue:20,min:10,max:40},trackHeight:{type:ControlType.Number,title:\"Track Height\",defaultValue:6,min:2,max:20},showLabels:{type:ControlType.Boolean,title:\"Show Labels\",defaultValue:true},labelPosition:{type:ControlType.Enum,title:\"Label Position\",options:[\"top\",\"bottom\"],optionTitles:[\"Top\",\"Bottom\"],defaultValue:\"top\",hidden:({showLabels})=>!showLabels},labelColor:{type:ControlType.Color,title:\"Label Color\",defaultValue:\"#6B7280\",hidden:({showLabels})=>!showLabels},labelFont:{type:ControlType.Font,title:\"Label Font\",defaultValue:{fontSize:\"14px\",fontWeight:500},controls:\"extended\",defaultFontType:\"sans-serif\",hidden:({showLabels})=>!showLabels},enableHaptics:{type:ControlType.Boolean,title:\"Haptic Feedback\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},hapticIntensity:{type:ControlType.Enum,title:\"Haptic Intensity\",options:[\"light\",\"medium\",\"heavy\"],optionTitles:[\"Light\",\"Medium\",\"Heavy\"],defaultValue:\"medium\",hidden:({enableHaptics})=>!enableHaptics},enableSound:{type:ControlType.Boolean,title:\"Sound Effect\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},soundVolume:{type:ControlType.Number,title:\"Sound Volume\",defaultValue:.5,min:0,max:1,step:.1,hidden:({enableSound})=>!enableSound},onChange:{type:ControlType.EventHandler},onCommit:{type:ControlType.EventHandler},name:{type:ControlType.String,title:\"Form Field Name\",defaultValue:\"range\",description:\"Name of the field when used in a form\"},onValueChange:{type:ControlType.EventHandler}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DualRangeSlider\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DualRangeSlider.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import DualRangeSlider from\"https://framerusercontent.com/modules/8SA0KZxzMOPtVVQMqnGS/MK1WT953hARLOSq5PJRB/DualRangeSlider.js\";// Grouped into single object controls. Note: controls nested in a Framer Object\n// can't be bound to color variables/tokens, which is acceptable for this utility\n// filter where the palette is set once.\nconst DEFAULT_COLORS={track:\"rgba(255,255,255,0.12)\",range:\"rgba(255,255,255,0.85)\",handle:\"#FFFFFF\",label:\"rgba(255,255,255,0.5)\"};const DEFAULT_INPUT_STYLE={background:\"rgba(255,255,255,0.06)\",border:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(255,255,255,0.12)\"},radius:8,color:\"#FFFFFF\",height:40};const DEFAULT_QUICK_RANGE_STYLE={background:\"rgba(255,255,255,0.06)\",activeBackground:\"rgba(255,255,255,0.9)\",color:\"rgba(255,255,255,0.85)\",activeColor:\"#000000\",border:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(255,255,255,0.12)\"},radius:8};function clamp(value,lo,hi){return Math.min(hi,Math.max(lo,value));}function buildQuickRanges(min,max,count,step){const span=max-min;if(span<=0||count<1)return[];const size=span/count;const snap=v=>Math.round(v/step)*step;return Array.from({length:count},(_,i)=>{const low=snap(min+i*size);const high=i===count-1?max:snap(min+(i+1)*size);return{low,high,label:`${low}\\u2013${high}`};});}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */export default function SoundeeRangeFilterStandalone({filterKey=\"bpm\",label,unit=\"BPM\",step=1,showSlider=true,showInputs=true,showQuickRanges=true,quickRangeCount=6,quickRangesTitle=\"Quick ranges\",precise=false,preciseLabel=\"Precise\",colors,inputStyle,quickRangeStyle,instant=true}){const{track:trackColor,range:rangeColor,handle:handleColor,label:labelColor}={...DEFAULT_COLORS,...colors};const input$={...DEFAULT_INPUT_STYLE,...inputStyle};const quick$={...DEFAULT_QUICK_RANGE_STYLE,...quickRangeStyle};const filterEntityType=useActiveFilterEntityType();const Filters=filterRegistry[filterEntityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const def=Filters.schema.find(f=>f.key===filterKey);const meta=def&&def.type===\"range\"?Filters.getMeta(filterKey):null;const min=meta?.min??0;const max=meta?.max??100;const overKey=def&&def.type===\"range\"?def.overKey:\"\";const underKey=def&&def.type===\"range\"?def.underKey:\"\";// Clamped to the scale this panel can actually draw. A page default may sit\n// outside the catalogue's own bounds — `price_over=1` where the cheapest\n// track is 600 — and unclamped that puts the low handle at -25%, a quarter\n// of a panel-width off to the left, with the fill stretched to 125%: the\n// slider then reads as \"everything selected\" with one handle missing.\n// Clamping says the true thing here, because the store already treats a\n// lower bound at or below the catalogue minimum as no bound at all (see\n// `setRange`) — so \"hard left\" is precisely what such a value means.\nconst committedLow=clamp(store.pending[overKey]??min,min,max);const committedHigh=clamp(store.pending[underKey]??max,min,max);const isExact=store.pending[overKey]!=null&&store.pending[underKey]!=null&&committedLow===committedHigh;const[displayLow,setDisplayLow]=React.useState(committedLow);const[displayHigh,setDisplayHigh]=React.useState(committedHigh);const[preciseOn,setPreciseOn]=React.useState(isExact);const[exactValue,setExactValue]=React.useState(isExact?committedLow:min);React.useEffect(()=>{setDisplayLow(committedLow);setDisplayHigh(committedHigh);if(isExact)setExactValue(committedLow);},[committedLow,committedHigh,isExact]);if(!def||def.type!==\"range\")return null;const commitRange=(low,high)=>{Filters.setRange(overKey,underKey,low,high,instant);};const commitLow=value=>{if(!Number.isFinite(value)){setDisplayLow(committedLow);return;}const low=clamp(value,min,displayHigh);setDisplayLow(low);commitRange(low,displayHigh);};const commitHigh=value=>{if(!Number.isFinite(value)){setDisplayHigh(committedHigh);return;}const high=clamp(value,displayLow,max);setDisplayHigh(high);commitRange(displayLow,high);};const commitExact=value=>{if(!Number.isFinite(value)){setExactValue(isExact?committedLow:min);return;}const v=clamp(value,min,max);setExactValue(v);commitRange(v,v);};const handleQuickRange=(low,high)=>{setDisplayLow(low);setDisplayHigh(high);commitRange(low,high);};// Switches the control, and nothing else. It used to commit `exactValue`\n// straight away, which at that point is still `min` — so turning the toggle\n// on filtered the list to \"exactly 0 BPM\" before the visitor had typed\n// anything. The filter now changes when they enter a value.\nconst togglePrecise=()=>{const next=!preciseOn;setPreciseOn(next);if(next)setExactValue(clamp(exactValue,min,max));};const quickRanges=buildQuickRanges(min,max,quickRangeCount,step);const inputBaseStyle={width:\"100%\",height:input$.height,padding:\"0 12px\",boxSizing:\"border-box\",background:input$.background,color:input$.color,borderRadius:input$.radius,...input$.border??{},fontSize:15,fontFamily:\"inherit\",outline:\"none\",textAlign:\"center\",fontVariantNumeric:\"tabular-nums\"};const fieldLabelStyle={fontSize:11,fontWeight:600,color:labelColor,marginBottom:6};return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:18},children:[(label||precise)&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12},children:[label?/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11,fontWeight:600,textTransform:\"uppercase\",letterSpacing:\"0.08em\",color:labelColor},children:label}):/*#__PURE__*/_jsx(\"span\",{}),precise&&/*#__PURE__*/_jsxs(\"button\",{type:\"button\",onClick:togglePrecise,style:{display:\"inline-flex\",alignItems:\"center\",gap:8,padding:0,border:\"none\",background:\"none\",cursor:\"pointer\",color:labelColor,fontSize:11,fontWeight:600},children:[preciseLabel,/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{position:\"relative\",width:34,height:18,borderRadius:999,background:preciseOn?rangeColor:trackColor,transition:\"background 0.15s ease\"},children:/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",top:2,left:preciseOn?18:2,width:14,height:14,borderRadius:\"50%\",background:handleColor,transition:\"left 0.15s ease\"}})})]})]}),preciseOn?/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:fieldLabelStyle,children:`Exact ${unit}`.trim()}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",value:exactValue,min:min,max:max,step:step,onChange:e=>setExactValue(Number(e.target.value)),onBlur:e=>commitExact(Number(e.target.value)),onKeyDown:e=>{if(e.key===\"Enter\")e.target.blur();},style:inputBaseStyle})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[showSlider&&/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(DualRangeSlider,{min:min,max:max,step:step,defaultLowValue:committedLow,defaultHighValue:committedHigh,trackColor:trackColor,rangeColor:rangeColor,handleColor:handleColor,handleSize:18,trackHeight:6,showLabels:false,enableHaptics:false,enableSound:false,onChange:({low,high})=>{setDisplayLow(low);setDisplayHigh(high);},onCommit:({low,high})=>{commitRange(low,high);}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",color:labelColor,fontSize:11,fontVariantNumeric:\"tabular-nums\",padding:\"0 10px\"},children:[/*#__PURE__*/_jsx(\"span\",{children:min}),/*#__PURE__*/_jsx(\"span\",{children:max})]})]}),showInputs&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"flex-end\",gap:10},children:[/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"div\",{style:fieldLabelStyle,children:`Min ${unit}`.trim()}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",value:displayLow,min:min,max:max,step:step,onChange:e=>setDisplayLow(Number(e.target.value)),onBlur:e=>commitLow(Number(e.target.value)),onKeyDown:e=>{if(e.key===\"Enter\")e.target.blur();},style:inputBaseStyle})]}),/*#__PURE__*/_jsx(\"div\",{style:{height:input$.height,display:\"flex\",alignItems:\"center\",color:labelColor},children:\"–\"}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"div\",{style:fieldLabelStyle,children:`Max ${unit}`.trim()}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",value:displayHigh,min:min,max:max,step:step,onChange:e=>setDisplayHigh(Number(e.target.value)),onBlur:e=>commitHigh(Number(e.target.value)),onKeyDown:e=>{if(e.key===\"Enter\")e.target.blur();},style:inputBaseStyle})]})]}),showQuickRanges&&quickRanges.length>0&&/*#__PURE__*/_jsxs(\"div\",{children:[quickRangesTitle&&/*#__PURE__*/_jsx(\"div\",{style:fieldLabelStyle,children:quickRangesTitle}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(3, minmax(0, 1fr))\",gap:8},children:quickRanges.map(qr=>{const active=committedLow===qr.low&&committedHigh===qr.high;return /*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>handleQuickRange(qr.low,qr.high),style:{height:36,padding:\"0 8px\",cursor:\"pointer\",borderRadius:quick$.radius,...quick$.border??{},background:active?quick$.activeBackground:quick$.background,color:active?quick$.activeColor:quick$.color,fontSize:13,fontFamily:\"inherit\",fontVariantNumeric:\"tabular-nums\",whiteSpace:\"nowrap\",transition:\"background 0.12s ease, color 0.12s ease\"},children:qr.label},`${qr.low}-${qr.high}`);})})]})]})]});}SoundeeRangeFilterStandalone.displayName=\"Soundee Range Filter\";addPropertyControls(SoundeeRangeFilterStandalone,{filterKey:{type:ControlType.String,title:\"Filter key\",defaultValue:\"bpm\",placeholder:\"bpm, price...\",description:\"Key of the range filter this control drives, e.g. bpm or price.\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"BPM\",description:\"Optional caption shown above the control.\"},unit:{type:ControlType.String,title:\"Unit\",defaultValue:\"BPM\",placeholder:\"BPM, $...\",description:'Suffix for the input labels, e.g. \"BPM\" renders \"Min BPM\" / \"Max BPM\".'},step:{type:ControlType.Number,title:\"Step\",defaultValue:1,min:1,step:1,description:\"Increment for the slider, inputs and quick ranges.\"},showSlider:{type:ControlType.Boolean,title:\"Slider\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showInputs:{type:ControlType.Boolean,title:\"Min/Max inputs\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showQuickRanges:{type:ControlType.Boolean,title:\"Quick ranges\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},quickRangeCount:{type:ControlType.Number,title:\"Range count\",defaultValue:6,min:2,max:8,step:1,displayStepper:true,hidden:props=>!props.showQuickRanges,description:\"How many quick-range presets to auto-generate across the min–max span.\"},quickRangesTitle:{type:ControlType.String,title:\"Ranges title\",defaultValue:\"Quick ranges\",hidden:props=>!props.showQuickRanges},precise:{type:ControlType.Boolean,title:\"Precise toggle\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Show a toggle that lets users switch to a single exact value (e.g. exactly 90 BPM).\"},preciseLabel:{type:ControlType.String,title:\"Precise label\",defaultValue:\"Precise\",hidden:props=>!props.precise},colors:{type:ControlType.Object,title:\"Colors\",controls:{track:{type:ControlType.Color,title:\"Track\",defaultValue:DEFAULT_COLORS.track,description:\"Color of the slider track behind the selected range.\"},range:{type:ControlType.Color,title:\"Range\",defaultValue:DEFAULT_COLORS.range,description:\"Color of the selected range and the precise toggle when on.\"},handle:{type:ControlType.Color,title:\"Handle\",defaultValue:DEFAULT_COLORS.handle,description:\"Fill color of the slider handles and toggle knob.\"},label:{type:ControlType.Color,title:\"Label\",defaultValue:DEFAULT_COLORS.label,description:\"Text color of captions, field labels and endpoint readouts.\"}},defaultValue:DEFAULT_COLORS},inputStyle:{type:ControlType.Object,title:\"Input Style\",hidden:props=>!props.showInputs&&!props.precise,controls:{background:{type:ControlType.Color,title:\"Background\",defaultValue:DEFAULT_INPUT_STYLE.background},border:{type:ControlType.Border,title:\"Border\",defaultValue:DEFAULT_INPUT_STYLE.border},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULT_INPUT_STYLE.radius,min:0,max:24,step:1},color:{type:ControlType.Color,title:\"Text\",defaultValue:DEFAULT_INPUT_STYLE.color},height:{type:ControlType.Number,title:\"Height\",defaultValue:DEFAULT_INPUT_STYLE.height,min:28,max:56,step:2}},defaultValue:DEFAULT_INPUT_STYLE},quickRangeStyle:{type:ControlType.Object,title:\"Quick Range Style\",hidden:props=>!props.showQuickRanges,controls:{background:{type:ControlType.Color,title:\"Background\",defaultValue:DEFAULT_QUICK_RANGE_STYLE.background},activeBackground:{type:ControlType.Color,title:\"Active Background\",defaultValue:DEFAULT_QUICK_RANGE_STYLE.activeBackground},color:{type:ControlType.Color,title:\"Text\",defaultValue:DEFAULT_QUICK_RANGE_STYLE.color},activeColor:{type:ControlType.Color,title:\"Active Text\",defaultValue:DEFAULT_QUICK_RANGE_STYLE.activeColor},border:{type:ControlType.Border,title:\"Border\",defaultValue:DEFAULT_QUICK_RANGE_STYLE.border},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULT_QUICK_RANGE_STYLE.radius,min:0,max:24,step:1}},defaultValue:DEFAULT_QUICK_RANGE_STYLE},instant:{type:ControlType.Boolean,title:\"Instant\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Commit changes immediately or keep them pending.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeRangeFilterStandalone\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// tokens — everything the filter bar is allowed to look like.\n//\n// Same shape as the track row's tokens: grouped Object controls, colours and\n// fonts only, no per-element layout knobs. The bar has four visually distinct\n// pieces (dropdown labels, pill buttons, chips, the panel) and each gets a\n// group, so the panel stays readable at a glance.\nimport{ControlType}from\"framer\";export const DEFAULT_FILTER_BAR_TOKENS={textPrimary:\"#ffffff\",textSecondary:\"rgba(255,255,255,0.55)\",accent:\"#c8a06a\",accentText:\"#121212\",border:\"rgba(255,255,255,0.10)\",fontLabel:{fontSize:\"15px\",fontWeight:600,lineHeight:1.2},fontBody:{fontSize:\"14px\",lineHeight:1.3},pillBackground:\"transparent\",pillBorder:\"rgba(255,255,255,0.18)\",pillRadius:999,pillHeight:40,pillPaddingX:18,clearHeight:34,panelSurface:\"#141414\",panelBorder:\"rgba(255,255,255,0.10)\",panelRadius:16,panelWidth:300,fill:\"#0d0d0d\",blur:0,fadeBlur:false,fadeTo:\"rgba(13,13,13,0)\",rowHeight:62,filterGap:24,triggerGap:6,paddingX:0,maxWidth:0,showDivider:true};export const DEFAULT_BAR_TEXT={textPrimary:DEFAULT_FILTER_BAR_TOKENS.textPrimary,textSecondary:DEFAULT_FILTER_BAR_TOKENS.textSecondary,border:DEFAULT_FILTER_BAR_TOKENS.border,fontLabel:DEFAULT_FILTER_BAR_TOKENS.fontLabel,fontBody:DEFAULT_FILTER_BAR_TOKENS.fontBody};export const DEFAULT_BAR_PILLS={accent:DEFAULT_FILTER_BAR_TOKENS.accent,accentText:DEFAULT_FILTER_BAR_TOKENS.accentText,pillBackground:DEFAULT_FILTER_BAR_TOKENS.pillBackground,pillBorder:DEFAULT_FILTER_BAR_TOKENS.pillBorder,pillRadius:DEFAULT_FILTER_BAR_TOKENS.pillRadius,pillHeight:DEFAULT_FILTER_BAR_TOKENS.pillHeight,pillPaddingX:DEFAULT_FILTER_BAR_TOKENS.pillPaddingX,clearHeight:DEFAULT_FILTER_BAR_TOKENS.clearHeight};export const DEFAULT_BAR_PANEL={panelSurface:DEFAULT_FILTER_BAR_TOKENS.panelSurface,panelBorder:DEFAULT_FILTER_BAR_TOKENS.panelBorder,panelRadius:DEFAULT_FILTER_BAR_TOKENS.panelRadius,panelWidth:DEFAULT_FILTER_BAR_TOKENS.panelWidth};export const filterBarTextControls={type:ControlType.Object,title:\"Text\",icon:\"object\",controls:{textPrimary:{type:ControlType.Color,title:\"Primary\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.textPrimary},textSecondary:{type:ControlType.Color,title:\"Secondary\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.textSecondary},border:{type:ControlType.Color,title:\"Divider\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.border},fontLabel:{type:ControlType.Font,title:\"Label Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.fontLabel},fontBody:{type:ControlType.Font,title:\"Body Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.fontBody}},defaultValue:DEFAULT_BAR_TEXT};/**\n * The pill group for strips that have no selected state to draw: a suggested\n * tag that is picked leaves the row (it becomes a removable chip in the bar),\n * so Selected and Selected Label would be controls that can never render.\n * Hidden rather than removed — the keys stay, stored values survive.\n */export function tagsPillControls(base){return{...base,controls:{...base.controls,accent:{...base.controls.accent,hidden:()=>true},accentText:{...base.controls.accentText,hidden:()=>true}}};}export const filterBarPillControls={type:ControlType.Object,title:\"Buttons\",icon:\"interaction\",controls:{accent:{type:ControlType.Color,title:\"Selected\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.accent},accentText:{type:ControlType.Color,title:\"Selected Label\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.accentText},pillBackground:{type:ControlType.Color,title:\"Background\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.pillBackground,description:\"Unselected buttons. Transparent follows the bar's own Fill, so they stay opaque over the fade.\"},pillBorder:{type:ControlType.Color,title:\"Border\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.pillBorder},pillRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.pillRadius,min:0,max:999,step:1,unit:\"px\"},pillPaddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.pillPaddingX,min:0,max:48,step:1,unit:\"px\",description:\"Inside a pill. The active chips and the suggested tags sit a little tighter than the sort buttons, and keep that difference.\"},pillHeight:{type:ControlType.Number,title:\"Height\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.pillHeight,min:28,max:64,step:1,unit:\"px\",description:\"The sort buttons, the chips, the search field and the scroll buttons — everything on the second row.\"},clearHeight:{type:ControlType.Number,title:\"Clear Height\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.clearHeight,min:24,max:56,step:1,unit:\"px\",description:\"Clear sits on the filter row, so it sizes on its own.\"}},defaultValue:DEFAULT_BAR_PILLS};export const filterBarPanelControls={type:ControlType.Object,title:\"Panel\",icon:\"color\",controls:{panelSurface:{type:ControlType.Color,title:\"Surface\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.panelSurface},panelBorder:{type:ControlType.Color,title:\"Border\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.panelBorder},panelRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.panelRadius,min:0,max:40,step:1,unit:\"px\"},panelWidth:{type:ControlType.Number,title:\"Width\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.panelWidth,min:220,max:480,step:10,unit:\"px\"}},defaultValue:DEFAULT_BAR_PANEL};export const DEFAULT_BAR_SHELL={fill:DEFAULT_FILTER_BAR_TOKENS.fill,fadeTo:DEFAULT_FILTER_BAR_TOKENS.fadeTo,rowHeight:DEFAULT_FILTER_BAR_TOKENS.rowHeight,filterGap:DEFAULT_FILTER_BAR_TOKENS.filterGap,triggerGap:DEFAULT_FILTER_BAR_TOKENS.triggerGap,paddingX:DEFAULT_FILTER_BAR_TOKENS.paddingX,maxWidth:DEFAULT_FILTER_BAR_TOKENS.maxWidth,showDivider:DEFAULT_FILTER_BAR_TOKENS.showDivider};/**\n * The bar's own shell.\n *\n * A sticky bar has to paint its own background — content scrolling under a\n * transparent one is unreadable — so the fill lives here rather than on the\n * frame around it.\n */export const filterBarShellControls={type:ControlType.Object,title:\"Bar\",icon:\"color\",controls:{fill:{type:ControlType.Color,title:\"Fill\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.fill,description:\"Behind the filter row.\"},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.blur,min:0,max:100,step:1,unit:\"px\",description:\"Frosts the page behind the bar — for a sticky bar with a see-through Fill. Over a solid colour there is nothing behind it to blur.\"},fadeBlur:{type:ControlType.Boolean,title:\"Fade Blur\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.fadeBlur,enabledTitle:\"On\",disabledTitle:\"Off\",// Nothing to decide while Blur is off.\nhidden:props=>!props.blur,description:\"Carries the blur down the second row's fade — the progressive strip under the bar. Off keeps the frost on the solid row only.\"},fadeTo:{// Dead since the fade derives its transparent stop from Fill —\n// two colours could disagree, and on iOS a bare `transparent`\n// greyed the fade. Hidden rather than removed: a control that\n// vanishes takes an instance's stored value with it.\nhidden:()=>true,type:ControlType.Color,title:\"Fade To\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.fadeTo,description:\"What the sort row fades down to. Transparent lets the list show through the bottom edge.\"},rowHeight:{type:ControlType.Number,title:\"Row Height\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.rowHeight,min:40,max:120,step:1,unit:\"px\",description:\"Both rows. Content is centred in it, so this is the bar's rhythm rather than padding added around text.\"},filterGap:{type:ControlType.Number,title:\"Filter Gap\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.filterGap,min:8,max:80,step:1,unit:\"px\",description:\"Between Genre, Mood and the rest. The label's own chevron and count stay tight to it.\"},triggerGap:{type:ControlType.Number,title:\"Label Gap\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.triggerGap,min:0,max:24,step:1,unit:\"px\",description:\"Between a label and its chevron or count. The chevron sits in a box, so it already looks about 2px wider than this.\"},paddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.paddingX,min:0,max:120,step:1,unit:\"px\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.maxWidth,min:0,max:2e3,step:20,unit:\"px\",description:\"Caps the contents and centres them; the fill still runs edge to edge, which is what a bar stuck to the top of the page needs so it lines up with the list under it. 0 for no cap.\"},showDivider:{type:ControlType.Boolean,title:\"Divider\",defaultValue:DEFAULT_FILTER_BAR_TOKENS.showDivider}},defaultValue:DEFAULT_BAR_SHELL};/**\n * Merges the control groups over the defaults, ignoring undefined.\n *\n * A plain spread does not do this. Framer hands an Object control back with\n * every sub-control as a key, and a sub-control added after an instance was\n * placed arrives as `undefined` — which a spread happily writes over the\n * default, so a new Padding control silently produced no padding at all on\n * every instance that already existed.\n */export function mergeBarTokens(...groups){const out={...DEFAULT_FILTER_BAR_TOKENS};for(const group of groups){if(!group)continue;for(const[key,value]of Object.entries(group)){if(value===undefined||value===null)continue;out[key]=value;}}return out;}/**\n * What an unselected pill is filled with.\n *\n * Transparent resolves to the bar's own fill rather than staying see-through.\n * On the fading row a transparent pill lets the list underneath show *through*\n * the button — the empty state was legible straight across Top Sellers and\n * Trending — and a pill you can read the page through is not a button.\n *\n * Deriving it also means a designer who changes Fill does not have to remember\n * to change a second colour to match.\n *//** The bar's own pills, expressed as a `ScrollNudge` skin. */export function nudgeSkin(tokens){return{fill:pillFill(tokens),border:tokens.pillBorder,radius:tokens.pillRadius,color:tokens.textPrimary};}export function pillFill(tokens){const value=(tokens.pillBackground??\"\").trim().toLowerCase();const clear=!value||value===\"transparent\"||/^rgba?\\([^)]*,\\s*0?(\\.0+)?\\s*\\)$/.test(value);return clear?tokens.fill:tokens.pillBackground;}/**\n * The fill at zero alpha, keeping its hue.\n *\n * A fade must end on *its own colour* made invisible, never on plain\n * `transparent`: Safari — iOS above all — interpolates `transparent` as\n * transparent *black*, so a fade from a warm dark fill to `transparent` picks\n * up a grey band on the way down. Deriving the stop from the fill also\n * retires the old Fade To control, which let the two colours disagree.\n */function alphaZero(color){// Framer hands token bindings over as `var(--token-x, fallback) /* … */`.\nconst cleaned=color.replace(/\\/\\*.*?\\*\\//g,\"\").trim();const varMatch=cleaned.match(/^var\\(\\s*--[^,)]+,\\s*(.+)\\)$/);if(varMatch)return alphaZero(varMatch[1]);const hex=cleaned.match(/^#([0-9a-f]{3,8})$/i)?.[1];if(hex){const size=hex.length<=4?1:2;const channel=i=>{const raw=hex.slice(i*size,i*size+size);return parseInt(size===1?raw+raw:raw,16);};return`rgba(${channel(0)}, ${channel(1)}, ${channel(2)}, 0)`;}const rgb=cleaned.match(/^rgba?\\(([^)]+)\\)$/i)?.[1];if(rgb){const[r,g,b]=rgb.split(\",\").map(part=>part.trim());if(r&&g&&b)return`rgba(${r}, ${g}, ${b}, 0)`;}const hsl=cleaned.match(/^hsla?\\(([^)]+)\\)$/i)?.[1];if(hsl){const[h,sat,l]=hsl.split(\",\").map(part=>part.trim());if(h&&sat&&l)return`hsla(${h}, ${sat}, ${l}, 0)`;}// Unrecognised (a named colour, a gradient): let the browser derive it.\n// color-mix keeps the hue in every engine that supports it, which is all\n// of them by now.\nreturn`color-mix(in srgb, ${cleaned}, transparent 100%)`;}/**\n * The sort row's fade.\n *\n * Downward only, and not a general gradient: the point is that the bar is\n * sticky and the list scrolls up underneath it, so the bottom edge has to\n * dissolve rather than end on a line. An angle control would only ever be set\n * wrong — and so would a second colour, which is why the transparent stop is\n * derived from the fill rather than asked for.\n */export function barFade(tokens){return`linear-gradient(180deg, ${tokens.fill}, ${alphaZero(tokens.fill)})`;}/**\n * The blur under the sort row's fade, when Blur is on: one backdrop layer\n * whose *opacity* is tapered by a mask.\n *\n * Honest about the physics: a mask fades the blurred image out, it does not\n * shrink the blur radius on the way down — halfway along you see the blurred\n * and the sharp page crossfaded, not a half-strength blur. A true radius ramp\n * takes a stack of masked layers, each a separate backdrop snapshot for the\n * GPU. On a strip one row tall, underneath the colour fade, the two are close\n * to indistinguishable — so the bar spends one snapshot, not four.\n */export function barFadeBlurLayer(blur){if(blur<=0)return null;const mask=\"linear-gradient(180deg, black 0%, transparent 100%)\";return{position:\"absolute\",inset:0,pointerEvents:\"none\",backdropFilter:`blur(${blur}px)`,WebkitBackdropFilter:`blur(${blur}px)`,maskImage:mask,WebkitMaskImage:mask};}/** Spacing the bar does not expose — one tuned set, like the track row. */export const BAR_METRICS={/** Between the pills on the second row. */pillGap:12,/** Inside a pill. */pillPaddingX:18,/** The count badge and the chevron, which share a footprint. */controlSize:20,/** Between an option's icon and its name. */optionGap:12,optionHeight:40,panelPadding:10,/** The search field. Narrower than a pill row, wide enough for a title. */searchWidth:280};\nexport const __FramerMetadata__ = {\"exports\":{\"barFadeBlurLayer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tagsPillControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_FILTER_BAR_TOKENS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BAR_METRICS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filterBarTextControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_BAR_PANEL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_BAR_SHELL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_BAR_PILLS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"nudgeSkin\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filterBarPanelControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mergeBarTokens\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FilterBarTokens\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_BAR_TEXT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pillFill\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"barFade\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filterBarShellControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filterBarPillControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tokens.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{BAR_METRICS}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";// The one red in the bar. Same hue the modals use for errors, so \"this removes\n// something\" reads the same everywhere.\nconst REMOVE=\"rgb(214,69,69)\";/**\n * The \"2\" next to a filter label, which becomes a clear button on hover.\n *\n * Two jobs in one 20px circle, and that is the point: the count is the only\n * thing telling you a collapsed dropdown is filtering anything, so it is also\n * the only place a \"stop filtering by this\" belongs. A separate × next to every\n * active label would put eight of them in the bar.\n *\n * The pointer events are stopped, not just the click: Radix's popover trigger\n * opens on `pointerdown`, so a click handler alone would clear the filter *and*\n * open the panel it just emptied.\n */export function CountBadge({count,tokens,onClear,label}){const[hover,setHover]=React.useState(false);// Nothing when there is nothing to count. Holding the slot open would keep\n// the labels from shifting on select, but it puts a badge's width of air\n// between every label and its chevron for the whole time nothing is\n// selected — which is most of the time.\nif(count<=0)return null;return /*#__PURE__*/_jsx(\"span\",{role:\"button\",tabIndex:0,\"aria-label\":label,onMouseEnter:()=>setHover(true),onMouseLeave:()=>setHover(false),onPointerDown:event=>{event.stopPropagation();event.preventDefault();},onClick:event=>{event.stopPropagation();event.preventDefault();setHover(false);onClear();},onKeyDown:event=>{if(event.key!==\"Enter\"&&event.key!==\" \")return;event.stopPropagation();event.preventDefault();onClear();},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",minWidth:BAR_METRICS.controlSize,height:BAR_METRICS.controlSize,flexShrink:0,padding:hover?0:\"0 5px\",borderRadius:999,background:hover?REMOVE:tokens.accent,color:hover?\"#ffffff\":tokens.accentText,fontSize:11,fontWeight:700,fontVariantNumeric:\"tabular-nums\",cursor:\"pointer\",userSelect:\"none\",WebkitUserSelect:\"none\",transition:\"background 140ms ease, color 140ms ease\"},children:hover?/*#__PURE__*/_jsx(SoundeeIcon,{name:\"close\",size:12,strokeWidth:2.6}):count});}\nexport const __FramerMetadata__ = {\"exports\":{\"CountBadge\":{\"type\":\"reactComponent\",\"name\":\"CountBadge\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CountBadge.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const BASE=\"https://cdn.jsdelivr.net/npm/@phosphor-icons/core@2/assets\";const WEIGHT_SUFFIX={regular:\"\",bold:\"-bold\",fill:\"-fill\",duotone:\"-duotone\",thin:\"-thin\",light:\"-light\"};const DEFAULT_FALLBACK=\"music-notes\";// All names below return 200 from the Phosphor core CDN. Unmapped values fall\n// back to DEFAULT_FALLBACK, and any unexpected 404 also falls back.\n// Each slug maps to a distinct Phosphor icon within its category (no duplicate\n// icons per filter key). Across categories only `ambient` overlaps, and it uses\n// the same icon in both, so `auto`-style lookups stay unambiguous.\nconst GENRE_ICONS={\"hip-hop\":\"microphone-stage\",trap:\"microphone\",rb:\"heart\",ambient:\"cloud\",rap:\"pen-nib\",pop:\"star\",drill:\"crosshair\",afrobeat:\"sun\",reggaeton:\"globe-hemisphere-west\",rock:\"guitar\",house:\"house\",\"west-coast\":\"sun-horizon\",dancehall:\"speaker-high\",club:\"martini\",\"east-coast\":\"buildings\",abstract:\"atom\",alternative:\"speaker-hifi\",\"new-wave\":\"wave-sine\",\"new-age\":\"sparkle\",dance:\"sneaker\",rage:\"fire\",funk:\"vinyl-record\",\"boom-bap\":\"cassette-tape\",soul:\"hand-heart\",reggae:\"tree-palm\",\"beats-w-hooks\":\"music-notes\",country:\"cowboy-hat\",experimental:\"flask\",\"indie-pop\":\"butterfly\",\"neo-soul\":\"heart-straight\",techno:\"robot\",\"trap-soul\":\"drop-half-bottom\",\"new-school\":\"backpack\",\"alternative-rock\":\"equalizer\",\"jersey-club\":\"sneaker-move\",\"uk-garage\":\"garage\",\"trap-metal\":\"skull\",world:\"globe\",hoodtrap:\"hoodie\",\"rhythmic-soul\":\"metronome\",\"bossa-nova\":\"island\",dubstep:\"waveform\",\"alternative-rb\":\"heartbeat\",amapiano:\"piano-keys\",traphall:\"door-open\",\"pop-rock\":\"star-four\",hyperpop:\"rainbow\",hardcore:\"lightning-slash\",electropop:\"lightning\",\"soul-hip-hop\":\"hand-peace\",\"uk-drill\":\"mask-sad\",afrobeats:\"radio\",\"brazilian-phonk\":\"knife\",latin:\"pepper\",metal:\"sword\",edm:\"sliders\",ethnic:\"campfire\",\"drum-bass\":\"wave-sawtooth\",\"synth-pop\":\"keyboard\",\"afro-pop\":\"sun-dim\",cinematic:\"film-slate\",grime:\"city\",\"alternative-rap\":\"spray-bottle\",phonk:\"ghost\",\"dirty-south\":\"truck\",\"dance-pop\":\"confetti\",\"acid-rap\":\"eyedropper\",\"teen-pop\":\"balloon\",\"latin-trap\":\"cactus\",\"emo-rap\":\"drop\",psychedelic:\"flower-lotus\",zouk:\"boat\",\"pop-rap\":\"crown-simple\",gospel:\"hands-praying\",\"afro-house\":\"flame\",\"deep-house\":\"diamonds-four\",disco:\"disco-ball\",\"cloud-rap\":\"cloud-fog\",\"lo-fi-hip-hop\":\"moon-stars\",\"pop-punk\":\"hand-fist\",downtempo:\"moon\",\"rap-metal\":\"lightning-a\",\"g-funk\":\"car-profile\",\"tech-house\":\"cpu\",arabic:\"star-and-crescent\",\"quiet-storm\":\"cloud-moon\",kizomba:\"heart-half\"};const MOOD_ICONS={bouncy:\"basketball\",dark:\"moon\",energetic:\"lightning\",ambient:\"cloud\",emotional:\"drop\",aggressive:\"fire\",cool:\"sunglasses\",calm:\"leaf\",inspiring:\"lightbulb\",soulful:\"hand-heart\",dramatic:\"mask-sad\",intense:\"flame\",sad:\"smiley-sad\",mellow:\"feather\",angry:\"smiley-angry\",smooth:\"wave-sine\",epik:\"crown-simple\",love:\"heart\",elegant:\"diamond\",carefree:\"paper-plane-tilt\",happy:\"smiley\",\"laid-back\":\"couch\",fun:\"confetti\",calming:\"plant\",cheerful:\"sun\",complex:\"puzzle-piece\",eerie:\"ghost\",relaxed:\"tree\",lively:\"sparkle\",hypnotic:\"spiral\",funky:\"vinyl-record\",depressed:\"cloud-rain\",spacey:\"planet\",passionate:\"wine\",romantic:\"flower\",sentimental:\"heart-straight\",sexy:\"martini\",enthusiastic:\"hand-waving\",trippy:\"rainbow\",gentle:\"butterfly\",light:\"sun-dim\",harsh:\"warning\",strange:\"alien\",whimsical:\"balloon\",humorous:\"mask-happy\"};// Resolved SVG markup cached by URL, with an in-flight map to dedupe fetches.\nconst svgCache=new Map;const inflight=new Map;function buildUrl(name,weight){const suffix=WEIGHT_SUFFIX[weight]??\"\";return`${BASE}/${weight}/${name}${suffix}.svg`;}async function loadSvg(url){const cached=svgCache.get(url);if(cached)return cached;let promise=inflight.get(url);if(!promise){promise=fetch(url).then(res=>res.ok?res.text():null).then(text=>{if(text)svgCache.set(url,text);inflight.delete(url);return text;}).catch(()=>{inflight.delete(url);return null;});inflight.set(url,promise);}return promise;}function resolveName(value,category,override,fallback){if(override&&override.trim())return override.trim();const map=category===\"mood\"?MOOD_ICONS:GENRE_ICONS;return map[(value??\"\").trim()]??fallback;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeFilterIcon({filterValue=\"\",category=\"genre\",weight=\"regular\",color=\"#FFFFFF\",size=20,nameOverride=\"\",fallback=DEFAULT_FALLBACK,style}){const name=resolveName(filterValue,category,nameOverride,fallback);const url=buildUrl(name,weight);const fallbackUrl=buildUrl(fallback||DEFAULT_FALLBACK,weight);const[markup,setMarkup]=React.useState(()=>svgCache.get(url)??null);React.useEffect(()=>{let cancelled=false;const cached=svgCache.get(url);if(cached){setMarkup(cached);return;}setMarkup(null);loadSvg(url).then(svg=>{if(cancelled)return;if(svg){setMarkup(svg);}else if(url!==fallbackUrl){loadSvg(fallbackUrl).then(fb=>{if(!cancelled)setMarkup(fb);});}else{setMarkup(null);}});return()=>{cancelled=true;};},[url,fallbackUrl]);const rawId=React.useId();const cls=`soundee-icon-${rawId.replace(/:/g,\"\")}`;return /*#__PURE__*/_jsx(\"span\",{className:cls,\"aria-hidden\":true,style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:size,height:size,color,flexShrink:0,...style},dangerouslySetInnerHTML:markup?{__html:`<style>.${cls} svg{width:100%;height:100%;display:block}</style>${markup}`}:undefined});}SoundeeFilterIcon.displayName=\"Soundee Filter Icon\";addPropertyControls(SoundeeFilterIcon,{filterValue:{type:ControlType.String,title:\"Filter value\",defaultValue:\"\",placeholder:\"hip-hop, rb, dark...\",description:\"Genre or mood slug. Bind the item slot's filterValue to this prop.\"},category:{type:ControlType.Enum,title:\"Category\",options:[\"genre\",\"mood\"],optionTitles:[\"Genre\",\"Mood\"],defaultValue:\"genre\",description:\"Which icon map to use. Some slugs (e.g. ambient) exist in both genre and mood, so set this per dropdown.\"},weight:{type:ControlType.Enum,title:\"Weight\",options:[\"regular\",\"bold\",\"fill\",\"duotone\",\"thin\",\"light\"],optionTitles:[\"Regular\",\"Bold\",\"Fill\",\"Duotone\",\"Thin\",\"Light\"],defaultValue:\"regular\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFFFFF\"},size:{type:ControlType.Number,title:\"Size\",defaultValue:20,min:8,max:96,step:1,unit:\"px\",description:\"Default size used with Auto layout. Set the frame to a fixed/fill size on canvas to override it.\"},nameOverride:{type:ControlType.String,title:\"Icon override\",defaultValue:\"\",placeholder:\"e.g. heart\",description:\"Force a specific Phosphor icon name; wins over the map. Leave empty to use the value.\"},fallback:{type:ControlType.String,title:\"Fallback\",defaultValue:\"music-notes\",description:\"Phosphor icon used when the value is unmapped or the icon is missing.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeFilterIcon\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SoundeeFilterIcon.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// hidden_scrollbar — a scroller with no visible scrollbar.\n//\n// `data-framer-hide-scrollbars` is Framer's own attribute and it does not reach\n// every scroller a code component makes, so the slot components each injected\n// the same three CSS rules under a generated id. Two copies, and the built-in\n// bar needed a third.\nimport*as React from\"react\";/**\n * Returns an id to put on the scrolling element, and the CSS that hides its\n * bar.\n *\n * Scoped to a generated id rather than a class: two of these on a page must not\n * be able to switch each other off, and a global rule would quietly hide\n * scrollbars the designer put there on purpose.\n */export function useHiddenScrollbar(enabled=true){const rawId=React.useId();const id=`soundee-scroll-${rawId.replace(/:/g,\"\")}`;const css=enabled?`#${id}::-webkit-scrollbar { display: none; }\n           #${id} { -ms-overflow-style: none; scrollbar-width: none; }`:\"\";return{id,css};}\nexport const __FramerMetadata__ = {\"exports\":{\"useHiddenScrollbar\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./hidden_scrollbar.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import SoundeeFilterIcon from\"https://framerusercontent.com/modules/SuYyHPwmgFprmoboAyuK/Lmi3lxnsdmeS0pkOyINA/SoundeeFilterIcon.js\";import{HoverButton,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{useHiddenScrollbar}from\"https://framerusercontent.com/modules/bkPABx8fmYzes1gCdNV5/t03S1xiu8GiyxGsQ4F1E/hidden_scrollbar.js\";import{BAR_METRICS}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";import{iosZoomGuardCss,parseFontSize}from\"https://framerusercontent.com/modules/P542p3u9ykvDUJKb8yyx/GbYAiUB9nBb2l2RLD8El/ios_zoom.js\";// Genre and mood are the two filters with an icon mapping; everything else\n// renders its name alone rather than a fallback glyph repeated forty times.\nconst ICON_FILTER_KEYS=new Set([\"genre\",\"mood\"]);function normalize(value){return value.normalize(\"NFKD\").replace(/[̀-ͯ]/g,\"\").toLowerCase().trim();}/**\n * The body of a filter dropdown: an optional search field over a list of\n * options with their counts.\n *\n * Takes its options and handlers rather than reaching for the store itself, so\n * the same list serves genre, mood, key and collaborator without knowing which\n * one it is drawing.\n */export function OptionList({filterKey,options,isActive,onToggle,tokens,searchable=true,searchPlaceholder=\"Search...\",maxHeight=320,stickySearchSurface}){const[search,setSearch]=React.useState(\"\");const scrollbar=useHiddenScrollbar();const hasIcon=ICON_FILTER_KEYS.has(filterKey);// Roving tabindex: one option is tabbable at a time and the arrows move\n// which. Tab then leaves the list rather than walking through forty\n// genres, which is what a listbox is supposed to do.\nconst[focused,setFocused]=React.useState(0);const optionRefs=React.useRef([]);const filtered=React.useMemo(()=>{const q=normalize(search);if(!q)return options;return options.filter(o=>normalize(o.name??\"\").includes(q)||normalize(String(o.value??\"\")).includes(q));},[options,search]);// The field only earns its space once the list is long enough to scan.\nconst showSearch=searchable&&options.length>8;const focusOption=React.useCallback(index=>{const el=optionRefs.current[index];if(!el)return;setFocused(index);// `block: nearest` so a step down does not recentre the whole list\n// under the pointer — only the row that went out of view moves.\nel.focus();el.scrollIntoView({block:\"nearest\"});},[]);const onListKeyDown=event=>{const last=filtered.length-1;if(last<0)return;switch(event.key){case\"ArrowDown\":event.preventDefault();focusOption(focused>=last?0:focused+1);break;case\"ArrowUp\":event.preventDefault();focusOption(focused<=0?last:focused-1);break;case\"Home\":event.preventDefault();focusOption(0);break;case\"End\":event.preventDefault();focusOption(last);break;}};const rawFieldId=React.useId();const searchFieldId=`soundee-option-search-${rawFieldId.replace(/:/g,\"\")}`;// Falls back to 14 rather than 16 on purpose: a field with no size set\n// renders at the browser's own input default, which is under 16 and zooms.\n// Guessing small keeps the guard on where it is needed.\nconst zoomGuardCss=iosZoomGuardCss(`#${searchFieldId}`,parseFontSize(tokens.fontBody?.fontSize,14));return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",padding:BAR_METRICS.panelPadding,gap:8},children:[showSearch&&/*#__PURE__*/_jsx(\"div\",{style:stickySearchSurface?{position:\"sticky\",top:0,zIndex:1,background:stickySearchSurface,// Out to the panel's edges, so the options\n// cannot peek past the field's sides while\n// they scroll under it.\nmargin:`-${BAR_METRICS.panelPadding}px -${BAR_METRICS.panelPadding}px 0`,padding:`${BAR_METRICS.panelPadding}px ${BAR_METRICS.panelPadding}px 0`}:{display:\"contents\"},children:/*#__PURE__*/_jsx(\"input\",{id:searchFieldId,type:\"text\",value:search,onChange:e=>{setSearch(e.target.value.slice(0,100));// The list under the field just changed; anything but\n// the first row is a stale position.\nsetFocused(0);},// Down from the field steps into the list. Typing keeps\n// working because focus only leaves on the arrow.\nonKeyDown:event=>{if(event.key!==\"ArrowDown\")return;event.preventDefault();focusOption(0);},placeholder:searchPlaceholder,style:{width:\"100%\",boxSizing:\"border-box\",height:44,padding:\"0 14px\",borderRadius:Math.min(tokens.panelRadius,12),border:`1px solid ${tokens.panelBorder}`,background:\"rgba(255,255,255,0.04)\",color:tokens.textPrimary,outline:\"none\",...tokens.fontBody}})}),zoomGuardCss?/*#__PURE__*/_jsx(\"style\",{children:zoomGuardCss}):null,/*#__PURE__*/_jsx(\"style\",{children:scrollbar.css}),/*#__PURE__*/_jsxs(\"div\",{id:scrollbar.id,role:\"listbox\",\"aria-multiselectable\":true,\"aria-label\":`${filterKey} options`,onKeyDown:onListKeyDown,style:{display:\"flex\",flexDirection:\"column\",// A hairline, so two selected options next to each other\n// read as two rather than merging into one block.\ngap:1,maxHeight,overflowY:\"auto\",// So the last row does not sit flush against the panel edge\n// when the list scrolls.\npaddingBottom:2},\"data-framer-hide-scrollbars\":\"true\",children:[filtered.map((option,index)=>{const active=isActive(option.value);return /*#__PURE__*/_jsxs(HoverButton,{ref:el=>{optionRefs.current[index]=el;},role:\"option\",\"aria-selected\":active,tabIndex:index===focused?0:-1,onFocus:()=>setFocused(index),onClick:()=>onToggle(option.value),hoverStyle:{background:tint(tokens.textPrimary,8)},style:{display:\"flex\",alignItems:\"center\",gap:BAR_METRICS.optionGap,width:\"100%\",height:BAR_METRICS.optionHeight,// Without this a flex column that overflows its\n// max-height shrinks every child to fit — which\n// is why Mood and Type Beats came out squashed\n// while Collaborator, the one short enough not\n// to scroll, looked right.\nflexShrink:0,padding:\"0 10px\",border:\"none\",borderRadius:Math.min(tokens.panelRadius,10),background:active?tint(tokens.textPrimary,10):\"transparent\",color:tokens.textPrimary,cursor:\"pointer\",textAlign:\"left\",...tokens.fontBody},children:[hasIcon&&/*#__PURE__*/_jsx(SoundeeFilterIcon,{filterValue:option.value,category:filterKey,size:20,weight:\"regular\",color:active?tokens.textPrimary:tokens.textSecondary,nameOverride:\"\",fallback:\"music-notes\"}),/*#__PURE__*/_jsx(\"span\",{style:{flex:1,minWidth:0,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:option.name}),active?/*#__PURE__*/_jsx(SoundeeIcon,{name:\"check\",size:16,style:{color:tokens.textPrimary}}):option.count!=null&&/*#__PURE__*/_jsx(\"span\",{style:{flexShrink:0,color:tokens.textSecondary,fontVariantNumeric:\"tabular-nums\"},children:option.count})]},option.value);}),filtered.length===0&&/*#__PURE__*/_jsx(\"div\",{style:{padding:\"12px 10px\",textAlign:\"center\",color:tokens.textSecondary,...tokens.fontBody},children:\"No matches\"})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"OptionList\":{\"type\":\"reactComponent\",\"name\":\"OptionList\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OptionList.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import SoundeeRangeFilterStandalone from\"https://framerusercontent.com/modules/6i8xC5KeV0OgNtI3msci/aFPf3OGTwnGFnUzo4gwf/SoundeeRangeFilterStandalone.js\";import{HoverButton}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{SoundeeMenu}from\"https://framerusercontent.com/modules/BN0w3b2Q9pvHMH4QxWME/QOjnDvubFO3lOejZV8za/SoundeeMenu.js\";import{CountBadge}from\"https://framerusercontent.com/modules/qtzQ2YALuWH5HEcoWjyi/DcFzA35mzS6OsATJ2FiU/CountBadge.js\";import{OptionList}from\"https://framerusercontent.com/modules/fV7eoagB9SMwSI2vlYtp/HznWmBe6ljrV1LYBNWGC/OptionList.js\";import{getUserFilterCount,isKeyAtDefault}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";import{BAR_METRICS}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";/**\n * One labelled dropdown in the bar — \"Genre ⌄\" and the panel under it.\n *\n * The body is chosen from the schema's own `type`, not from a list of which\n * keys are ranges. The schema already knows that BPM and Price are ranges while\n * Key and Collaborator are multi-selects; restating it here is how the bar ends\n * up drawing a slider for something that has options.\n */export function FilterDropdown({filterKey,label,tokens,isCanvas}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;// Subscribing here is what re-renders the count badge when a filter moves,\n// and what brings the options in once the store's filters endpoint answers.\nconst store=Filters.useStore();const[open,setOpen]=React.useState(false);const def=Filters.schema.find(f=>f.key===filterKey);const name=label||def?.name||filterKey;const options=Filters.getOptions(filterKey);// The visitor's own, the page default discounted: rnb-by-default plus\n// trap is one filter added, and the chip strip draws exactly one.\nconst activeCount=getUserFilterCount(Filters,store,filterKey,\"committed\");// The badge's × clears the filter, which now means \"back to the page's\n// default\". On a curated page sitting on exactly that default the click\n// would land on the value it already holds: no change, no URL write, not\n// even a history entry. So the badge gives way to the chevron until there\n// is something to take back.\nconst atDefault=isKeyAtDefault(Filters,store,filterKey,\"committed\");// A store with no services has no service types to offer. Wait for the\n// endpoint before judging, or every filter greys out on load — and never\n// grey out one that is already filtering, or a visitor cannot undo it.\nconst empty=!isCanvas&&store.optionsLoaded&&activeCount===0&&!Filters.hasValues(filterKey);const handleToggle=React.useCallback(value=>{Filters.toggleFilter(filterKey,value,true);},[Filters,filterKey]);const isActive=React.useCallback(value=>Filters.isActive(filterKey,value),[Filters,filterKey]);if(!def)return null;const trigger=/*#__PURE__*/_jsxs(HoverButton,{\"aria-label\":name,\"aria-disabled\":empty,disabled:empty,hoverStyle:empty?{}:{color:tokens.textSecondary},style:{display:\"inline-flex\",alignItems:\"center\",gap:tokens.triggerGap,border:\"none\",background:\"transparent\",padding:0,cursor:empty?\"default\":\"pointer\",whiteSpace:\"nowrap\",// No opacity: a designer who sets the label colour to white\n// should get white, not 82% of it. Nothing to pick is the one\n// case that earns a muted label.\ncolor:empty?tokens.textSecondary:tokens.textPrimary,...tokens.fontLabel},children:[name,/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:BAR_METRICS.controlSize,height:BAR_METRICS.controlSize,flexShrink:0},children:empty?null:activeCount>0&&!atDefault?/*#__PURE__*/_jsx(CountBadge,{count:activeCount,tokens:tokens,label:`Clear ${name}`,onClear:()=>Filters.resetFilter(filterKey,true)}):/*#__PURE__*/_jsx(SoundeeIcon,{name:\"chevronDown\",size:18,style:{color:tokens.textSecondary,transform:open?\"rotate(180deg)\":\"none\",transition:\"transform 150ms ease\"}})})]});const body=def.type===\"range\"?/*#__PURE__*/_jsx(\"div\",{style:{padding:BAR_METRICS.panelPadding+6},children:/*#__PURE__*/_jsx(SoundeeRangeFilterStandalone,{filterKey:filterKey,label:\"\",unit:filterKey===\"price\"?\"$\":def.name,// The range control offers a single-exact-value mode and it\n// was left at its default of off, so the built-in bar\n// quietly had less than the slot version. \"Exactly 90 BPM\"\n// is a real thing to look for.\nprecise:true,preciseLabel:\"Exact\",colors:{track:\"rgba(255,255,255,0.12)\",range:tokens.accent,handle:tokens.accent,label:tokens.textSecondary},inputStyle:{background:\"rgba(255,255,255,0.04)\",border:{borderWidth:1,borderStyle:\"solid\",borderColor:tokens.panelBorder},radius:Math.min(tokens.panelRadius,12),color:tokens.textPrimary,height:44},quickRangeStyle:{background:\"rgba(255,255,255,0.04)\",activeBackground:tokens.accent,color:tokens.textPrimary,activeColor:tokens.accentText,border:{borderWidth:1,borderStyle:\"solid\",borderColor:tokens.panelBorder},radius:Math.min(tokens.panelRadius,12)}})}):/*#__PURE__*/_jsx(OptionList,{filterKey:filterKey,options:options,isActive:isActive,onToggle:handleToggle,tokens:tokens});// Nothing to pick, so nothing to open. Returning the label on its own\n// beats a menu that slides out an empty panel.\nif(empty)return trigger;return /*#__PURE__*/_jsx(SoundeeMenu,{trigger:trigger,open:open,onOpenChange:setOpen,label:name,width:tokens.panelWidth,surface:tokens.panelSurface,border:tokens.panelBorder,radius:tokens.panelRadius,isCanvas:isCanvas,children:body});}\nexport const __FramerMetadata__ = {\"exports\":{\"FilterDropdown\":{\"type\":\"reactComponent\",\"name\":\"FilterDropdown\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n/**\n * Did this value come from the page's own defaults rather than from the\n * visitor?\n *\n * The scoped reset is what a placed Soundee Filter Reset runs, so it has to\n * honour the same floor as the bar's Clear: a curated page (`/exclusive-beats`\n * starting on `price_over=1`) keeps its baseline, and the button counts — and\n * therefore shows — only what the visitor added on top of it.\n */function isFromDefaults(store,key,value){const fallback=store.defaults?.[key];if(Array.isArray(fallback))return fallback.includes(value);if(fallback==null||fallback===false||fallback===\"\")return false;return fallback===value;}export function parseFilterKeyList(input){return(input??\"\").split(\",\").map(key=>key.trim()).filter(Boolean);}export function parseFilterValueRules(input){return(input??\"\").split(\",\").map(entry=>entry.trim()).filter(Boolean).map(entry=>{const separator=entry.indexOf(\"=\");if(separator===-1)return{value:entry};const key=entry.slice(0,separator).trim();const value=entry.slice(separator+1).trim();return key?{key,value}:{value};}).filter(rule=>rule.value.length>0||!!rule.key);}function isEmptyFilterValue(value){if(value==null||value===false||value===\"\")return true;if(Array.isArray(value)&&value.length===0)return true;return false;}export function isKeyExcluded(excludedKeys,key){return excludedKeys.includes(key);}export function isValueScoped(rules,key,value,fallbackKey){return rules.some(rule=>{if(rule.key){if(rule.key!==key)return false;if(rule.value===\"\")return isEmptyFilterValue(value);return rule.value===String(value);}if(fallbackKey){if(key!==fallbackKey)return false;if(rule.value===\"\")return isEmptyFilterValue(value);return rule.value===String(value);}if(rule.value===\"\")return isEmptyFilterValue(value);return rule.value===String(value);});}function shouldCountValue(key,value,includeRules,excludeRules,excludedKeys,fallbackKey){if(isKeyExcluded(excludedKeys,key))return false;if(includeRules.length>0&&!isValueScoped(includeRules,key,value,fallbackKey)){return false;}return!isValueScoped(excludeRules,key,value,fallbackKey);}export function filterOptionsByScope(options,key,includeRules,excludeRules){return options.filter(option=>includeRules.length>0?isValueScoped(includeRules,key,option.value,key):true).filter(option=>!isValueScoped(excludeRules,key,option.value,key));}function getTargetDefs(schema,keys,excludedKeys){const keySet=new Set(keys);return schema.filter(def=>{if(isKeyExcluded(excludedKeys,def.key))return false;return keySet.size===0||keySet.has(def.key);});}function getFallbackKey(keys){return keys.length===1?keys[0]:undefined;}export function getScopedFilterCount(filters,store,keys,includeRules,excludeRules,excludedKeys,source=\"pending\",/**\n     * Discount what the page itself put there. Off by default: two shipped\n     * components read this number purely to display it (Soundee Filter State,\n     * and Soundee Filter Button in Advanced mode), and silently subtracting a\n     * page default there would make them disagree with the identical button\n     * that has Advanced switched off. Only the control that UNDOES something\n     * asks for it — see SoundeeFilterReset.\n     */discountDefaults=false){const values=store[source];const fallbackKey=getFallbackKey(keys);let count=0;for(const def of getTargetDefs(filters.schema,keys,excludedKeys)){if(def.type===\"multi\"){const arr=Array.isArray(values[def.key])?values[def.key]:[];count+=arr.filter(value=>(!discountDefaults||!isFromDefaults(store,def.key,value))&&shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)).length;}else if(def.type===\"single\"){const value=values[def.key];if(isEmptyFilterValue(value)){if(includeRules.length>0&&shouldCountValue(def.key,null,includeRules,excludeRules,excludedKeys,fallbackKey)){count++;}}else if((!discountDefaults||!isFromDefaults(store,def.key,value))&&shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){count++;}}else if(def.type===\"boolean\"){if(values[def.key]===true&&(!discountDefaults||store.defaults?.[def.key]!==true)&&shouldCountValue(def.key,\"true\",includeRules,excludeRules,excludedKeys,fallbackKey)){count++;}}else if(def.type===\"text\"){const value=values[def.key];if(typeof value===\"string\"&&value.length>0&&(!discountDefaults||!isFromDefaults(store,def.key,value))&&shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){count++;}}else if(def.type===\"range\"){// Value-level scoping is intentionally not applied to ranges. A\n// range is counted only when its key is included in the key scope.\nif(includeRules.length>0||excludeRules.length>0)continue;const over=values[def.overKey];const under=values[def.underKey];const meta=filters.getMeta(def.key);const defaultOver=discountDefaults?store.defaults?.[def.overKey]??null:null;const defaultUnder=discountDefaults?store.defaults?.[def.underKey]??null:null;if(over!=null&&over!==(meta?.min??null)&&over!==defaultOver)count++;if(under!=null&&under!==(meta?.max??null)&&under!==defaultUnder)count++;}}return count;}export function getScopedChangedCount(filters,store,keys,includeRules,excludeRules,excludedKeys){const pendingCount=getScopedFilterCount(filters,store,keys,includeRules,excludeRules,excludedKeys,\"pending\");const committedCount=getScopedFilterCount(filters,store,keys,includeRules,excludeRules,excludedKeys,\"committed\");if(pendingCount!==committedCount)return Math.max(pendingCount,1);const fallbackKey=getFallbackKey(keys);for(const def of getTargetDefs(filters.schema,keys,excludedKeys)){const pending=store.pending[def.key];const committed=store.committed[def.key];if(def.type!==\"range\"&&shouldCountValue(def.key,pending,includeRules,excludeRules,excludedKeys,fallbackKey)&&JSON.stringify(pending??null)!==JSON.stringify(committed??null)){return 1;}}return 0;}export function getScopedFilterValue(filters,store,keys,includeRules,excludeRules,excludedKeys,source=\"pending\"){const values=store[source];const fallbackKey=getFallbackKey(keys);const labels=[];for(const def of getTargetDefs(filters.schema,keys,excludedKeys)){if(def.type===\"multi\"){const arr=Array.isArray(values[def.key])?values[def.key]:[];const options=filters.getOptions(def.key);for(const value of arr){if(shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){labels.push(options.find(option=>option.value===value)?.name??value);}}}else if(def.type===\"single\"){const value=values[def.key];const options=filters.getOptions(def.key);if(isEmptyFilterValue(value)){if(includeRules.length>0&&shouldCountValue(def.key,null,includeRules,excludeRules,excludedKeys,fallbackKey)){labels.push(options.find(option=>option.value===\"\")?.name??def.name);}}else if(shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){labels.push(options.find(option=>option.value===value)?.name??String(value));}}else if(def.type===\"boolean\"){if(values[def.key]===true&&shouldCountValue(def.key,\"true\",includeRules,excludeRules,excludedKeys,fallbackKey)){labels.push(def.name);}}else if(def.type===\"text\"){const value=values[def.key];if(typeof value===\"string\"&&value.length>0&&shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){labels.push(value);}}}return labels.join(\", \");}export function resetScopedFilters(filters,store,keys,includeRules,excludeRules,excludedKeys,instant){const fallbackKey=getFallbackKey(keys);let changed=false;for(const def of getTargetDefs(filters.schema,keys,excludedKeys)){if(def.type===\"multi\"){const current=Array.isArray(store.pending[def.key])?store.pending[def.key]:[];for(const value of current){if(isFromDefaults(store,def.key,value))continue;if(shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){filters.toggleFilter(def.key,value,false);changed=true;}}}else if(def.type===\"single\"){const value=store.pending[def.key];if(isEmptyFilterValue(value)){if(includeRules.length>0&&shouldCountValue(def.key,null,includeRules,excludeRules,excludedKeys,fallbackKey)){filters.setSingle(def.key,null,false);changed=true;}}else if(!isFromDefaults(store,def.key,value)&&shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){filters.setSingle(def.key,(store.defaults?.[def.key])??null,false);changed=true;}}else if(def.type===\"boolean\"){if(store.pending[def.key]===true&&store.defaults?.[def.key]!==true&&shouldCountValue(def.key,\"true\",includeRules,excludeRules,excludedKeys,fallbackKey)){filters.setBoolean(def.key,false,false);changed=true;}}else if(def.type===\"text\"){const value=store.pending[def.key];if(typeof value===\"string\"&&value.length>0&&!isFromDefaults(store,def.key,value)&&shouldCountValue(def.key,value,includeRules,excludeRules,excludedKeys,fallbackKey)){filters.setText(def.key,(store.defaults?.[def.key])??\"\",false);changed=true;}}else if(def.type===\"range\"){if(includeRules.length>0||excludeRules.length>0)continue;const over=store.pending[def.overKey];const under=store.pending[def.underKey];const defaultOver=store.defaults?.[def.overKey]??null;const defaultUnder=store.defaults?.[def.underKey]??null;// Mirrors getScopedFilterCount's range branch exactly, and that\n// matters twice over. An untouched range holds `undefined` while\n// the default coalesces to `null`, so comparing the two directly\n// was true on every pass — every scoped reset touching a range\n// fired a no-op setRange and then applyFilters(), committing the\n// whole pending map. And a branch that acts on drift its own\n// button cannot see is a button that hides while there is still\n// something to do. Restoring a default the visitor removed is the\n// bar's symmetric Reset, here as for every other type.\nconst meta=filters.getMeta(def.key);const overActive=over!=null&&over!==(meta?.min??null)&&over!==defaultOver;const underActive=under!=null&&under!==(meta?.max??null)&&under!==defaultUnder;if(overActive||underActive){filters.setRange(def.overKey,def.underKey,defaultOver,defaultUnder,false);changed=true;}}}if(changed&&instant)filters.applyFilters();}\nexport const __FramerMetadata__ = {\"exports\":{\"getScopedFilterCount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getScopedChangedCount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getScopedFilterValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isValueScoped\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isKeyExcluded\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parseFilterKeyList\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resetScopedFilters\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parseFilterValueRules\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filterOptionsByScope\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FilterValueRule\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./filter_value_scope.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// active_chips — \"what the visitor narrowed by\", as a flat list.\n//\n// Lifted out of `SoundeeActiveFilters`, which held the only copy. The built-in\n// filter bar shows the same chips, and the rules here are not obvious enough to\n// write twice: a multi-select contributes one chip per value while a range\n// contributes one for the pair, a chip's label prefers the option's display\n// name over its slug, and removing one has a different call per filter type.\n//\n// The page's own defaults are left out. Every chip here carries a cross, so the\n// row is a list of things you can take off — and a curated page's floor\n// (`/exclusive-beats` on `price_over=1`) is not one of them. It is still\n// applied, still shown in the filter panel, and still changeable there; it just\n// is not the visitor's to remove in passing.\nimport*as React from\"react\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{isKeyExcluded}from\"https://framerusercontent.com/modules/9f3eijyaBZtpf1nnWjXI/1DVEfzGSgPKiAJ0W3Mr3/filter_value_scope.js\";import{getUserFilterCount,isDefaultValue}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";export function useActiveFilterChips({filterKey=\"\",excludeKeys=[],instant=true}={}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const source=instant?\"committed\":\"pending\";const excludeKey=excludeKeys.join(\"\\x01\");return React.useMemo(()=>{const result=[];const values=store[source];for(const def of Filters.schema){if(filterKey&&def.key!==filterKey)continue;if(isKeyExcluded(excludeKeys,def.key))continue;if(def.type===\"multi\"){const val=values[def.key];const arr=Array.isArray(val)?val:[];const options=Filters.getOptions(def.key);for(const v of arr){if(isDefaultValue(store,def.key,v))continue;const opt=options.find(o=>o.value===v);result.push({key:`${def.key}:${v}`,// The slug is the fallback, not the label: \"west-coast\"\n// is what the API calls it, not what a visitor picked.\nlabel:opt?.name??v,filterKey:def.key,onRemove:()=>Filters.toggleFilter(def.key,v,instant)});}continue;}if(def.type===\"single\"){const label=Filters.getFilterValue(def.key,source);if(label&&!isDefaultValue(store,def.key,values[def.key])){result.push({key:def.key,label:`${def.name}: ${label}`,filterKey:def.key,onRemove:()=>Filters.resetFilter(def.key,instant)});}continue;}if(def.type===\"range\"||def.type===\"boolean\"){if(getUserFilterCount(Filters,store,def.key,source)>0){result.push({key:def.key,label:def.type===\"boolean\"?def.name:`${def.name}: ${Filters.getFilterValue(def.key,source)}`,filterKey:def.key,onRemove:()=>Filters.resetFilter(def.key,instant)});}continue;}// No chip for a text key. The search term is already on screen in\n// the field that holds it, with its own clear — a chip repeating\n// it was a second copy to take off, and on a phone it sat in a\n// different place from the input it mirrored.\n}return result;// eslint-disable-next-line react-hooks/exhaustive-deps\n},[Filters,store.committed,store.pending,store.defaults,store.options,store.meta,source,instant,filterKey,excludeKey]);}\nexport const __FramerMetadata__ = {\"exports\":{\"ActiveChipOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useActiveFilterChips\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ActiveChip\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport*as React from\"react\";const EMPTY_EDGES={start:false,end:false};function getScrollMetrics(element,axis){if(axis===\"vertical\"){return{current:element.scrollTop,max:Math.max(0,element.scrollHeight-element.clientHeight)};}return{current:element.scrollLeft,max:Math.max(0,element.scrollWidth-element.clientWidth)};}export function measureScrollEdges(element,axis){const{current,max}=getScrollMetrics(element,axis);return{start:max>1&&current>1,end:max>1&&current<max-1};}export function clampScrollWithinBounds(element,axis){const{current,max}=getScrollMetrics(element,axis);if(current<=max)return;if(axis===\"vertical\")element.scrollTop=max;else element.scrollLeft=max;}export function useScrollEdges(scrollRef,{enabled,axis,contentKey}){const[edges,setEdges]=React.useState(EMPTY_EDGES);React.useEffect(()=>{if(!enabled){setEdges(prev=>prev.start||prev.end?EMPTY_EDGES:prev);return;}const element=scrollRef.current;if(!element)return;const setMeasuredEdges=()=>{const next=measureScrollEdges(element,axis);setEdges(prev=>prev.start===next.start&&prev.end===next.end?prev:next);};const rafs=[];let settleTimer;// Scroll events are read-only so native iOS elastic overscroll can\n// bounce back naturally. Clamping is reserved for layout/content changes.\nconst handleScroll=()=>{setMeasuredEdges();};const scheduleLayoutUpdate=()=>{clampScrollWithinBounds(element,axis);setMeasuredEdges();rafs.push(window.requestAnimationFrame(()=>{clampScrollWithinBounds(element,axis);setMeasuredEdges();}));rafs.push(window.requestAnimationFrame(()=>{rafs.push(window.requestAnimationFrame(()=>{clampScrollWithinBounds(element,axis);setMeasuredEdges();}));}));if(settleTimer!==undefined)window.clearTimeout(settleTimer);settleTimer=window.setTimeout(()=>{clampScrollWithinBounds(element,axis);setMeasuredEdges();},350);};scheduleLayoutUpdate();element.addEventListener(\"scroll\",handleScroll,{passive:true});const ro=new ResizeObserver(scheduleLayoutUpdate);ro.observe(element);for(const child of Array.from(element.children))ro.observe(child);const mo=new MutationObserver(scheduleLayoutUpdate);mo.observe(element,{childList:true,subtree:true,characterData:true});return()=>{for(const raf of rafs)window.cancelAnimationFrame(raf);if(settleTimer!==undefined)window.clearTimeout(settleTimer);element.removeEventListener(\"scroll\",handleScroll);ro.disconnect();mo.disconnect();};},[enabled,axis,contentKey,scrollRef]);return edges;}\nexport const __FramerMetadata__ = {\"exports\":{\"ScrollAxis\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ScrollEdges\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"measureScrollEdges\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useScrollEdges\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clampScrollWithinBounds\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./scroll_edges.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// edge_fade — the mask and the nudge buttons for a scroller.\n//\n// `useScrollEdges` already answered \"is there more this way\"; turning that into\n// a mask-image and a scrollBy was written out twice, identically, in\n// `SoundeeActiveFilters` and `SoundeeSuggestedTags`. The built-in bar wants the\n// same thing, and a third copy of a four-stop gradient string is three too many.\nimport*as React from\"react\";import{useScrollEdges}from\"https://framerusercontent.com/modules/UcJY8bef4OXgK6DQqhuG/PHv6OZLOdAGJRM52umj4/scroll_edges.js\";/**\n * Fades whichever edge has content past it, and scrolls a screen at a time.\n *\n * The mask is only applied on the sides that can actually scroll, so a list\n * that fits is not softened at both ends for no reason — a permanent fade reads\n * as a visual style and stops meaning \"there is more\".\n */export function useEdgeFade(scrollRef,{enabled,axis=\"horizontal\",contentKey,maskWidth=24,mask=true}){const isVertical=axis===\"vertical\";const edges=useScrollEdges(scrollRef,{enabled,axis,contentKey});const maskStyle=React.useMemo(()=>{if(!enabled||!mask)return{};if(!edges.start&&!edges.end)return{};const dir=isVertical?\"to bottom\":\"to right\";const startStop=edges.start?\"transparent 0\":\"black 0\";const startSolid=edges.start?`black ${maskWidth}px`:\"black 0\";const endSolid=edges.end?`black calc(100% - ${maskWidth}px)`:\"black 100%\";const endStop=edges.end?\"transparent 100%\":\"black 100%\";const image=`linear-gradient(${dir}, ${startStop}, ${startSolid}, ${endSolid}, ${endStop})`;return{maskImage:image,WebkitMaskImage:image};},[enabled,mask,edges.start,edges.end,isVertical,maskWidth]);const scrollByDir=React.useCallback(dir=>{const el=scrollRef.current;if(!el)return;// Eight tenths rather than a full page: the item you were looking at\n// stays on screen, so you keep your place in the list.\nif(isVertical){el.scrollBy({top:dir*el.clientHeight*.8,behavior:\"smooth\"});}else{el.scrollBy({left:dir*el.clientWidth*.8,behavior:\"smooth\"});}},[scrollRef,isVertical]);return{edges,maskStyle,scrollByDir};}\nexport const __FramerMetadata__ = {\"exports\":{\"EdgeFadeOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useEdgeFade\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./edge_fade.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{AnimatePresence,motion}from\"framer-motion\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{useActiveFilterChips}from\"https://framerusercontent.com/modules/5KWA9y5WGC4UAKiE6GpP/ES89NtRQ7VKyiVuBW2z4/active_chips.js\";import{HoverButton,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{useEdgeFade}from\"https://framerusercontent.com/modules/OPQbGb52rDGZFY06BqrF/32s6Lmy3sSMQq3NMj19L/edge_fade.js\";import{useHiddenScrollbar}from\"https://framerusercontent.com/modules/bkPABx8fmYzes1gCdNV5/t03S1xiu8GiyxGsQ4F1E/hidden_scrollbar.js\";import{CHIP_MOTION}from\"https://framerusercontent.com/modules/GhX8WeO9A1GCVSf8fZPb/MMvnyDD49ddz2YRxdIZB/list_motion.js\";import{ScrollNudge}from\"https://framerusercontent.com/modules/d2xosHykSlwJdDclWBho/5G618v3tkvFoWyo6lmym/ScrollNudge.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{BAR_METRICS,nudgeSkin}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";import{hasUserFilters,isMobileResetKey,resetValuesFor}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";// Sort only. It is shown as pills and there is always one active — an empty\n// sort is still a sort, so a chip for it could never be removed.\n//\n// Search *is* listed, even though it has its own field: the chip is how you\n// clear it, and a filter row that leaves one filter out is a row you cannot\n// trust to be showing everything.\n// `list_type` joins sort for the same reason: the control that sets it is\n// visible in the bar and shows its own state, so a chip beside a lit heart is\n// a second way to say one thing.\nconst EXCLUDED=[\"sort\",\"list_type\"];/** The removable chips for whatever is currently filtering the list. */export function ActiveChips({tokens,filterKey=\"\",instant=true}){const chips=useActiveFilterChips({filterKey,excludeKeys:EXCLUDED,instant});const scrollRef=React.useRef(null);const contentKey=chips.map(chip=>chip.key).join(\"|\");const{edges,maskStyle,scrollByDir}=useEdgeFade(scrollRef,{enabled:chips.length>0,contentKey});const scrollbar=useHiddenScrollbar();// Kept mounted on an empty list so the last chip can animate out.\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",display:\"flex\",alignItems:\"center\",flex:\"1 1 0\",minWidth:0,// Its own stacking context. Without it the nudge's z-index\n// is measured against the whole page, so a button meant to sit\n// over its own scroller ends up over the bar's search field\n// instead — the scroller is what it belongs to, not the page.\nisolation:\"isolate\"},children:[/*#__PURE__*/_jsx(\"style\",{children:scrollbar.css}),/*#__PURE__*/_jsx(\"div\",{id:scrollbar.id,ref:scrollRef,\"data-framer-hide-scrollbars\":\"true\",style:{// The chips' containing block, and this is load-bearing:\n// AnimatePresence's popLayout takes a leaving chip out of\n// flow with `position: absolute`, which then resolves\n// against the nearest positioned ancestor. Without this\n// that is the wrapper outside the scroller, so the chip is\n// both aligned to the wrong box and exempt from this\n// element's overflow — an exit landing mid-window during a\n// scroll. Anchored here, it can only ever leave inside its\n// own scroller.\nposition:\"relative\",display:\"flex\",alignItems:\"center\",gap:BAR_METRICS.pillGap,width:\"100%\",minWidth:0,overflowX:\"auto\",overflowY:\"hidden\",...maskStyle},children:/*#__PURE__*/_jsx(AnimatePresence,{initial:false,mode:\"popLayout\",children:chips.map(chip=>/*#__PURE__*/_jsx(motion.span,{...CHIP_MOTION,style:{display:\"inline-flex\",flexShrink:0},children:/*#__PURE__*/_jsxs(HoverButton,{onClick:chip.onRemove,\"aria-label\":`Remove ${chip.label}`,hoverStyle:{background:`color-mix(in srgb, #000 10%, ${tokens.accent})`},style:{display:\"inline-flex\",alignItems:\"center\",gap:10,flexShrink:0,height:tokens.pillHeight,padding:`0 ${Math.max(0,tokens.pillPaddingX-4)}px`,borderRadius:tokens.pillRadius,border:`1px solid ${tokens.accent}`,background:tokens.accent,color:tokens.accentText,cursor:\"pointer\",whiteSpace:\"nowrap\",...tokens.fontBody},children:[chip.label,/*#__PURE__*/_jsx(SoundeeIcon,{name:\"close\",size:16,strokeWidth:2.4})]})},chip.key))})}),/*#__PURE__*/_jsx(ScrollNudge,{side:\"start\",visible:edges.start,onClick:()=>scrollByDir(-1),skin:nudgeSkin(tokens),label:\"Scroll filters left\",size:tokens.pillHeight}),/*#__PURE__*/_jsx(ScrollNudge,{side:\"end\",visible:edges.end,onClick:()=>scrollByDir(1),skin:nudgeSkin(tokens),label:\"Scroll filters right\",size:tokens.pillHeight})]});}/**\n * Puts the list back the way the page arrived.\n *\n * Reset rather than Clear, and that is not only wording. On a plain page the\n * baseline is empty and this is the old \"clear everything\". On a curated page\n * (`/exclusive-beats` starting on a price floor) the baseline is that\n * curation, so the button restores it instead of dropping it — and it also\n * appears when the visitor has taken one of the page's own filters OFF, which\n * is the only way back short of a reload.\n *\n * Renders nothing while the list is still on its baseline, so the bar does not\n * carry a dead control the whole time a visitor is browsing.\n */export function ResetButton({tokens,floating=false}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();// Drifted from the baseline in either direction — a filter added, or one\n// of the page's own removed. Sort is left out: an empty sort is still a\n// sort, so it can never be the thing that needs resetting. Floating — the\n// mobile pill — asks about the drawer's keys plus the favorites heart\n// (a filter that lives outside the drawer), but not the search beside it:\n// that has its own clear, and this button must not appear for a term it\n// would not touch.\nconst drifted=React.useMemo(()=>hasUserFilters(Filters,store,\"committed\",floating?isMobileResetKey:undefined),[Filters,store.committed,store.defaults,store.meta,store.options,floating]);const reset=React.useCallback(()=>{if(!floating){Filters.resetFilters(true);return;}// Drawer filters and the heart back to the page's baseline in one\n// commit — one history entry — leaving sort and the search alone.\nconst keys=Filters.schema.filter(isMobileResetKey).map(def=>def.key);Filters.setValues(resetValuesFor(Filters,store,keys));},[Filters,store,floating]);if(!drifted)return null;return /*#__PURE__*/_jsx(HoverButton,{onClick:reset,hoverStyle:{background:tint(\"rgb(240,120,120)\",14)},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0,height:tokens.clearHeight,padding:`0 ${tokens.pillPaddingX}px`,borderRadius:floating?999:tokens.pillRadius,border:\"1px solid rgb(240,120,120)\",background:floating?\"rgba(16,16,16,0.92)\":\"transparent\",color:\"rgb(240,120,120)\",cursor:\"pointer\",whiteSpace:\"nowrap\",...floating?{pointerEvents:\"auto\",boxShadow:\"0 8px 24px rgba(0,0,0,0.35)\"}:null,...tokens.fontBody},children:\"Reset\"});}\nexport const __FramerMetadata__ = {\"exports\":{\"ResetButton\":{\"type\":\"reactComponent\",\"name\":\"ResetButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"ActiveChips\":{\"type\":\"reactComponent\",\"name\":\"ActiveChips\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{AnimatePresence,motion}from\"framer-motion\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{useEntityCount}from\"https://framerusercontent.com/modules/Z21HBVFqpyLxpOvVRUld/2v7AAFuHCDHvjOmkHZwT/entity_count.js\";import{useModalTheme}from\"https://framerusercontent.com/modules/0GpgGzS00VxJis3gSiB4/xQvXV8rHdeXnAzSd0ksq/registry.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{HoverButton}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import SoundeeRangeFilterStandalone from\"https://framerusercontent.com/modules/6i8xC5KeV0OgNtI3msci/aFPf3OGTwnGFnUzo4gwf/SoundeeRangeFilterStandalone.js\";import{ActiveChips}from\"https://framerusercontent.com/modules/ZjboTQYpMTUoT9KtD9wT/xKUfFKL4XFKsHxPXfENU/ActiveChips.js\";import{useActiveFilterChips}from\"https://framerusercontent.com/modules/5KWA9y5WGC4UAKiE6GpP/ES89NtRQ7VKyiVuBW2z4/active_chips.js\";import{getUserFilterCount,isDrawerKey,isKeyAtDefault}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";import{CHIP_MOTION}from\"https://framerusercontent.com/modules/GhX8WeO9A1GCVSf8fZPb/MMvnyDD49ddz2YRxdIZB/list_motion.js\";import{OptionList}from\"https://framerusercontent.com/modules/fV7eoagB9SMwSI2vlYtp/HznWmBe6ljrV1LYBNWGC/OptionList.js\";/**\n * Every filter on a phone, one screen at a time.\n *\n * A bar of dropdowns is a desktop shape: it needs room for a row of labels and\n * a popover with somewhere to open into. On a phone the same filters become a\n * list you drill into — one filter per screen, back out, and one button at the\n * bottom that says how many results you are about to get.\n *\n * Everything inside edits *pending* filters. Nothing reaches the list until\n * \"Show results\", which is what makes the count on that button a promise rather\n * than a running total, and what lets someone change their mind by closing.\n *//** Sort is not a filter you browse, and the heart has its own control. */// Mirrors the EXCLUDED list inside ActiveChips: the strip has to predict\n// exactly what that component will draw.\nconst CHIP_EXCLUDED=[\"sort\",\"list_type\"];export function FilterSheet({open,onOpenChange,tokens}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const theme=useModalTheme();const{count}=useEntityCount(entityType,\"pending\");// Which filter is open, or null for the list of them.\nconst[page,setPage]=React.useState(null);// Back to the list every time it opens. Reopening on the screen you left is\n// disorienting when the thing you left was three taps deep.\nReact.useEffect(()=>{if(!open)setPage(null);},[open]);const defs=React.useMemo(()=>Filters.schema.filter(def=>isDrawerKey(def)&&Filters.hasValues(def.key)),[Filters,store.options,store.meta,store.optionsLoaded]);const activeDef=page?Filters.schema.find(d=>d.key===page):null;// The visitor's own filters, the page's defaults discounted — the same\n// number the chips draw and the desktop badge shows. A curated page used to\n// open on \"Filters (1)\" with nothing the visitor had done: the default is\n// ticked in the panel, which is the page's identity, not a filter to count.\nconst pageCount=page?getUserFilterCount(Filters,store,page,\"pending\"):0;const totalActive=React.useMemo(()=>Filters.schema.reduce((sum,def)=>isDrawerKey(def)?sum+getUserFilterCount(Filters,store,def.key,\"pending\"):sum,0),[Filters,store.pending,store.defaults,store.options]);// One number for whichever screen is open: this filter's, or all of them.\nconst headingCount=page?pageCount:totalActive;// What Reset can actually put back. The count above is additive — what was\n// added on top of the baseline — but Reset is about drift from it in either\n// direction: a filter added, or one of the page's own taken off.\n// Exactly what the strip below will render. ActiveChips deliberately stays\n// mounted at zero chips so its last one can animate out, so the container\n// has to know — gated on headingCount it drew a bordered band of empty\n// padding on every curated page, where the count is 1 and the chips are none.\nconst chipCount=useActiveFilterChips({filterKey:page??\"\",excludeKeys:CHIP_EXCLUDED,instant:false}).length;const pageDrifted=page?!isKeyAtDefault(Filters,store,page,\"pending\"):false;const anyDrifted=React.useMemo(()=>Filters.schema.some(def=>isDrawerKey(def)&&!isKeyAtDefault(Filters,store,def.key,\"pending\")),[Filters,store.pending,store.defaults,store.meta,store.options]);const row={display:\"flex\",alignItems:\"center\",gap:12,width:\"100%\",padding:`${theme.padding*.75}px ${theme.padding}px`,background:\"transparent\",border:\"none\",borderBottom:`1px solid ${theme.border}`,color:theme.textPrimary,cursor:\"pointer\",boxSizing:\"border-box\",...theme.fontTitle};return /*#__PURE__*/_jsx(SoundeeDialog,{open:open,onOpenChange:onOpenChange,theme:theme,sheet:true,label:\"Filters\",children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",// The header and the button stay put; only the middle moves.\n// A filter with forty options should scroll its own list,\n// not push the button that closes it off the screen.\nmaxHeight:\"80dvh\",minHeight:0},children:[/*#__PURE__*/_jsxs(\"header\",{style:{display:\"flex\",alignItems:\"center\",gap:12,padding:theme.padding,borderBottom:`1px solid ${theme.border}`,flexShrink:0},children:[page&&/*#__PURE__*/_jsx(HoverButton,{\"aria-label\":\"Back to all filters\",onClick:()=>setPage(null),hoverStyle:{background:theme.border},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:36,height:36,flexShrink:0,borderRadius:999,border:`1px solid ${theme.border}`,background:\"transparent\",color:theme.textPrimary,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"chevronDown\",size:18,style:{transform:\"rotate(90deg)\"}})}),/*#__PURE__*/_jsxs(\"span\",{style:{...theme.fontHeading,color:theme.textPrimary,display:\"inline-flex\",alignItems:\"baseline\",gap:6,minWidth:0},children:[activeDef?activeDef.name:\"Filters\",/*#__PURE__*/_jsx(AnimatePresence,{mode:\"popLayout\",initial:false,children:headingCount>0&&/*#__PURE__*/_jsxs(motion.span,{...CHIP_MOTION,style:{color:theme.textSecondary,flexShrink:0},children:[\"(\",headingCount,\")\"]},headingCount)})]}),(page?pageDrifted:anyDrifted)&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>{if(page){Filters.resetFilter(page,false);return;}// Pending only — \"Show results\" is what commits. One patch\n// per key is fine here; nothing is written to the URL.\nfor(const def of Filters.schema){if(isDrawerKey(def))Filters.resetFilter(def.key,false);}},hoverStyle:{color:theme.textPrimary},style:{marginLeft:\"auto\",background:\"transparent\",border:\"none\",padding:0,color:theme.textSecondary,cursor:\"pointer\",textTransform:\"uppercase\",letterSpacing:\"0.06em\",...theme.fontBody},children:\"Reset\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{overflowY:\"auto\",minHeight:0,flex:\"1 1 auto\"},children:[!page&&defs.map(def=>def.type===\"boolean\"?// Toggled where it stands. A yes/no question\n    // does not need a screen of its own, which is\n    // also why these live behind \"More\" on desktop.\n    /*#__PURE__*/_jsxs(\"button\",{type:\"button\",onClick:()=>Filters.setBoolean(def.key,!Filters.isActive(def.key),false),style:row,children:[/*#__PURE__*/_jsx(\"span\",{children:def.name}),/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{marginLeft:\"auto\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:22,height:22,borderRadius:6,border:`1px solid ${theme.border}`,background:Filters.isActive(def.key)?theme.accent:\"transparent\",color:theme.accentText},children:Filters.isActive(def.key)&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"check\",size:14})})]},def.key):/*#__PURE__*/_jsxs(\"button\",{type:\"button\",onClick:()=>setPage(def.key),style:row,children:[/*#__PURE__*/_jsx(\"span\",{children:def.name}),getUserFilterCount(Filters,store,def.key,\"pending\")>0&&/*#__PURE__*/_jsx(\"span\",{style:{color:theme.accent,...theme.fontBody},children:getUserFilterCount(Filters,store,def.key,\"pending\")}),/*#__PURE__*/_jsx(SoundeeIcon,{name:\"chevronDown\",size:18,style:{marginLeft:\"auto\",color:theme.textSecondary,transform:\"rotate(-90deg)\"}})]},def.key)),activeDef?.type===\"range\"&&/*#__PURE__*/_jsx(\"div\",{style:{padding:theme.padding},children:/*#__PURE__*/_jsx(SoundeeRangeFilterStandalone,{filterKey:activeDef.key,label:\"\",unit:activeDef.key===\"price\"?\"$\":activeDef.name,precise:true,preciseLabel:\"Exact\",colors:{track:theme.border,range:theme.accent,handle:theme.accent,label:theme.textSecondary}})}),activeDef&&activeDef.type!==\"range\"&&/*#__PURE__*/_jsx(OptionList,{filterKey:activeDef.key,options:Filters.getOptions(activeDef.key),isActive:value=>Filters.isActive(activeDef.key,value),onToggle:value=>Filters.toggleFilter(activeDef.key,value,false),tokens:tokens,maxHeight:1e4,stickySearchSurface:theme.surface})]}),chipCount>0&&/*#__PURE__*/_jsx(\"div\",{style:{padding:`${theme.padding*.5}px ${theme.padding}px`,borderTop:`1px solid ${theme.border}`,flexShrink:0},children:/*#__PURE__*/_jsx(ActiveChips,{tokens:tokens,filterKey:page??\"\",instant:false})}),/*#__PURE__*/_jsx(\"div\",{style:{padding:theme.padding,borderTop:`1px solid ${theme.border}`,flexShrink:0},children:/*#__PURE__*/_jsxs(HoverButton,{onClick:()=>{Filters.applyFilters();onOpenChange(false);},hoverStyle:{opacity:.9},style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:10,width:\"100%\",height:theme.buttonHeight,borderRadius:theme.buttonRadius,border:\"none\",background:theme.accent,color:theme.accentText,cursor:\"pointer\",...theme.fontButton},children:[\"Show results\",count!=null&&/*#__PURE__*/_jsxs(\"span\",{style:{opacity:.7},children:[\"(\",count,\")\"]})]})})]})});}/** Keeps the trigger clear of the player bar, which appears mid-visit. */\nexport const __FramerMetadata__ = {\"exports\":{\"FilterSheet\":{\"type\":\"reactComponent\",\"name\":\"FilterSheet\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{HoverButton,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{SoundeeMenu}from\"https://framerusercontent.com/modules/BN0w3b2Q9pvHMH4QxWME/QOjnDvubFO3lOejZV8za/SoundeeMenu.js\";import{CountBadge}from\"https://framerusercontent.com/modules/qtzQ2YALuWH5HEcoWjyi/DcFzA35mzS6OsATJ2FiU/CountBadge.js\";import{isKeyAtDefault}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";import{BAR_METRICS}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";/**\n * The \"More\" dropdown: the yes/no filters, as checkboxes.\n *\n * Free Download and Beats With Hook are one bit each — a whole labelled\n * dropdown for a single checkbox would cost more bar than it is worth, so they\n * share one.\n */export function MoreDropdown({keys,label,tokens,isCanvas}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;// Kept: the counts below read the state, and the baseline check needs it too.\nconst store=Filters.useStore();const[open,setOpen]=React.useState(false);const defs=React.useMemo(()=>keys.map(key=>Filters.schema.find(f=>f.key===key)).filter(def=>!!def),[Filters,keys]);const activeCount=defs.reduce((sum,def)=>sum+Filters.getFilterCount(def.key,\"committed\"),0);// See FilterDropdown: the × restores defaults, so it is offered only while\n// at least one of these keys has drifted off the page's baseline.\nconst drifted=defs.some(def=>!isKeyAtDefault(Filters,store,def.key,\"committed\"));if(defs.length===0)return null;const trigger=/*#__PURE__*/_jsxs(HoverButton,{\"aria-label\":label,hoverStyle:{color:tokens.textSecondary},style:{display:\"inline-flex\",alignItems:\"center\",gap:tokens.triggerGap,border:\"none\",background:\"transparent\",padding:0,cursor:\"pointer\",whiteSpace:\"nowrap\",color:tokens.textPrimary,...tokens.fontLabel},children:[label,/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:BAR_METRICS.controlSize,height:BAR_METRICS.controlSize,flexShrink:0},children:activeCount>0&&drifted?/*#__PURE__*/_jsx(CountBadge,{count:activeCount,tokens:tokens,label:`Clear ${label}`,onClear:()=>Filters.resetFiltersByKeys(defs.map(def=>def.key),true)}):/*#__PURE__*/_jsx(SoundeeIcon,{name:\"chevronDown\",size:18,style:{color:tokens.textSecondary,transform:open?\"rotate(180deg)\":\"none\",transition:\"transform 150ms ease\"}})})]});return /*#__PURE__*/_jsx(SoundeeMenu,{trigger:trigger,open:open,onOpenChange:setOpen,label:label,width:tokens.panelWidth,surface:tokens.panelSurface,border:tokens.panelBorder,radius:tokens.panelRadius,isCanvas:isCanvas,children:/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:1,padding:BAR_METRICS.panelPadding},children:defs.map(def=>{const on=Filters.getFilterCount(def.key,\"pending\")>0;return /*#__PURE__*/_jsxs(HoverButton,{onClick:()=>Filters.setBoolean(def.key,!on,true),\"aria-pressed\":on,hoverStyle:{background:tint(tokens.textPrimary,8)},style:{display:\"flex\",alignItems:\"center\",gap:BAR_METRICS.optionGap,width:\"100%\",height:BAR_METRICS.optionHeight+8,flexShrink:0,padding:\"0 10px\",border:\"none\",borderRadius:Math.min(tokens.panelRadius,10),background:\"transparent\",color:tokens.textPrimary,cursor:\"pointer\",textAlign:\"left\",...tokens.fontBody},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:20,height:20,flexShrink:0,borderRadius:6,border:`1.5px solid ${on?tokens.accent:tokens.panelBorder}`,background:on?tokens.accent:\"transparent\",color:tokens.accentText},children:on&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"check\",size:13})}),def.name]},def.key);})})});}\nexport const __FramerMetadata__ = {\"exports\":{\"MoreDropdown\":{\"type\":\"reactComponent\",\"name\":\"MoreDropdown\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{HoverButton,mixToward,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{SoundeeMenu}from\"https://framerusercontent.com/modules/BN0w3b2Q9pvHMH4QxWME/QOjnDvubFO3lOejZV8za/SoundeeMenu.js\";import{BAR_METRICS,pillFill}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";// Sorts worth a button of their own: the two a visitor picks deliberately, plus\n// shuffle, which is a gesture rather than an ordering. The rest live in the\n// dropdown between them — seven pills in a row is a menu pretending to be a bar.\nconst PINNED=[\"\",\"top-sellers\"];const SHUFFLE=\"random\";/** Crown, for Top Sellers. Local because it is the one glyph nothing else uses. */function CrownIcon({color}){return /*#__PURE__*/_jsx(\"svg\",{width:16,height:16,viewBox:\"0 0 24 24\",fill:\"none\",stroke:color,strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{flexShrink:0},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:\"M3 8l4.5 3.5L12 5l4.5 6.5L21 8l-1.8 9.2a1 1 0 0 1-1 .8H5.8a1 1 0 0 1-1-.8z\"})});}function ShuffleIcon({color}){return /*#__PURE__*/_jsx(\"svg\",{width:16,height:16,viewBox:\"0 0 24 24\",fill:\"none\",stroke:color,strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{flexShrink:0},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:\"M16 3h5v5M4 20 21 3M21 16v5h-5M15 15l6 6M4 4l5 5\"})});}/**\n * The sort row: a few pinned sorts as pills, the rest behind one dropdown.\n *\n * Options come from the schema's own `sort` definition, so a store that offers\n * a different set gets a different row without touching this file.\n */export function SortRow({tokens,isCanvas}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const[open,setOpen]=React.useState(false);const def=Filters.schema.find(f=>f.key===\"sort\");const options=def?.options??[];const current=store.committed.sort??\"\";const pinned=options.filter(o=>PINNED.includes(o.value));const shuffle=options.find(o=>o.value===SHUFFLE);const rest=options.filter(o=>!PINNED.includes(o.value)&&o.value!==SHUFFLE);const setSort=React.useCallback(value=>{Filters.setSingle(\"sort\",value,true);setOpen(false);},[Filters]);if(!def)return null;const pill=active=>({display:\"inline-flex\",alignItems:\"center\",gap:8,height:tokens.pillHeight,padding:`0 ${tokens.pillPaddingX}px`,borderRadius:tokens.pillRadius,border:`1px solid ${active?tokens.accent:tokens.pillBorder}`,background:active?tokens.accent:pillFill(tokens),color:active?tokens.accentText:tokens.textPrimary,cursor:\"pointer\",whiteSpace:\"nowrap\",...tokens.fontBody});// Mixed into the pill's own fill, never a translucent wash over it: a\n// see-through hover on a sticky bar shows the track list straight through\n// the button you are pointing at.\nconst pillHover=active=>active?{}:{background:mixToward(pillFill(tokens),tokens.textPrimary,10),border:`1px solid ${mixToward(tokens.pillBorder,tokens.textPrimary,25)}`};// The dropdown label is whichever of its own options is selected, so the\n// row always shows the active sort rather than a generic \"Sort by\".\nconst selectedInRest=rest.find(o=>o.value===current);const restActive=!!selectedInRest;const restLabel=selectedInRest?.name??rest[0]?.name??\"Sort\";const restTrigger=/*#__PURE__*/_jsxs(HoverButton,{\"aria-label\":\"Sort\",hoverStyle:pillHover(restActive),style:pill(restActive),children:[restLabel,/*#__PURE__*/_jsx(SoundeeIcon,{name:\"chevronDown\",size:16,style:{color:restActive?tokens.accentText:tokens.textSecondary,transform:open?\"rotate(180deg)\":\"none\",transition:\"transform 150ms ease\"}})]});return /*#__PURE__*/_jsxs(_Fragment,{children:[pinned.map(option=>{const active=current===option.value;const isTopSellers=option.value===\"top-sellers\";return /*#__PURE__*/_jsxs(HoverButton,{onClick:()=>setSort(option.value),hoverStyle:pillHover(active),style:pill(active),children:[isTopSellers&&/*#__PURE__*/_jsx(CrownIcon,{color:active?tokens.accentText:tokens.textPrimary}),option.name]},option.value||\"default\");}),rest.length>0&&/*#__PURE__*/_jsx(SoundeeMenu,{trigger:restTrigger,open:open,onOpenChange:setOpen,label:\"Sort\",// Hugs its options rather than taking Panel Width. That\n// width steadies the filter dropdowns, whose contents\n// differ per filter — these four labels never change, so\n// there is nothing to steady and the panel just ran wide.\nwidth:\"max-content\",minWidth:180,surface:tokens.panelSurface,border:tokens.panelBorder,radius:tokens.panelRadius,isCanvas:isCanvas,children:/*#__PURE__*/_jsx(SortMenuItems,{tokens:tokens,options:rest,current:current,onSelect:setSort})}),shuffle&&/*#__PURE__*/_jsxs(HoverButton,{onClick:()=>setSort(shuffle.value),hoverStyle:pillHover(current===shuffle.value),style:pill(current===shuffle.value),children:[/*#__PURE__*/_jsx(ShuffleIcon,{color:current===shuffle.value?tokens.accentText:tokens.textPrimary}),shuffle.name]})]});}/**\n * The options of a sort menu, one highlighted. Shared by the desktop\n * dropdown and the phone button so the two never drift apart.\n */export function SortMenuItems({tokens,options,current,onSelect}){return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:1,padding:BAR_METRICS.panelPadding},children:options.map(option=>{const active=current===option.value;return /*#__PURE__*/_jsx(HoverButton,{onClick:()=>onSelect(option.value),hoverStyle:{background:tint(tokens.textPrimary,8)},style:{display:\"flex\",alignItems:\"center\",width:\"100%\",height:BAR_METRICS.optionHeight+8,flexShrink:0,padding:\"0 12px\",border:\"none\",borderRadius:Math.min(tokens.panelRadius,10),background:active?tint(tokens.textPrimary,10):\"transparent\",color:tokens.textPrimary,cursor:\"pointer\",textAlign:\"left\",...tokens.fontBody},children:option.name},option.value||\"default\");})});}/**\n * The sort row's phone form: one round button beside the heart, every sort\n * in a bottom sheet behind it.\n *\n * Not in the filter sheet: sort is not a filter you browse (the sheet skips\n * it on purpose) and a visitor changes it on its own, without opening the\n * whole drawer. Not a row of pills either — a phone row has no width left\n * beside the search field. Filled with the accent while a non-default sort\n * is on, the way the heart fills while favorites are on.\n */export function SortMenuButton({tokens,isCanvas,size}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const[open,setOpen]=React.useState(false);const def=Filters.schema.find(f=>f.key===\"sort\");const options=def?.options??[];const current=store.committed.sort??\"\";const active=current!==\"\";const currentName=options.find(o=>o.value===current)?.name;const setSort=React.useCallback(value=>{Filters.setSingle(\"sort\",value,true);setOpen(false);},[Filters]);if(!def||options.length===0)return null;const trigger=/*#__PURE__*/_jsx(HoverButton,{\"aria-label\":currentName?`Sort: ${currentName}`:\"Sort\",\"aria-pressed\":active,title:\"Sort\",hoverStyle:active?{background:mixToward(tokens.accent,tokens.accentText,12)}:{background:mixToward(pillFill(tokens),tokens.textPrimary,10)},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:size,height:size,flexShrink:0,borderRadius:999,border:`1px solid ${active?tokens.accent:tokens.pillBorder}`,background:active?tokens.accent:pillFill(tokens),color:active?tokens.accentText:tokens.textPrimary,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"sort\",size:Math.round(size*.42)})});return /*#__PURE__*/_jsx(SoundeeMenu,{trigger:trigger,open:open,onOpenChange:setOpen,label:\"Sort\",sheet:true,surface:tokens.panelSurface,border:tokens.panelBorder,radius:tokens.panelRadius,isCanvas:isCanvas,children:/*#__PURE__*/_jsx(SortMenuItems,{tokens:tokens,options:options,current:current,onSelect:setSort})});}\nexport const __FramerMetadata__ = {\"exports\":{\"SortRow\":{\"type\":\"reactComponent\",\"name\":\"SortRow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SortMenuButton\":{\"type\":\"reactComponent\",\"name\":\"SortMenuButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SortMenuItems\":{\"type\":\"reactComponent\",\"name\":\"SortMenuItems\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\nimport*as React from\"react\";import{useQuery}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{fetchEntityCount}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/S0Kmw9574uaRNxylK8em/config.js\";import{useLikeStore}from\"https://framerusercontent.com/modules/FCo7CeK86NShihctg8Ql/5vsld33GwD57YYnnUFr3/likes.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/QPYxKewklLhpEooyt8R4/session.js\";export function useLikedCount(entityType,/** The page's own default filters, from `defaultQueryParams`. */scope){const cfg=useSoundeeConfig();const session=useSessionStore();// `serverVersion`, not `version`: the heart updates the local set before\n// the write leaves the browser, so keying on the local one refetched the\n// count in parallel with the write and got the previous number back —\n// a badge permanently one behind.\nconst{serverVersion}=useLikeStore();const signedIn=session.isLoggedIn&&!!session.user;// Part of the key, not just a gate: the number belongs to whoever is\n// signed in, so signing out or signing in as someone else has to land on a\n// different cache entry rather than inherit the last visitor's total.\nconst viewerId=session.user?.id??null;const path=`/users/${cfg.userId}/${entityType}`;// Stable across renders and part of the cache key: two pages of the same\n// catalogue with different defaults are different questions and must not\n// share an answer.\nconst scopeKey=React.useMemo(()=>Object.entries(scope??{}).map(([k,v])=>`${k}=${v}`).sort().join(\"&\"),[scope]);const{data,isFetching}=useQuery({queryKey:[\"likedCount\",cfg.baseUrl,path,viewerId,serverVersion,scopeKey,cfg.storeId],queryFn:()=>fetchEntityCount({baseUrl:cfg.baseUrl,storeId:cfg.storeId,userId:cfg.userId},path,{...scope??{},// Last, so a page that defaults `list_type` to something else\n    // cannot turn this into a count of something other than likes.\n    list_type:\"liked\"}),enabled:Boolean(signedIn&&cfg._ready&&cfg.userId),// Keep the previous number on screen while the next one loads, so the\n// badge never blinks away between likes — but only within one\n// catalogue. Reusing it across entity types meant walking from beats to\n// services carried the beat count over and showed it as the number of\n// liked services, which reads as a wrong answer rather than a stale\n// one. A different catalogue starts empty and fills in.\n// Signing out bumps `serverVersion` (the likes set is emptied), which\n// is a new key with the same path — so matching on path alone handed\n// the signed-out visitor the count they had a moment ago and kept it\n// there until the query was garbage-collected. The viewer has to match\n// too.\n// Deliberately NOT paired with v4's `keepPreviousData: true`. Framer\n// resolves react-query to v4, where `placeholderData` is called with no\n// arguments — so the three guards below cannot run and the badge falls\n// back to a spinner for one request instead of holding the old number.\n// That is the safe half of the trade: `keepPreviousData` carries the\n// previous count across *any* key change, which is exactly the two bugs\n// the guards exist to prevent. A flicker beats a wrong number.\nplaceholderData:(previous,previousQuery)=>previousQuery?.queryKey?.[1]===cfg.baseUrl&&previousQuery?.queryKey?.[6]===cfg.storeId&&previousQuery?.queryKey?.[2]===path&&previousQuery?.queryKey?.[3]===viewerId&&// Same reason the path has to match: a differently curated page is\n    // a different question, and carrying its number over shows a total\n    // that was never true here.\n    previousQuery?.queryKey?.[5]===scopeKey?previous:undefined,staleTime:3e4});const enabled=Boolean(signedIn&&cfg._ready&&cfg.userId);return React.useMemo(()=>({// Signed out is zero, whatever the cache still holds: the badge\n    // must go the moment the session does, not one navigation later.\n    count:enabled?data?.count??0:0,// Only \"loading\" while there is genuinely nothing to show. A\n    // refetch after a like keeps the old number on screen, so the badge\n    // dims rather than emptying out and jumping back.\n    isLoading:enabled&&data==null,isFetching:enabled&&isFetching}),[data,enabled,isFetching]);}\nexport const __FramerMetadata__ = {\"exports\":{\"LikedCount\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useLikedCount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/QPYxKewklLhpEooyt8R4/session.js\";import{useLikedCount}from\"https://framerusercontent.com/modules/FvPzsfn1KdAHqUXPQx0J/qILwqJE9tCKACs15v3Ga/liked_count.js\";import{defaultQueryParams}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";import{hasSoundeeModals}from\"https://framerusercontent.com/modules/0GpgGzS00VxJis3gSiB4/xQvXV8rHdeXnAzSd0ksq/registry.js\";import{requestSoundeeAuth}from\"https://framerusercontent.com/modules/WO1OkTRlQ7Ujgw4kWkqW/CfsiFGnaWgQ1QvOs342E/auth_state.js\";import{openSoundeeOverlay}from\"https://framerusercontent.com/modules/JWE25h6PrJ9N8RSe2d8l/rwQ7b5YTPb3c7KuBqZJd/open_overlay.js\";import{HoverButton,mixToward}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{Spinner}from\"https://framerusercontent.com/modules/2dz2LtfEPrHoRvnZYZTV/lYiqFZvueQpmdyXSqtMJ/loading.js\";import{pillFill}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";const FILTER_KEY=\"list_type\";const FAVORITES=\"liked\";/**\n * Favorites, as a round toggle beside the search field.\n *\n * It writes the `list_type` filter rather than a prop on the list, so the\n * choice lands in the URL, survives the back button and reaches the API\n * through the same params as every other filter. The list it drives has to be\n * on Source = Tracks: a list with its own Source sets `list_type` too, and\n * source params win over filter params.\n */export function FavoritesToggle({tokens,isCanvas,size}){const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const session=useSessionStore();const active=Filters.isActive(FILTER_KEY,FAVORITES);const signedIn=session.isLoggedIn&&!!session.user;// Counted per entity type. The likes store holds one untyped set, so its\n// size would show every liked track beside a list of kits.\n//\n// Scoped to the page's own defaults as well. The heart composes with them\n// like any other filter — on a curated page it means \"my favorites here\" —\n// and those defaults are invisible on purpose, so a badge that ignored\n// them would offer 7 and hand back 3 with nothing on screen to account for\n// the difference. The visitor's own filters stay out of the number: they\n// are chips with a Reset beside them, and folding them in would make the\n// badge jump and refetch on every click.\nconst likedScope=React.useMemo(()=>defaultQueryParams(store),[store.defaults]);const liked=useLikedCount(entityType,likedScope);const count=isCanvas?12:liked.count;const counting=!isCanvas&&liked.isLoading;// A heart moves the number, but only after the server has been told, so\n// say so instead of leaving a stale figure sitting there.\nconst recounting=!isCanvas&&liked.isFetching&&!liked.isLoading;async function toggle(){if(isCanvas)return;// Turning favorites OFF never needs a session — it just returns to the\n// full catalogue, and a signed-out visitor who landed on a shared\n// `list_type=liked` link (or the sign-in prompt in its place) has to be\n// able to click their way back out. Only turning them ON asks for a\n// sign-in, since an anonymous favorites list comes back empty and reads\n// as broken rather than as a prompt.\nif(!active&&!signedIn){if(hasSoundeeModals()){const ok=await requestSoundeeAuth();if(!ok)return;}else if(openSoundeeOverlay({name:\"auth\"})){return;}}Filters.setSingle(FILTER_KEY,active?null:FAVORITES,true);}return /*#__PURE__*/_jsxs(HoverButton,{onClick:toggle,\"aria-label\":\"Favorites\",\"aria-pressed\":active,title:\"Favorites\",hoverStyle:active?{background:mixToward(tokens.accent,tokens.accentText,12)}:{// Mixed into the pill's own fill rather than a wash\n// over it: the bar is sticky, and a translucent\n// hover shows the list moving underneath.\nbackground:mixToward(pillFill(tokens),tokens.textPrimary,10)},style:{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:size,height:size,flexShrink:0,borderRadius:999,border:`1px solid ${active?tokens.accent:tokens.pillBorder}`,background:active?tokens.accent:pillFill(tokens),color:active?tokens.accentText:tokens.textPrimary,cursor:\"pointer\"},children:[/*#__PURE__*/_jsx(SoundeeIcon,{name:\"heart\",size:Math.round(size*.42),filled:active}),(count>0||counting)&&// Overhanging the corner, like the cart's. A badge that adds\n// width would shift the search field beside it every time a\n// track is liked.\n/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{position:\"absolute\",top:-6,right:-6,display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",minWidth:18,height:18,padding:\"0 5px\",borderRadius:999,background:tokens.accent,color:tokens.accentText,border:`1px solid ${tokens.fill}`,fontSize:11,fontWeight:700,lineHeight:1,fontVariantNumeric:\"tabular-nums\",// Dimmed while the server is recounting: the number is\n// still the last one we know, and hiding it would make\n// the badge flash on every heart.\nopacity:recounting?.55:1,transition:\"opacity 150ms ease\"},children:counting?/*#__PURE__*/_jsx(Spinner,{color:tokens.accentText,size:10,thickness:1.5}):count>99?\"99+\":count})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"FavoritesToggle\":{\"type\":\"reactComponent\",\"name\":\"FavoritesToggle\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// LayoutToggle — grid or list, as one square button in the filter bar.\n//\n// A button with a menu rather than a segmented control: the bar is already a\n// long row of pills, and two more side by side read as two more filters. One\n// square says \"this is a view setting, not a filter\", and the square is what\n// tells it apart from the round favorites toggle beside it.\n//\n// It writes the shared catalog mode (`store/catalog_layout`), which is what a\n// list reads — so this and the standalone `SoundeeLayoutToggle` drive the same\n// thing and cannot disagree.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{hydrateCatalogMode,setCatalogMode,useCatalogMode}from\"https://framerusercontent.com/modules/tSe6igB2HLAgjgBlJf8z/iDFJBF8W0owss4QQBa89/catalog_layout.js\";import{HoverButton,mixToward}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{SoundeeMenu,menuItemHover,menuItemStyle}from\"https://framerusercontent.com/modules/BN0w3b2Q9pvHMH4QxWME/QOjnDvubFO3lOejZV8za/SoundeeMenu.js\";import{pillFill}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";/**\n * What the two rows offer.\n *\n * The store carries three modes — `large`, `minimal` and `card` — but only two\n * are worth a menu here: whether the catalogue is rows or cards. `minimal` is\n * a variation on rows, and offering it as a third peer would ask a visitor to\n * tell two kinds of list apart before they have seen either. The standalone\n * toggle still reaches it for a producer who wants all three.\n */const OPTIONS=[{mode:\"large\",label:\"List\",icon:\"list\"},{mode:\"card\",label:\"Grid\",icon:\"grid\"}];/** What an unset store means: rows, the same default the lists assume. */const FALLBACK_MODE=\"large\";export function LayoutToggle({tokens,isCanvas,size}){const stored=useCatalogMode();const[open,setOpen]=React.useState(false);React.useEffect(()=>{if(isCanvas)return;hydrateCatalogMode();},[isCanvas]);const mode=stored??FALLBACK_MODE;const isGrid=mode===\"card\";const trigger=/*#__PURE__*/_jsx(HoverButton,{\"aria-label\":`Layout: ${isGrid?\"Grid\":\"List\"}`,\"aria-haspopup\":\"menu\",\"aria-expanded\":open,title:\"Layout\",hoverStyle:{// Mixed into the pill's own fill rather than washed over it:\n// the bar is sticky, and a translucent hover shows the list\n// sliding underneath.\nbackground:mixToward(pillFill(tokens),tokens.textPrimary,10)},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:size,height:size,flexShrink:0,// Square, where favorites is round. Two identical circles side\n// by side would read as a pair of toggles; this one is not a\n// toggle, and the shape is the cheapest way to say so.\nborderRadius:Math.min(tokens.pillRadius,10),border:`1px solid ${tokens.pillBorder}`,background:pillFill(tokens),color:tokens.textPrimary,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:isGrid?\"grid\":\"list\",size:Math.round(size*.42)})});return /*#__PURE__*/_jsx(SoundeeMenu,{trigger:trigger,open:open,onOpenChange:setOpen,label:\"Layout\",align:\"end\",width:\"max-content\",minWidth:160,surface:tokens.panelSurface,border:tokens.panelBorder,radius:tokens.panelRadius,isCanvas:isCanvas,children:/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",padding:6},children:OPTIONS.map(option=>{const active=isGrid?option.mode===\"card\":option.mode===\"large\";return /*#__PURE__*/_jsxs(HoverButton,{onClick:()=>{if(!isCanvas)setCatalogMode(option.mode);setOpen(false);},role:\"menuitemradio\",\"aria-checked\":active,hoverStyle:menuItemHover(menuTokens(tokens)),style:{...menuItemStyle(menuTokens(tokens),false),color:active?tokens.textPrimary:tokens.textSecondary},children:[/*#__PURE__*/_jsx(SoundeeIcon,{name:option.icon,size:16}),/*#__PURE__*/_jsx(\"span\",{style:{flex:1},children:option.label}),active&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"check\",size:14,style:{color:tokens.accent}})]},option.mode);})})});}/** The bar's tokens in the shape the shared menu rows expect. */function menuTokens(tokens){return{textPrimary:tokens.textPrimary,textSecondary:tokens.textSecondary,radius:tokens.panelRadius,fontTitle:tokens.fontBody,fontBody:tokens.fontBody};}\nexport const __FramerMetadata__ = {\"exports\":{\"LayoutToggle\":{\"type\":\"reactComponent\",\"name\":\"LayoutToggle\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LayoutToggle.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r7 (2026-08-25, v4 hardening) — rebuild for the\n// dual-major cache option (gcTime/cacheTime) and the NaN-proof page counter\n// in api/{tracks,kits,services}.tsx. On v4 `undefined + 1` made nextPage NaN,\n// which is not nullish, so the list would ask for page=NaN forever.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import*as ReactDOM from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{QueryClientProvider}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{queryClient}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{getUserFilterCount,isDrawerKey}from\"https://framerusercontent.com/modules/xXrgFpc53Gl6JRAdqU5x/IWiNj327PapGXrBuoLvD/defaults.js\";import{filterBarBrand,stripDefaults,useBrandOverrides}from\"https://framerusercontent.com/modules/yD9Ys9s3cEToBITrvdLi/73etEDTq7Xf4D5LzHkb0/brand.js\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/S0Kmw9574uaRNxylK8em/config.js\";import SoundeeSearchInput from\"https://framerusercontent.com/modules/y1ImawrCheMvr2j9Mbc8/YBYuPBC3kuoGNR7CfxhJ/SoundeeSearchInput.js\";import{FilterDropdown}from\"https://framerusercontent.com/modules/4aTgc91AIbJdUr7ZkdZI/xDMhgTtwvzfip8pPXiF2/FilterDropdown.js\";import{FilterSheet}from\"https://framerusercontent.com/modules/uQcORyujcfw62PevKc8z/3jY235TTRY0MSCFFR9tx/FilterSheet.js\";import{useBottomInset}from\"https://framerusercontent.com/modules/kzYBDVoF2Qa1Nph54gmt/W3lh9aOdXwFNqPdMZ3fq/viewport_cover.js\";import{useFilterTriggerHost}from\"https://framerusercontent.com/modules/xJtVMvQLqvvftBQKiwcF/OViklEgXqXgQ0jff9C8V/filter_trigger_host.js\";import{HoverButton}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{MoreDropdown}from\"https://framerusercontent.com/modules/OC8GVvXlzGAJckzmbaVi/DoPbjNoTkQxP4s7D5JJr/MoreDropdown.js\";import{SortMenuButton,SortRow}from\"https://framerusercontent.com/modules/04LQ2DKlLwETnODI0h7T/GybCbTnZ0DO1iEF8OTYD/SortRow.js\";import{ActiveChips,ResetButton}from\"https://framerusercontent.com/modules/ZjboTQYpMTUoT9KtD9wT/xKUfFKL4XFKsHxPXfENU/ActiveChips.js\";import{FavoritesToggle}from\"https://framerusercontent.com/modules/mY6ZcBGlHMXwBfvCvREE/9HoFs2X7dNoiUUH4EqH9/FavoritesToggle.js\";import{LayoutToggle}from\"https://framerusercontent.com/modules/2Bq1oD8u7lre21I7HBqQ/w5vBDrklnAWMjugLkv6s/LayoutToggle.js\";import{DEFAULT_FILTER_BAR_TOKENS,BAR_METRICS,barFade,barFadeBlurLayer,filterBarPanelControls,filterBarPillControls,filterBarShellControls,filterBarTextControls,mergeBarTokens,pillFill}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";const DEFAULT_FILTER_KEYS=[\"genre\",\"mood\",\"artist\",\"collaborator\",\"key\",\"price\",\"bpm\"];const DEFAULT_MORE_KEYS=[\"download\",\"hook\"];/**\n * The batteries-included filter bar.\n *\n * It talks to the same filter store the slot-based components use — there are\n * no props between this and a track list. Whatever list registered its entity\n * type last is the one this bar drives, exactly as `SoundeeFilterOptions` and\n * `SoundeeActiveFilters` already behave.\n *\n * Suggested tags are a separate component: the bar is meant to stick to the top\n * and a strip whose height changes with the suggestions would shove the list\n * around on every click.\n *\n * Desktop only, deliberately. A phone gets a single toggle opening one drawer\n * with every option in it — a different component, not this one narrowed. Eight\n * dropdowns squeezed into a scroller is the shape that makes filters feel\n * unusable on a phone, and half-supporting it here would have made it look\n * finished.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */export default function SoundeeFilterBar(props){return /*#__PURE__*/_jsx(QueryClientProvider,{client:queryClient,children:/*#__PURE__*/_jsx(FilterBarInner,{...props})});}function FilterBarInner({anchorId=\"soundee-filters\",filterKeys=DEFAULT_FILTER_KEYS,moreKeys=DEFAULT_MORE_KEYS,moreLabel=\"More\",layout=\"Desktop\",showSort=true,showSearch=true,showFavorites=true,showLayout=false,searchPlaceholder=\"Search by title or tags\",bar,text,buttons,panel,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Reads session-derived state through the filter store's fetches, so it\n// starts the session itself rather than depending on a list being present.\nuseEnsureSoundeeSession();const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const filterStore=Filters.useStore();// Brand under the bar's own groups: what the producer set in SoundeeModals\n// fills anything they did not set here.\nconst brand=useBrandOverrides();const tokens=React.useMemo(()=>mergeBarTokens(filterBarBrand(brand),// Only what each group genuinely changed: Framer materialises touched\n    // groups in full, and a restated default must not block the brand.\n    stripDefaults(DEFAULT_FILTER_BAR_TOKENS,bar),stripDefaults(DEFAULT_FILTER_BAR_TOKENS,text),stripDefaults(DEFAULT_FILTER_BAR_TOKENS,buttons),stripDefaults(DEFAULT_FILTER_BAR_TOKENS,panel)),[brand,bar,text,buttons,panel]);const isMobile=layout===\"Mobile\";const[sheetOpen,setSheetOpen]=React.useState(false);// 20px of its own, plus whatever is pinned to the bottom — a player bar\n// appears the first time something plays, so this is measured rather than\n// configured.\nconst bottomInset=useBottomInset(20);// A list on the page offers a sticky spot at its own end; without one\n// the button pins itself to the window instead.\nconst triggerHost=useFilterTriggerHost();// What the button says it is holding. Committed, not pending: the number on a\n// closed sheet has to describe the list behind it. The visitor's own drawer\n// filters only — a curated page's default is not something they put there,\n// and the search term lives in the field beside this button, not behind it.\nconst activeCount=React.useMemo(()=>Filters.schema.reduce((sum,def)=>isDrawerKey(def)?sum+getUserFilterCount(Filters,filterStore,def.key,\"committed\"):sum,0),[Filters,filterStore.committed,filterStore.defaults,filterStore.options]);// One shape for both rows, so they cap and pad identically — the moment\n// they drift, the sort buttons stop lining up with the filters above them.\nconst innerRow=overflowX=>({display:\"flex\",alignItems:\"center\",gap:tokens.filterGap,height:\"100%\",width:\"100%\",maxWidth:tokens.maxWidth>0?tokens.maxWidth:undefined,margin:\"0 auto\",padding:`0 ${tokens.paddingX}px`,boxSizing:\"border-box\",minWidth:0,flexWrap:\"nowrap\",...overflowX?{overflowX}:null});const favoritesButton=showFavorites?/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0},children:/*#__PURE__*/_jsx(FavoritesToggle,{tokens:tokens,isCanvas:isCanvas,size:tokens.pillHeight})}):null;// Phone only. The row of sort pills has no width beside the search field\n// there, so the sorts fold into one round button next to the heart, with a\n// bottom sheet behind it. See SortMenuButton.\nconst sortButton=showSort&&isMobile?/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0},children:/*#__PURE__*/_jsx(SortMenuButton,{tokens:tokens,isCanvas:isCanvas,size:tokens.pillHeight})}):null;// Desktop only. A phone shows one column whichever mode is set, so the\n// button would offer a choice with no visible outcome — and the list forces\n// rows there for the same reason.\nconst layoutButton=showLayout&&!isMobile?/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0},children:/*#__PURE__*/_jsx(LayoutToggle,{tokens:tokens,isCanvas:isCanvas,size:tokens.pillHeight})}):null;const searchField=showSearch?/*#__PURE__*/_jsx(\"div\",{style:{minWidth:0,flex:isMobile?1:undefined,flexShrink:isMobile?1:0,width:isMobile?\"auto\":BAR_METRICS.searchWidth,height:tokens.pillHeight},children:/*#__PURE__*/_jsx(SoundeeSearchInput,{filterKey:\"q\",placeholder:searchPlaceholder,showSearchIcon:true,// Its inner input is `height: 100%`, which only resolves once its\n// own wrapper has a height — without this the field sat shorter\n// than the pills beside it.\nstyle:{height:\"100%\"},searchStyle:{font:tokens.fontBody,color:tokens.textPrimary,placeholderColor:tokens.textSecondary,fill:pillFill(tokens),padding:\"0 16px\",borderRadius:`${tokens.pillRadius}px`,border:{borderWidth:1,borderStyle:\"solid\",borderColor:tokens.pillBorder},focusBorderColor:tokens.accent}})}):null;// Keys the schema does not have are dropped rather than rendered empty: a\n// kits or services store has a different schema, and the same bar should\n// quietly show fewer dropdowns instead of a row of dead labels.\nconst dropdownKeys=React.useMemo(()=>Array.from(new Set(filterKeys)).filter(key=>Filters.schema.some(def=>def.key===key)),[Filters,filterKeys]);const booleanKeys=React.useMemo(()=>Array.from(new Set(moreKeys)).filter(key=>Filters.schema.some(def=>def.key===key)),[Filters,moreKeys]);return /*#__PURE__*/_jsxs(\"div\",{id:anchorId||undefined,style:{display:\"flex\",flexDirection:\"column\",width:\"100%\",minWidth:0,boxSizing:\"border-box\",// No fill and no gap here: the two rows paint and pad\n// themselves, because they are painted differently — solid\n// above, fading out below.\n...style},children:[!isMobile&&(dropdownKeys.length>0||booleanKeys.length>0)&&/*#__PURE__*/_jsx(\"div\",{style:{// A fixed band rather than text plus padding: the two\n// rows then share one rhythm, and the bar's height does\n// not move when a count badge or a chip appears.\nheight:tokens.rowHeight,// Solid: this row is the bar. Painted on the row rather\n// than the container, because the row below it is\n// painted differently.\nbackground:tokens.fill,// Prefixed for Safari as well. A sticky bar is exactly\n// where this is noticed, so it is the wrong place to\n// let a vendor prefix decide the look.\n...tokens.blur>0?{backdropFilter:`blur(${tokens.blur}px)`,WebkitBackdropFilter:`blur(${tokens.blur}px)`}:null,boxSizing:\"border-box\",minWidth:0,width:\"100%\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{...innerRow(\"visible\"),// Anchors the divider below, which is absolutely positioned so\n// it stays out of the flex flow.\nposition:\"relative\"},children:[tokens.showDivider&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",left:tokens.paddingX,right:tokens.paddingX,bottom:0,height:1,background:tokens.border,pointerEvents:\"none\"}}),dropdownKeys.map(key=>/*#__PURE__*/_jsx(FilterDropdown,{filterKey:key,tokens:tokens,isCanvas:isCanvas},key)),booleanKeys.length>0&&/*#__PURE__*/_jsx(MoreDropdown,{keys:booleanKeys,label:moreLabel,tokens:tokens,isCanvas:isCanvas}),/*#__PURE__*/_jsx(\"div\",{style:{marginLeft:\"auto\",flexShrink:0},children:/*#__PURE__*/_jsx(ResetButton,{tokens:tokens})})]})}),(showSort||showSearch||showFavorites)&&/*#__PURE__*/_jsxs(\"div\",{style:{// Fades to nothing: the bar is sticky and the list\n// scrolls up under it, so the bottom edge dissolves\n// rather than ending on a line.\nbackground:barFade(tokens),height:tokens.rowHeight,boxSizing:\"border-box\",minWidth:0,width:\"100%\",// Anchors the progressive blur layers below.\nposition:\"relative\"},children:[tokens.blur>0&&tokens.fadeBlur&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:barFadeBlurLayer(tokens.blur)}),/*#__PURE__*/_jsxs(\"div\",{style:innerRow(),children:[showSort&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:BAR_METRICS.pillGap,flexShrink:0,// Lifted over the chip scroller's nudge buttons.\nposition:\"relative\",zIndex:2},children:/*#__PURE__*/_jsx(SortRow,{tokens:tokens,isCanvas:isCanvas})}),!isMobile&&/*#__PURE__*/_jsx(ActiveChips,{tokens:tokens}),(showFavorites||showSearch||showLayout||sortButton)&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10,minWidth:0,// On a phone this pair is the whole row, so it takes\n// the width; on desktop it keeps its size and is\n// pushed right by whatever sits beside it.\nflex:isMobile?1:undefined,flexShrink:isMobile?1:0,marginLeft:isMobile?undefined:\"auto\",// Over the chip scroller's nudge buttons, like its\n// neighbours.\nposition:\"relative\",zIndex:2},children:isMobile?/*#__PURE__*/_jsxs(_Fragment,{children:[searchField,favoritesButton,sortButton]}):/*#__PURE__*/_jsxs(_Fragment,{children:[favoritesButton,searchField,layoutButton]})})]})]}),isMobile&&!isCanvas&&/*#__PURE__*/_jsxs(_Fragment,{children:[portalInto(triggerHost,/*#__PURE__*/_jsxs(\"div\",{style:{position:triggerHost?\"static\":\"fixed\",left:triggerHost?undefined:0,right:triggerHost?undefined:0,bottom:triggerHost?undefined:bottomInset,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",gap:8,pointerEvents:\"none\",zIndex:20},children:[/*#__PURE__*/_jsxs(HoverButton,{onClick:()=>setSheetOpen(true),hoverStyle:{opacity:.92},style:{display:\"inline-flex\",alignItems:\"center\",gap:8,height:tokens.clearHeight,padding:`0 ${tokens.pillPaddingX+8}px`,// The labelled pill it is: follows the same radius as the\n// pills in the bar and the brand behind them.\nborderRadius:tokens.pillRadius,border:\"none\",background:tokens.accent,color:tokens.accentText,cursor:\"pointer\",pointerEvents:\"auto\",boxShadow:\"0 8px 24px rgba(0,0,0,0.35)\",whiteSpace:\"nowrap\",...tokens.fontLabel},children:[\"Filters\",activeCount>0&&/*#__PURE__*/_jsxs(\"span\",{style:{opacity:.75},children:[\"(\",activeCount,\")\"]})]}),/*#__PURE__*/_jsx(ResetButton,{tokens:tokens,floating:true})]})),/*#__PURE__*/_jsx(FilterSheet,{open:sheetOpen,onOpenChange:setSheetOpen,tokens:tokens})]})]});}/**\n * Renders `node` inside `host` when there is one, and where it stands when\n * there is not — so a missing spot degrades to a plain render rather than to\n * nothing at all.\n */function portalInto(host,node){return host?/*#__PURE__*/ReactDOM.createPortal(node,host):node;}SoundeeFilterBar.displayName=\"Soundee Filter Bar\";// Typed rather than inferred: a bare object literal widens its string fields,\n// which Framer's checker rejects when the component is registered.\nconst filterBarDefaults={anchorId:\"soundee-filters\",showFavorites:true,showLayout:false,filterKeys:DEFAULT_FILTER_KEYS,moreKeys:DEFAULT_MORE_KEYS,moreLabel:\"More\",layout:\"Desktop\",showSort:true,showSearch:true,searchPlaceholder:\"Search by title or tags\"};SoundeeFilterBar.defaultProps=filterBarDefaults;addPropertyControls(SoundeeFilterBar,{layout:{type:ControlType.Enum,title:\"Layout\",options:[\"Desktop\",\"Mobile\"],optionTitles:[\"Desktop\",\"Mobile\"],defaultValue:\"Desktop\",displaySegmentedControl:true,description:\"Set this per breakpoint, the same way the track list and the modals take theirs. Mobile drops the row of dropdowns, keeps the heart and the search with the sorts folded into one button beside them, and puts every filter in a sheet behind one floating button.\"},filterKeys:{type:ControlType.Array,title:\"Filters\",control:{type:ControlType.String,placeholder:\"genre\"},defaultValue:DEFAULT_FILTER_KEYS,maxCount:12,description:\"Filter keys shown as dropdowns, in order. Keys this store has no filter for are skipped.\"},moreKeys:{type:ControlType.Array,title:\"More\",control:{type:ControlType.String,placeholder:\"download\"},defaultValue:DEFAULT_MORE_KEYS,maxCount:8,description:\"Yes/no filters collected behind one dropdown, as checkboxes.\"},moreLabel:{type:ControlType.String,title:\"More Label\",defaultValue:\"More\",hidden:props=>(props.moreKeys?.length??0)===0},showSort:{type:ControlType.Boolean,title:\"Sort\",defaultValue:true,description:\"Charts, Top Sellers and Shuffle as buttons; the rest behind one dropdown. On Mobile, one button beside the heart with every sort in a sheet.\"},showFavorites:{type:ControlType.Boolean,title:\"Favorites\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"A heart beside the search that filters the list down to what this visitor liked, with their count. It writes the list_type filter, so it lands in the URL and the back button works — and it needs the list on Source = Tracks, since a list with its own Source sets list_type itself.\"},showLayout:{type:ControlType.Boolean,title:\"Layout\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"A square button beside favorites that switches the catalogue between rows and cards. Off by default: it only has something to switch where the list can draw both, which today is the tracks list and browser.\"},showSearch:{type:ControlType.Boolean,title:\"Search\",defaultValue:true},searchPlaceholder:{type:ControlType.String,title:\"Placeholder\",defaultValue:\"Search by title or tags\",hidden:props=>!props.showSearch},anchorId:{type:ControlType.String,title:\"Anchor ID\",defaultValue:\"soundee-filters\",placeholder:\"soundee-filters\",description:\"The bar's own DOM id, for your own anchor links. Not needed for the scroll-back: the list finds this bar by itself.\"},bar:filterBarShellControls,text:filterBarTextControls,buttons:filterBarPillControls,panel:filterBarPanelControls});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeFilterBar\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\nimport*as React from\"react\";import{useQuery}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{keepPreviousForStore,NEVER_COLLECT}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{fetchSuggestedTags}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/S0Kmw9574uaRNxylK8em/config.js\";import{buildListQueryKey}from\"https://framerusercontent.com/modules/JcGkFxuDjRfBADgMmXWq/pvonKNExnbKIMYF0pgOe/query_key.js\";const DEBOUNCE_MS=500;/**\n * Fetches contextual tag suggestions for a catalog, scoped by the active\n * filters (just like `useEntityCount`). The request adds `return=tags&limit=N`\n * and spreads the current filter params (including `tags`), so the API returns\n * tags relevant to the current selection. Toggling a tag changes the params and\n * this query refetches, giving the \"click a tag, get new relevant tags\" loop.\n */export function useSuggestedTags(filterEntityType,source=\"pending\",limit=10,/**\n     * When the filtered request comes back empty, fall back to the unfiltered\n     * tag list instead of rendering nothing. Narrow filters otherwise make the\n     * whole row disappear at exactly the moment the visitor is most likely to\n     * want a way out of their selection.\n     */fallbackToAll=false,/**\n     * Also fetch the unfiltered list, always, so a caller can show the\n     * suggestions first and the rest of the catalog's tags behind them.\n     *\n     * Off by default: it is a second request, and the slot component only wants\n     * one unless the filtered list came back empty.\n     */appendAll=false,/**\n     * Cap for that second list, separate from `limit`.\n     *\n     * `limit` says how many *suggestions* to ask for; the appended list is\n     * there to keep the row a stable length, so it wants more than the handful\n     * a suggestion limit implies.\n     */allLimit=50){const Filters=filterRegistry[filterEntityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const cfg=useSoundeeConfig();const params=source===\"committed\"?Filters.getQueryParams():Filters.getPendingQueryParams();const paramsKey=JSON.stringify(params);const[stableParams,setStableParams]=React.useState(()=>params);const hasSyncedRef=React.useRef(false);if(!hasSyncedRef.current&&store.hydrated){hasSyncedRef.current=true;if(JSON.stringify(stableParams)!==paramsKey){setStableParams(params);}}React.useEffect(()=>{if(!hasSyncedRef.current)return;const timer=setTimeout(()=>setStableParams(params),DEBOUNCE_MS);return()=>clearTimeout(timer);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[paramsKey]);const path=`/users/${cfg.userId}/${filterEntityType}`;const queryKey=React.useMemo(()=>[\"suggestedTags\",limit,...buildListQueryKey({baseUrl:cfg.baseUrl,storeId:cfg.storeId,path,params:stableParams})],[cfg.baseUrl,cfg.storeId,path,stableParams,limit]);const{data,isFetching}=useQuery({queryKey,queryFn:()=>fetchSuggestedTags({baseUrl:cfg.baseUrl,storeId:cfg.storeId,userId:cfg.userId},path,stableParams,limit),...keepPreviousForStore(queryKey,2),enabled:!!cfg.userId&&cfg._ready&&store.hydrated,staleTime:Infinity,...NEVER_COLLECT,refetchOnMount:false,refetchOnWindowFocus:false,refetchOnReconnect:false});const isReady=!!cfg.userId&&cfg._ready&&store.hydrated;const primary=data??[];// Only worth a second request when filters are what emptied the list. With\n// no filters applied the fallback would be the identical request, so an\n// empty result there simply means this catalog has no tags.\nconst hasActiveFilters=Object.keys(stableParams).length>0;const needsFallback=fallbackToAll&&isReady&&hasActiveFilters&&!isFetching&&primary.length===0;// One query serves both jobs — the empty-result fallback and the appended\n// list — since both are \"this catalog's tags, unfiltered\".\nconst unfilteredLimit=appendAll?allLimit:limit;const fallbackQueryKey=React.useMemo(()=>[\"suggestedTags\",unfilteredLimit,...buildListQueryKey({baseUrl:cfg.baseUrl,storeId:cfg.storeId,path,params:{}})],[cfg.baseUrl,cfg.storeId,path,unfilteredLimit]);const{data:fallbackData,isFetching:fallbackFetching}=useQuery({queryKey:fallbackQueryKey,queryFn:()=>fetchSuggestedTags({baseUrl:cfg.baseUrl,storeId:cfg.storeId,userId:cfg.userId},path,{},unfilteredLimit),...keepPreviousForStore(fallbackQueryKey,2),// Only worth asking once something is filtering. With no filters the\n// suggestions *are* the unfiltered list, so this would be the same\n// request twice with a different limit — which is exactly what showed\n// up in the network panel as a duplicate tag call on first load.\nenabled:needsFallback||appendAll&&isReady&&hasActiveFilters,staleTime:Infinity,...NEVER_COLLECT,refetchOnMount:false,refetchOnWindowFocus:false,refetchOnReconnect:false});const fallback=fallbackData??[];const usingFallback=needsFallback&&fallback.length>0;return{tags:usingFallback?fallback:primary,/**\n         * The unfiltered list, empty unless `appendAll` asked for it *and*\n         * there are filters to make it differ from `tags`.\n         */allTags:appendAll&&hasActiveFilters?fallback:[],// Keep the row in its loading state while the fallback is on its way,\n// so it doesn't flash empty between the two requests.\nloading:!isReady||isFetching||needsFallback&&fallbackFetching,/** True when these are the unfiltered tags, not suggestions. */isFallback:usingFallback};}\nexport const __FramerMetadata__ = {\"exports\":{\"SuggestedTagsSource\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSuggestedTags\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{RenderTarget}from\"framer\";import{AnimatePresence,motion}from\"framer-motion\";import{filterRegistry}from\"https://framerusercontent.com/modules/xzfx4lZBDRztoUPSAUY7/un6FCAtvCUtPpH5rkKrE/filter_registry.js\";import{useActiveFilterEntityType}from\"https://framerusercontent.com/modules/1vceIlqR4szvEmZFNFFf/VUvFhtWKZCDvpRQdQIvW/filter_context.js\";import{useSuggestedTags}from\"https://framerusercontent.com/modules/SHJu3GAgQPwrcP0smDsU/Asg4PHQED31bngBzItVK/Suggested_tags_1.js\";import{HoverButton,mixToward,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{useEdgeFade}from\"https://framerusercontent.com/modules/OPQbGb52rDGZFY06BqrF/32s6Lmy3sSMQq3NMj19L/edge_fade.js\";import{useHiddenScrollbar}from\"https://framerusercontent.com/modules/bkPABx8fmYzes1gCdNV5/t03S1xiu8GiyxGsQ4F1E/hidden_scrollbar.js\";import{CHIP_MOTION}from\"https://framerusercontent.com/modules/GhX8WeO9A1GCVSf8fZPb/MMvnyDD49ddz2YRxdIZB/list_motion.js\";import{pulseMotion}from\"https://framerusercontent.com/modules/2dz2LtfEPrHoRvnZYZTV/lYiqFZvueQpmdyXSqtMJ/loading.js\";import{ScrollNudge}from\"https://framerusercontent.com/modules/d2xosHykSlwJdDclWBho/5G618v3tkvFoWyo6lmym/ScrollNudge.js\";import{BAR_METRICS,pillFill,nudgeSkin}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";const CANVAS_TAGS=[\"rap\",\"trap\",\"storytelling\",\"dark\",\"piano\",\"guitar\"];// Placeholder widths, so the loading row reads as words of different lengths\n// rather than a row of identical bars.\nconst SKELETON_WIDTHS=[72,96,60,84,110,68];/**\n * The suggested-tag row under the bar.\n *\n * Same hook `SoundeeSuggestedTags` uses, so the built-in row and a designer's\n * slot version suggest exactly the same tags — including the fallback to the\n * unfiltered list when the active filters leave nothing.\n */export function SuggestedTagsRow({tokens,limit,title,previewLoading=false}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const entityType=useActiveFilterEntityType();const Filters=filterRegistry[entityType]?.filters??filterRegistry.tracks.filters;const store=Filters.useStore();const{tags,allTags,loading}=useSuggestedTags(entityType,\"pending\",limit,true,// Suggestions first, then the rest of the catalog's tags behind them.\n// On its own the suggested list shrinks as filters narrow, so the row\n// empties out at exactly the point a visitor wants a way back.\ntrue);const list=React.useMemo(()=>{if(isCanvas)return CANVAS_TAGS.slice(0,Math.max(1,limit));const seen=new Set;const out=[];// Suggested first, then everything else. Order carries the relevance,\n// so nothing has to be dropped to keep the useful tags reachable.\nfor(const item of[...tags,...allTags]){const raw=typeof item===\"string\"?item:item?.tag??\"\";// String(), not a cast: the client normalises these now, but this\n// render crashed the page once over a numeric tag, and a row of\n// suggestions is not worth that twice.\nconst tag=String(raw).trim();if(!tag||seen.has(tag))continue;// An active tag is already a removable chip in the bar; leaving it\n// here too gave a dead, dimmed duplicate of a control that works.\nif(Filters.isActive(\"tags\",tag))continue;seen.add(tag);out.push(tag);}return out;// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isCanvas,limit,tags,allTags,store]);const scrollRef=React.useRef(null);const{edges,maskStyle,scrollByDir}=useEdgeFade(scrollRef,{enabled:list.length>0,contentKey:list.join(\"|\")});const scrollbar=useHiddenScrollbar();// One height for the tags and the buttons that scroll them, so they cannot\n// end up different sizes in the same row.\nconst tagHeight=tokens.pillHeight-6;// Skeletons rather than nothing: the row appears under the bar on first\n// load, and a row that pops into existence shoves the list down with it.\nconst showSkeleton=isCanvas?previewLoading:loading&&list.length===0;if(!showSkeleton&&list.length===0)return null;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:10,minWidth:0},children:[title&&// Label Font, not Body: this is a heading over a row of tags,\n// and sharing one font with the tags themselves meant styling\n// either of them moved both.\n/*#__PURE__*/_jsx(\"span\",{style:{color:tokens.textSecondary,...tokens.fontLabel},children:title}),/*#__PURE__*/_jsx(\"style\",{children:scrollbar.css}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",minWidth:0,// See ActiveChips: the nudge belongs to this scroller, not\n// to the page it happens to sit on.\nisolation:\"isolate\"},children:[/*#__PURE__*/_jsx(\"div\",{id:scrollbar.id,ref:scrollRef,\"data-framer-hide-scrollbars\":\"true\",style:{display:\"flex\",gap:BAR_METRICS.pillGap-4,overflowX:\"auto\",overflowY:\"hidden\",minWidth:0,...maskStyle},children:/*#__PURE__*/_jsx(AnimatePresence,{initial:false,mode:\"popLayout\",children:showSkeleton?Array.from({length:Math.min(Math.max(1,limit),SKELETON_WIDTHS.length)}).map((_,i)=>/*#__PURE__*/_jsx(motion.span,{...pulseMotion(i*.12),style:{flexShrink:0,width:SKELETON_WIDTHS[i],height:tagHeight,borderRadius:tokens.pillRadius,background:tint(tokens.textPrimary,12)}},`skeleton-${i}`)):list.map(tag=>{return /*#__PURE__*/_jsx(motion.span,{...CHIP_MOTION,style:{display:\"inline-flex\",flexShrink:0},children:/*#__PURE__*/_jsx(HoverButton,{onClick:()=>!isCanvas&&Filters.toggleFilter(\"tags\",tag,true),hoverStyle:{// Opaque, for the same reason as the sort pills.\nbackground:mixToward(pillFill(tokens),tokens.textPrimary,10),border:`1px solid ${mixToward(tokens.pillBorder,tokens.textPrimary,25)}`},style:{display:\"inline-flex\",alignItems:\"center\",flexShrink:0,height:tagHeight,padding:`0 ${Math.max(0,tokens.pillPaddingX-2)}px`,borderRadius:tokens.pillRadius,border:`1px solid ${tokens.pillBorder}`,background:pillFill(tokens),color:tokens.textPrimary,cursor:\"pointer\",whiteSpace:\"nowrap\",...tokens.fontBody},children:tag})},tag);})})}),/*#__PURE__*/_jsx(ScrollNudge,{side:\"start\",visible:edges.start,onClick:()=>scrollByDir(-1),skin:nudgeSkin(tokens),label:\"Scroll tags left\",size:tagHeight}),/*#__PURE__*/_jsx(ScrollNudge,{side:\"end\",visible:edges.end,onClick:()=>scrollByDir(1),skin:nudgeSkin(tokens),label:\"Scroll tags right\",size:tagHeight})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"SuggestedTagsRow\":{\"type\":\"reactComponent\",\"name\":\"SuggestedTagsRow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r7 (2026-08-25, v4 hardening) — rebuild for the\n// dual-major cache option (gcTime/cacheTime) and the NaN-proof page counter\n// in api/{tracks,kits,services}.tsx. On v4 `undefined + 1` made nextPage NaN,\n// which is not nullish, so the list would ask for page=NaN forever.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{QueryClientProvider}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{queryClient}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/S0Kmw9574uaRNxylK8em/config.js\";import{SuggestedTagsRow}from\"https://framerusercontent.com/modules/siRnBGw44sJofOCnMMJt/qHsJYaakdbvqo5uFldS3/SuggestedTagsRow.js\";import{filterBarPillControls,filterBarTextControls,mergeBarTokens,tagsPillControls}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";/**\n * Tags that narrow whatever the list is currently showing.\n *\n * Its own component rather than a row of `SoundeeFilterBar`: the bar is meant to\n * stick to the top of the page and this is not — a sticky strip that grows and\n * shrinks as the suggestions change is a strip that shoves the list around on\n * every click. Separating them lets the bar stick while these scroll away.\n *\n * Drives the same filter store as everything else, so it needs no wiring to the\n * bar or the list.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */export default function SoundeeSuggestedTagsBar(props){return /*#__PURE__*/_jsx(QueryClientProvider,{client:queryClient,children:/*#__PURE__*/_jsx(SuggestedTagsBarInner,{...props})});}function SuggestedTagsBarInner({title=\"Suggested tags\",limit=50,padding=\"0px\",maxWidth=0,paddingX=0,previewLoading=false,text,buttons,style}){useEnsureSoundeeSession();const tokens=React.useMemo(()=>mergeBarTokens(text,buttons),[text,buttons]);return(// On the wrapper, not the scroller: padding inside a scroll container\n// moves with the content, so the row would start indented and then\n// scroll flush to the edge. Here the tags line up with the filter bar\n// above and keep doing so while they scroll.\n/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",minWidth:0,padding,...style},children:/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",maxWidth:maxWidth>0?maxWidth:undefined,margin:\"0 auto\",padding:paddingX>0?`0 ${paddingX}px`:undefined,boxSizing:\"border-box\",minWidth:0},children:/*#__PURE__*/_jsx(SuggestedTagsRow,{tokens:tokens,limit:limit,title:title,previewLoading:previewLoading})})}));}SoundeeSuggestedTagsBar.displayName=\"Soundee Suggested Tags Bar\";const suggestedTagsBarDefaults={title:\"Suggested tags\",limit:50,padding:\"0px\",maxWidth:0,paddingX:0,previewLoading:false};SoundeeSuggestedTagsBar.defaultProps=suggestedTagsBarDefaults;addPropertyControls(SoundeeSuggestedTagsBar,{title:{type:ControlType.String,title:\"Title\",defaultValue:\"Suggested tags\",placeholder:\"Leave empty to hide\"},limit:{type:ControlType.Number,title:\"Limit\",defaultValue:50,min:1,max:50,step:1,description:\"How many suggestions to ask for. The rest of the catalog's tags are appended behind them once filters are active, so this is a floor rather than the row's length.\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:0,min:0,max:2e3,step:10,unit:\"px\",description:\"Caps and centres the row, exactly like the filter bar's Max Width. Give both the same value and the tags line up with the filters at every window size. 0 leaves the row full width.\"},paddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:0,min:0,max:120,step:1,unit:\"px\",description:\"Breathing room inside the cap — the filter bar's Padding X, mirrored here.\"},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"0px\",description:\"Extra space around the whole strip, outside the cap. Vertical room usually lives here; horizontal alignment belongs to Max Width and Padding X above.\"},previewLoading:{type:ControlType.Boolean,title:\"Preview Loading\",defaultValue:false,description:\"Canvas only: shows the loading row so it can be styled without waiting for a slow request.\"},text:filterBarTextControls,buttons:tagsPillControls(filterBarPillControls)});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeSuggestedTagsBar\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// browser_shell — the filter bar, the suggested tags and one cap around a\n// catalogue, shared by the tracks, kits and services browsers.\n//\n// The three browsers differ only in the list they put underneath. Everything\n// above it — the sticky bar, the tags strip, the alignment, the scroll anchor\n// and the rhythm between them — is the same design, so it is written once.\n// Three copies is how the kits and services *lists* drifted apart before, and\n// this file is bigger than those were.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{ControlType,RenderTarget}from\"framer\";import SoundeeFilterBar from\"https://framerusercontent.com/modules/BQHMD01TIP3SNUeZvFWN/hdToe6VeUiSVqFHoXA6F/SoundeeFilterBar.js\";import SoundeeSuggestedTagsBar from\"https://framerusercontent.com/modules/viht6kPMwhTuHZDsICrP/FC89C4B6AWBKZIj2pHrO/SoundeeSuggestedTagsBar.js\";import{useCatalogueIsEmpty}from\"https://framerusercontent.com/modules/iODtZvjeTLoGSw3FWxMf/nDiDt9S4XhmoJG5zfmVU/list_growth.js\";import{BrowserListMinHeight,useMeasuredListMinHeight}from\"https://framerusercontent.com/modules/Fo3cxfXOSwZYsol3Xc2O/t5MQgLzzhrLDxK0vnYct/browser_min_height.js\";import{filterBarPanelControls,filterBarPillControls,tagsPillControls,filterBarShellControls,filterBarTextControls}from\"https://framerusercontent.com/modules/ruUAqMNft96TWYq3fKrX/r1NDF4t4xiNSeSCIu2MQ/tokens.js\";// The rhythm between the three pieces. Fixed on purpose: these two numbers\n// are the design, not a setting.\nexport const BAR_TO_TAGS_GAP=10;export const TAGS_TO_LIST_GAP=30;export const DEFAULT_BROWSER_TAGS={show:true,title:\"Suggested tags\",limit:50};/** Each catalogue has its own schema, so its own sensible set of dropdowns. */export function browserFilterDefaults(filterKeys,moreKeys,searchPlaceholder=\"Search by title or tags\"){return{show:true,filterKeys,moreKeys,moreLabel:\"More\",showSort:true,showSearch:true,showFavorites:true,// Off unless a browser turns it on: only a catalogue that can draw\n// both layouts has anything to switch.\nshowLayout:false,searchPlaceholder};}/**\n * Renders the bar and the tags, and caps whatever list is handed to it.\n *\n * The outer element is the scroll anchor, which is what makes a separate\n * Scroll Anchor component unnecessary: the browser hands this same element to\n * the list as a ref, so the list scrolls back to it on a filter change.\n *\n * A ref and not a DOM id — there is no name to invent, none to collide with a\n * second browser on the page, and nothing that quietly stops working when\n * someone edits it. The id route still exists on the lists themselves, for the\n * standalone case where the anchor is its own component on the canvas and a\n * name is the only thing that can reach across.\n */export function BrowserShell({anchorRef,maxWidth,paddingX,layout,navOffset,filters,tags,bar,text,buttons,panel,tagsText,tagsButtons,filterDefaults,style,children}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const f0={...filterDefaults,...filters};const t0={...DEFAULT_BROWSER_TAGS,...tags};// A store with nothing in this catalogue has nothing to filter, sort,\n// search or tag: the bar is furniture, and a row of controls that answer\n// for nothing makes an empty store read as a broken one. So it goes, and\n// the empty state carries the page on its own.\n//\n// Only when the catalogue itself is empty — never when filters emptied it.\n// Those controls are the way back out, and hiding them strands the visitor\n// on a page with no results and no way to get any. `useCatalogueIsEmpty`\n// draws exactly that line, and stays false until the list has answered so\n// the bar cannot flash away during the first fetch.\n//\n// On canvas everything stays: a producer with no services yet still has to\n// be able to see and style the bar.\nconst catalogueIsEmpty=useCatalogueIsEmpty();const hideControls=!isCanvas&&catalogueIsEmpty;const f=hideControls?{...f0,show:false}:f0;const t=hideControls?{...t0,show:false}:t0;// One cap for all three. The bar takes it through its own shell tokens so\n// its edge-to-edge fill keeps painting while its contents line up; the\n// tags and the list take it as a wrapper.\nconst barTokens=React.useMemo(()=>({...bar,maxWidth,paddingX}),[bar,maxWidth,paddingX]);const cap={width:\"100%\",maxWidth:maxWidth>0?maxWidth:undefined,margin:\"0 auto\",padding:paddingX>0?`0 ${paddingX}px`:undefined,boxSizing:\"border-box\",minWidth:0};// The list's reserve, measured here because only the browser can: it\n// owns the element a filter change scrolls to the top (`anchorRef`) and\n// the cap that starts exactly where the list starts. Published through\n// context so the list underneath reads a number instead of inferring\n// \"I must be inside a browser\" from the shape of its props.\nconst listCapRef=React.useRef(null);const measuredListMinHeight=useMeasuredListMinHeight(anchorRef,listCapRef);return /*#__PURE__*/_jsxs(\"div\",{ref:node=>{anchorRef.current=node;},style:{width:\"100%\",minWidth:0,...style},children:[f.show&&/*#__PURE__*/_jsx(\"div\",{style:isCanvas?undefined:{position:\"sticky\",top:navOffset,zIndex:5},children:/*#__PURE__*/_jsx(SoundeeFilterBar,{// No id: nothing points at the bar inside a\n// browser, and two browsers on one page would\n// otherwise ship the same one twice.\nanchorId:\"\",filterKeys:f.filterKeys,moreKeys:f.moreKeys,moreLabel:f.moreLabel,layout:layout,showSort:f.showSort,showSearch:f.showSearch,showFavorites:f.showFavorites,showLayout:f.showLayout,searchPlaceholder:f.searchPlaceholder,bar:barTokens,text:text,buttons:buttons,panel:panel})}),t.show&&/*#__PURE__*/_jsx(\"div\",{style:{marginTop:f.show?BAR_TO_TAGS_GAP:0},children:/*#__PURE__*/_jsx(SoundeeSuggestedTagsBar,{title:t.title,limit:t.limit,padding:\"0px\",maxWidth:maxWidth,paddingX:paddingX,previewLoading:false,text:tagsText?.enabled?tagsText:text,buttons:tagsButtons?.enabled?tagsButtons:buttons})}),/*#__PURE__*/_jsx(\"div\",{// A callback, not the ref object: Framer's older React\n// typings reject RefObject<HTMLDivElement | null> on `ref`.\nref:node=>{listCapRef.current=node;},style:{...cap,marginTop:f.show||t.show?TAGS_TO_LIST_GAP:0},children:/*#__PURE__*/_jsx(BrowserListMinHeight.Provider,{value:measuredListMinHeight,children:children})})]});}/**\n * The panel every browser puts above its list's own settings.\n *\n * `filterDefaults` is the only thing that changes between them — each\n * catalogue's schema has its own dropdowns worth showing by default.\n */export function browserShellControls(filterDefaults){return{// ── The shell ─────────────────────────────────────────────────────\n// No Anchor ID: the scroll-back is a ref now, so there was nothing for\n// a producer to decide and one more name to keep in step.\nmaxWidth:{type:ControlType.Number,title:\"Max Width\",// 1300/20: what every Starter page actually uses. 0 turns the\n// cap off for a deliberately full-width layout.\ndefaultValue:1300,min:0,max:2e3,step:10,unit:\"px\",description:\"One cap for the bar, the tags and the list, so nothing can \"+\"stick out past anything else. 0 leaves everything full width.\"},paddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:20,min:0,max:120,step:1,unit:\"px\",description:\"Breathing room inside the cap, shared by all three.\"},layout:{type:ControlType.Enum,title:\"Layout\",options:[\"Desktop\",\"Mobile\"],optionTitles:[\"Desktop\",\"Mobile\"],defaultValue:\"Desktop\",displaySegmentedControl:true,description:\"One switch for the whole browser: the bar becomes a button \"+\"and a sheet on a phone. Set it per breakpoint.\"},navOffset:{type:ControlType.Number,title:\"Nav Offset\",defaultValue:0,min:0,max:200,step:1,unit:\"px\",description:\"Height of your fixed nav. The filter bar sticks just under \"+\"it, and the page leaves the same room when it scrolls back \"+\"here after a filter change. Leave at 0 without a fixed nav.\"},// ── The filter bar ────────────────────────────────────────────────\nfilters:{type:ControlType.Object,title:\"Filter Bar\",icon:\"object\",buttonTitle:\"Options\",defaultValue:filterDefaults,description:\"The bar itself. Its colours and fonts live in the Bar, Text, \"+\"Buttons and Panel groups below, shared with the tags row.\",controls:{show:{type:ControlType.Boolean,title:\"Show\",defaultValue:filterDefaults.show,enabledTitle:\"Show\",disabledTitle:\"Hide\"},filterKeys:{type:ControlType.Array,title:\"Filters\",control:{type:ControlType.String},defaultValue:filterDefaults.filterKeys,description:\"Schema keys rendered as dropdowns, in this order. A \"+\"key this catalogue does not have is skipped.\"},moreKeys:{type:ControlType.Array,title:\"More Menu\",control:{type:ControlType.String},defaultValue:filterDefaults.moreKeys,description:\"Schema keys collected behind the More dropdown.\"},moreLabel:{type:ControlType.String,title:\"More Label\",defaultValue:filterDefaults.moreLabel},showSort:{type:ControlType.Boolean,title:\"Sort\",defaultValue:filterDefaults.showSort,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showSearch:{type:ControlType.Boolean,title:\"Search\",defaultValue:filterDefaults.showSearch,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showFavorites:{type:ControlType.Boolean,title:\"Favorites\",defaultValue:filterDefaults.showFavorites,enabledTitle:\"Show\",disabledTitle:\"Hide\"},showLayout:{type:ControlType.Boolean,title:\"Layout\",defaultValue:filterDefaults.showLayout,enabledTitle:\"Show\",disabledTitle:\"Hide\"},searchPlaceholder:{type:ControlType.String,title:\"Search Hint\",defaultValue:filterDefaults.searchPlaceholder}}},// ── The suggested tags ────────────────────────────────────────────\ntags:{type:ControlType.Object,title:\"Suggested Tags\",icon:\"object\",buttonTitle:\"Options\",defaultValue:DEFAULT_BROWSER_TAGS,description:\"The strip of tags under the bar that narrows whatever the \"+\"list is showing. Styled by the same Text and Buttons groups \"+\"as the bar.\",controls:{show:{type:ControlType.Boolean,title:\"Show\",defaultValue:DEFAULT_BROWSER_TAGS.show,enabledTitle:\"Show\",disabledTitle:\"Hide\"},title:{type:ControlType.String,title:\"Title\",defaultValue:DEFAULT_BROWSER_TAGS.title,placeholder:\"Leave empty to hide\"},limit:{type:ControlType.Number,title:\"Limit\",defaultValue:DEFAULT_BROWSER_TAGS.limit,min:1,max:50,step:1}}},// ── Shared styling groups (bar + tags) ────────────────────────────\nbar:{...filterBarShellControls,controls:{...filterBarShellControls.controls,// Owned by the browser's own Max Width and Padding X, so the\n// two cannot disagree with the tags and the list. Hidden\n// rather than removed: an instance's stored values stay put.\nmaxWidth:{...filterBarShellControls.controls.maxWidth,hidden:()=>true},paddingX:{...filterBarShellControls.controls.paddingX,hidden:()=>true}}},text:filterBarTextControls,buttons:filterBarPillControls,panel:filterBarPanelControls,tagsText:{...filterBarTextControls,title:\"Tags Text\",hidden:props=>props.tags?.show===false,description:\"With Own Style off, the tags inherit Text above. On, they \"+\"get their own set — smaller type than the bar, usually.\",controls:{enabled:{type:ControlType.Boolean,title:\"Own Style\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Inherit\"},...filterBarTextControls.controls}},tagsButtons:{...filterBarPillControls,title:\"Tags Buttons\",hidden:props=>props.tags?.show===false,description:\"With Own Style off, the tags inherit Buttons above. On, they \"+\"get their own set.\",controls:{enabled:{type:ControlType.Boolean,title:\"Own Style\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Inherit\"},// The tags variant: Selected/Selected Label hidden — a\n// picked tag leaves the strip, so there is nothing for them\n// to paint.\n...tagsPillControls(filterBarPillControls).controls}}};}\nexport const __FramerMetadata__ = {\"exports\":{\"BrowserShell\":{\"type\":\"reactComponent\",\"name\":\"BrowserShell\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"BrowserFiltersGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BrowserTagsGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_BROWSER_TAGS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"browserFilterDefaults\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BrowserShellProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TAGS_TO_LIST_GAP\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"browserShellControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BAR_TO_TAGS_GAP\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r7 (2026-08-25, v4 hardening) — rebuild for the\n// dual-major cache option (gcTime/cacheTime) and the NaN-proof page counter\n// in api/{tracks,kits,services}.tsx. On v4 `undefined + 1` made nextPage NaN,\n// which is not nullish, so the list would ask for page=NaN forever.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r5 (2026-08-25, engine fix) — rebuild for the\n// corrected dynamic import in lib/audio/engine.tsx (../store -> ../../store).\n// That path resolved nowhere, which is the code error that blocked Update in\n// the Starter. Importers do not rebuild when only an imported file changes.\n// soundee-core republish (2026-08-25) — rebuild so this component picks up the\n// shared playlist runtime (store/playlist.tsx moved onto globalThis). Without a\n// rebuild it keeps its own inlined copy and playback state stays split.\n// soundee-core republish r4 (2026-08-24) — rebuild for the FilterBar change\n// (importers do not rebuild when only an imported file changes).\n// SoundeeTracksBrowser — the filter bar, the suggested tags and the tracks\n// list as one component.\n//\n// Three reasons it exists as a bundle rather than three placements:\n// - Alignment is owned in one place. Max Width and Padding X are set once and\n//   pushed into all three, so the bar, the tags and the rows cannot drift the\n//   way three separately-configured instances did.\n// - The wrapper is the scroll target. The list scrolls back here when the\n//   filters change, so no Scroll Anchor component has to be placed on the\n//   canvas any more — the outer div is the anchor.\n// - The spacing between the three is part of the design rather than three gaps\n//   a producer has to remember.\n//\n// Everything above the list lives in `browser_shell`, shared with the kits and\n// services browsers. This file is only the tracks list and its panel.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls}from\"framer\";import SoundeeTracksList,{tracksListPanelControls,DEFAULT_CONTENT,DEFAULT_LIST,DEFAULT_METADATA,DEFAULT_SCROLLING,DEFAULT_SPACING}from\"https://framerusercontent.com/modules/9EKGvjklldEW2KiZO4D5/sr2FRK3B0Y0bwJrYS5aG/SoundeeTracksListStandalone.js\";import{BrowserShell,browserFilterDefaults,browserShellControls,DEFAULT_BROWSER_TAGS}from\"https://framerusercontent.com/modules/U7fAjlh1XUFKIeOg4yjh/FGB7G46MpgkAanSPOaXI/browser_shell.js\";import{DEFAULT_CHIP_TOKENS,DEFAULT_PLAY_TOKENS,DEFAULT_ROW_COLUMNS,DEFAULT_ROW_TOKENS,DEFAULT_WAVE_TOKENS}from\"https://framerusercontent.com/modules/8841CNm8EKjvZRVrjFfe/IYq9trq37cXscGsUnnZL/tokens.js\";const DEFAULT_FILTERS={...browserFilterDefaults([\"genre\",\"mood\",\"artist\",\"collaborator\",\"key\",\"price\",\"bpm\"],[\"download\",\"hook\"]),// On here and nowhere else: the tracks list is the one catalogue that can\n// draw both a row and a card, so it is the only bar with something to\n// switch. Kits and services are already grids.\nshowLayout:true};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */export default function SoundeeTracksBrowser({maxWidth=1300,paddingX=20,layout=\"Desktop\",navOffset=0,filters,tags,bar,text,buttons,panel,tagsText,tagsButtons,source=DEFAULT_CONTENT.source,playlistId=DEFAULT_CONTENT.playlistId,initialFilters=DEFAULT_CONTENT.initialFilters,excludeId=DEFAULT_CONTENT.excludeId,filtersSource=DEFAULT_CONTENT.filtersSource,middle=\"Tags\",columns=DEFAULT_ROW_COLUMNS,metadata=DEFAULT_METADATA,spacing=DEFAULT_SPACING,rowStyle=DEFAULT_ROW_TOKENS,playTokens=DEFAULT_PLAY_TOKENS,chipTokens=DEFAULT_CHIP_TOKENS,waveTokens=DEFAULT_WAVE_TOKENS,list=DEFAULT_LIST,style}){// The wrapper this browser draws, handed to the list as the place to\n// scroll back to when the filters change. A ref, so there is no id to\n// name, none to collide with a second browser on the page, and nothing\n// that stops working when someone renames it.\nconst anchorRef=React.useRef(null);const scrolling={...DEFAULT_SCROLLING,scrollOffset:navOffset};return /*#__PURE__*/_jsx(BrowserShell,{anchorRef:anchorRef,maxWidth:maxWidth,paddingX:paddingX,layout:layout,navOffset:navOffset,filters:filters,tags:tags,bar:bar,text:text,buttons:buttons,panel:panel,tagsText:tagsText,tagsButtons:tagsButtons,filterDefaults:DEFAULT_FILTERS,style:style,children:/*#__PURE__*/_jsx(SoundeeTracksList,{scrollTargetRef:anchorRef,source:source,playlistId:playlistId,initialFilters:initialFilters,excludeId:excludeId,filtersSource:filtersSource,rowLayout:layout,middle:middle,columns:columns,metadata:metadata,spacing:spacing,rowStyle:rowStyle,playTokens:playTokens,chipTokens:chipTokens,waveTokens:waveTokens,list:list,scrolling:scrolling})});}SoundeeTracksBrowser.displayName=\"Soundee Tracks Browser\";const browserDefaults={maxWidth:1300,paddingX:20,layout:\"Desktop\",navOffset:0,filters:DEFAULT_FILTERS,tags:DEFAULT_BROWSER_TAGS,source:DEFAULT_CONTENT.source,playlistId:DEFAULT_CONTENT.playlistId,initialFilters:DEFAULT_CONTENT.initialFilters,excludeId:DEFAULT_CONTENT.excludeId,filtersSource:DEFAULT_CONTENT.filtersSource,middle:\"Tags\",columns:DEFAULT_ROW_COLUMNS,metadata:DEFAULT_METADATA,spacing:DEFAULT_SPACING,rowStyle:DEFAULT_ROW_TOKENS,playTokens:DEFAULT_PLAY_TOKENS,chipTokens:DEFAULT_CHIP_TOKENS,waveTokens:DEFAULT_WAVE_TOKENS,list:DEFAULT_LIST};SoundeeTracksBrowser.defaultProps=browserDefaults;// The list's own panel, minus what the browser owns: layout comes from the\n// shared Layout switch, and the scroll target is the browser itself.\nconst{rowLayout:_rowLayout,scrolling:_scrolling,...forwardedListControls}=tracksListPanelControls;const controls={...browserShellControls(DEFAULT_FILTERS),// ── The list, unchanged from the standalone ───────────────────────────\n...forwardedListControls};addPropertyControls(SoundeeTracksBrowser,controls);\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeTracksBrowser\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useCallback,useEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";const OPTIONS=[\"chart\",\"top-sellers\",\"trending\",\"most-played\",\"latest\",\"oldest\",\"random\"];const HIDDEN=\"data-aram-sort-hidden\";const getStore=()=>globalThis.__soundeeFilterStore__tracks;// \"Chart\" is Soundee's default order, which has an empty value in its filters.\nconst sortValue=option=>option===\"chart\"?\"\":option;function applyNames(store,sorts){const options=store.schema.find(f=>f.key===\"sort\")?.options;if(!options)return;const named=sorts.map(sort=>{const option=options.find(o=>o.value===sort.value);if(option)option.name=sort.name;return option;});const rest=options.filter(o=>!sorts.some(s=>s.value===o.value));options.splice(0,options.length,...named.filter(Boolean),...rest);}// The desktop dropdown of Soundee's row. The phone button carries a title, this one doesn't.\nconst findSoundeeRow=()=>document.querySelector('button[aria-label=\"Sort\"]:not([title])')?.parentElement??null;function Icon({d}){return /*#__PURE__*/_jsx(\"svg\",{width:16,height:16,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{flexShrink:0},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:d})});}const ICONS={\"top-sellers\":\"M3 8l4.5 3.5L12 5l4.5 6.5L21 8l-1.8 9.2a1 1 0 0 1-1 .8H5.8a1 1 0 0 1-1-.8z\",random:\"M16 3h5v5M4 20 21 3M21 16v5h-5M15 15l6 6M4 4l5 5\"};function Row({store,sorts,pinned,menuLabel,font}){const current=String(store.useStore().committed.sort??\"\");const[open,setOpen]=useState(false);const root=useRef(null);const trigger=useRef(null);const items=useRef([]);const pills=pinned.map(value=>sorts.find(s=>s.value===value)).filter(Boolean);const inMenuOnly=pills.some(s=>s.value===current)?undefined:sorts.find(s=>s.value===current);const choose=useCallback(value=>{store.setSingle(\"sort\",value,true);setOpen(false);trigger.current?.focus();},[store]);useEffect(()=>{if(!open)return;const start=Math.max(0,sorts.findIndex(s=>s.value===current));items.current[start]?.focus();const outside=event=>{if(!root.current?.contains(event.target))setOpen(false);};document.addEventListener(\"pointerdown\",outside);return()=>document.removeEventListener(\"pointerdown\",outside);},[open]);const onMenuKey=event=>{const at=items.current.indexOf(document.activeElement);const last=sorts.length-1;const go={ArrowDown:at===last?0:at+1,ArrowUp:at<=0?last:at-1,Home:0,End:last}[event.key];if(go!==undefined){event.preventDefault();items.current[go]?.focus();}else if(event.key===\"Escape\"){event.stopPropagation();setOpen(false);trigger.current?.focus();}else if(event.key===\"Tab\"){setOpen(false);}};return /*#__PURE__*/_jsxs(\"div\",{ref:root,className:\"aram-sort\",style:font,children:[pills.map(sort=>/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"aram-sort-pill\",\"aria-pressed\":sort.value===current,onClick:()=>choose(sort.value),children:[ICONS[sort.value]&&/*#__PURE__*/_jsx(Icon,{d:ICONS[sort.value]}),sort.name]},sort.value||\"chart\")),/*#__PURE__*/_jsxs(\"div\",{className:\"aram-sort-wrap\",children:[/*#__PURE__*/_jsxs(\"button\",{ref:trigger,type:\"button\",className:\"aram-sort-pill\",\"aria-pressed\":!!inMenuOnly,\"aria-haspopup\":\"menu\",\"aria-expanded\":open,onClick:()=>setOpen(!open),children:[inMenuOnly?.name??menuLabel,/*#__PURE__*/_jsx(\"span\",{className:\"aram-sort-chevron\",\"data-open\":open,children:/*#__PURE__*/_jsx(Icon,{d:\"m6 9 6 6 6-6\"})})]}),open&&/*#__PURE__*/_jsx(\"div\",{className:\"aram-sort-menu\",role:\"menu\",\"aria-label\":menuLabel,onKeyDown:onMenuKey,children:sorts.map((sort,i)=>/*#__PURE__*/_jsx(\"button\",{ref:el=>{items.current[i]=el;},type:\"button\",role:\"menuitemradio\",\"aria-checked\":sort.value===current,tabIndex:-1,className:\"aram-sort-item\",onClick:()=>choose(sort.value),children:sort.name},sort.value||\"chart\"))})]})]});}/**\n * Beat Sort — our own sort row in Soundee's filter bar (names, buttons and dropdown).\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function BeatSort(props){const{chart=\"Featured\",topSellers=\"Top Beats\",trending=\"Trending\",mostPlayed=\"Most Played\",latest=\"Latest\",oldest=\"Oldest\",random=\"Random\",menuLabel=\"Sort\",buttons=[\"chart\",\"top-sellers\",\"latest\",\"oldest\",\"random\"],fontFamily=\"Archivo\",fontSize=14,textColor=\"#FBF9F5\",border=\"rgba(251,249,245,0.12)\",fill=\"#070809\",activeFill=\"#FBF9F5\",activeText=\"#070809\",panel=\"#0F1011\",buttonHeight=36,paddingX=18,radius=6}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[row,setRow]=useState(null);const[host,setHost]=useState(null);const sorts=[{value:\"\",name:chart},{value:\"top-sellers\",name:topSellers},{value:\"trending\",name:trending},{value:\"most-played\",name:mostPlayed},{value:\"latest\",name:latest},{value:\"oldest\",name:oldest},{value:\"random\",name:random}];const key=sorts.map(s=>s.name).join(\"|\");// Soundee draws the bar after loading and redraws it when the breakpoint changes.\nuseEffect(()=>{if(isCanvas)return;let frame=0;const sync=()=>{frame=0;const store=getStore();if(!store)return;applyNames(store,sorts);setRow(findSoundeeRow());};const schedule=()=>{if(!frame)frame=requestAnimationFrame(sync);};const observer=new MutationObserver(schedule);observer.observe(document.body,{childList:true,subtree:true});sync();return()=>{observer.disconnect();cancelAnimationFrame(frame);};},[isCanvas,key]);useEffect(()=>{if(!row?.parentElement)return;const node=document.createElement(\"div\");node.style.cssText=\"position:relative;z-index:3;flex-shrink:0\";row.parentElement.insertBefore(node,row);row.setAttribute(HIDDEN,\"\");setHost(node);return()=>{node.remove();row.removeAttribute(HIDDEN);setHost(null);};},[row]);if(isCanvas){return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:0,left:0,width:\"max-content\",padding:\"6px 10px\",border:\"1px dashed rgba(251,249,245,0.4)\",background:\"#070809\",color:\"#FBF9F5\",fontSize:12},children:\"Beat Sort: sort buttons in the filter bar\"});}const store=getStore();if(!host||!store)return null;const css=`\n[${HIDDEN}] { display: none !important; }\n.aram-sort { display: flex; align-items: center; gap: 12px; }\n.aram-sort-wrap { position: relative; }\n.aram-sort-pill, .aram-sort-item { font: inherit; letter-spacing: inherit; cursor: pointer; }\n.aram-sort-pill {\n    display: inline-flex; align-items: center; gap: 8px; height: ${buttonHeight}px; box-sizing: border-box; padding: 0 ${paddingX}px;\n    border-radius: ${radius}px; border: 1px solid ${border}; background: ${fill}; color: ${textColor};\n    white-space: nowrap; transition: background 140ms, color 140ms, border-color 140ms;\n}\n.aram-sort-pill:hover { background: color-mix(in srgb, ${fill}, ${textColor} 10%); border-color: color-mix(in srgb, ${border}, ${textColor} 25%); }\n.aram-sort-pill[aria-pressed=\"true\"], .aram-sort-pill[aria-pressed=\"true\"]:hover { background: ${activeFill}; border-color: ${activeFill}; color: ${activeText}; }\n.aram-sort-pill:focus-visible, .aram-sort-item:focus-visible { outline: 2px solid ${textColor}; outline-offset: 2px; }\n.aram-sort-chevron { display: inline-flex; opacity: .6; transition: transform 150ms ease; }\n.aram-sort-chevron[data-open=\"true\"] { transform: rotate(180deg); }\n.aram-sort-menu {\n    position: absolute; top: calc(100% + 8px); left: 0; z-index: 30; display: flex; flex-direction: column; gap: 1px;\n    width: max-content; min-width: 180px; padding: 10px; box-sizing: border-box; background: ${panel}; border: 1px solid ${border};\n    border-radius: 16px; box-shadow: 0 18px 48px rgba(0,0,0,.45);\n}\n.aram-sort-item {\n    display: flex; align-items: center; width: 100%; height: 44px; padding: 0 12px; border: none; border-radius: 10px;\n    background: transparent; color: ${textColor}; text-align: left; white-space: nowrap;\n}\n.aram-sort-item:hover, .aram-sort-item:focus-visible { background: color-mix(in srgb, ${textColor} 8%, transparent); }\n.aram-sort-item[aria-checked=\"true\"] { background: color-mix(in srgb, ${textColor} 10%, transparent); }\n@media (prefers-reduced-motion: reduce) { .aram-sort-pill, .aram-sort-chevron { transition: none; } }\n`;return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:css}),/*#__PURE__*/_jsx(Row,{store:store,sorts:sorts,pinned:buttons.map(sortValue),menuLabel:menuLabel,font:{fontFamily,fontSize,fontWeight:400,lineHeight:\"1em\"}})]}),host);}const label=(title,defaultValue)=>({type:ControlType.String,title,defaultValue});const color=(title,defaultValue)=>({type:ControlType.Color,title,defaultValue});addPropertyControls(BeatSort,{buttons:{type:ControlType.Array,title:\"Buttons\",description:\"Sorts with their own button, in order. Every sort is always in the dropdown.\",control:{type:ControlType.Enum,options:OPTIONS,optionTitles:[\"Featured (Soundee Chart)\",\"Top Beats (Soundee Top Sellers)\",\"Trending\",\"Most Played\",\"Latest\",\"Oldest\",\"Random\"]},defaultValue:[\"chart\",\"top-sellers\",\"latest\",\"oldest\",\"random\"],maxCount:7},menuLabel:label(\"Dropdown\",\"Sort\"),chart:label(\"Chart Name\",\"Featured\"),topSellers:label(\"Top Sellers Name\",\"Top Beats\"),trending:label(\"Trending Name\",\"Trending\"),mostPlayed:label(\"Most Played Name\",\"Most Played\"),latest:label(\"Latest Name\",\"Latest\"),oldest:label(\"Oldest Name\",\"Oldest\"),random:label(\"Random Name\",\"Random\"),fontFamily:label(\"Font\",\"Archivo\"),fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,min:10,max:22,step:1,unit:\"px\"},textColor:color(\"Text\",\"#FBF9F5\"),border:color(\"Border\",\"rgba(251,249,245,0.12)\"),fill:color(\"Fill\",\"#070809\"),activeFill:color(\"Active Fill\",\"#FBF9F5\"),activeText:color(\"Active Text\",\"#070809\"),panel:color(\"Panel\",\"#0F1011\"),buttonHeight:{type:ControlType.Number,title:\"Height\",defaultValue:36,min:28,max:64,step:1,unit:\"px\"},paddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:18,min:0,max:40,step:1,unit:\"px\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:6,min:0,max:24,step:1,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BeatSort\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BeatSort.map"],"mappings":"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"}