@@ -75,14 +75,30 @@ sed -i '' 's/@customElement("ha-media-player-browse")/@customElement("sonos-ha-m
7575
7676# Apply Sonos Card customizations to grid layout
7777echo " Applying Sonos Card grid customizations..."
78- # Change grid item size from 175px to 100px for compact display (4 columns instead of 2)
78+ # Change grid item size heights and gap
7979sed -i ' ' \
80- -e " s/width: '175px'/width: '100px'/g" \
8180 -e " s/height: '312px'/height: '180px'/g" \
8281 -e " s/height: '225px'/height: '150px'/g" \
8382 -e " s/gap: '16px'/gap: '8px'/g" \
8483 " $UPSTREAM_DIR /ha-media-player-browse.ts"
8584
85+ # Replace the hardcoded itemSize with getGridItemSize function call
86+ echo " Updating grid to use getGridItemSize..."
87+ sed -i ' ' " s/itemSize: {[^}]*width: '175px'[^}]*}/itemSize: getGridItemSize(this.itemsPerRow, childrenMediaClass.thumbnail_ratio === 'portrait')/g" \
88+ " $UPSTREAM_DIR /ha-media-player-browse.ts"
89+
90+ # Add itemsPerRow property to the component
91+ echo " Adding itemsPerRow property..."
92+ sed -i ' ' ' /public preferredLayout.*auto/a\
93+ \
94+ @property({ type: Number }) public itemsPerRow?: number;
95+ ' " $UPSTREAM_DIR /ha-media-player-browse.ts"
96+
97+ # Remove type import of LitVirtualizer (causes duplicate registration)
98+ echo " Fixing LitVirtualizer import..."
99+ sed -i ' ' ' /^import type { LitVirtualizer }/d' " $UPSTREAM_DIR /ha-media-player-browse.ts"
100+ sed -i ' ' ' s/private _virtualizer?: LitVirtualizer/private _virtualizer?: any/g' " $UPSTREAM_DIR /ha-media-player-browse.ts"
101+
86102# Reduce play button size for smaller grid items
87103echo " Reducing play button size..."
88104sed -i ' ' \
@@ -92,13 +108,29 @@ sed -i '' \
92108 -e ' s/right: calc(50% - 35px)/right: calc(50% - 20px)/g' \
93109 " $UPSTREAM_DIR /ha-media-player-browse.ts"
94110
111+ # Update virtualizer.ts to conditionally register lit-virtualizer
112+ echo " Updating virtualizer.ts..."
113+ cat > " $UPSTREAM_DIR /resources/virtualizer.ts" << 'EOF '
114+ // @ts-nocheck
115+ import { LitVirtualizer } from '@lit-labs/virtualizer/LitVirtualizer.js';
116+
117+ // Only register if not already defined (HA might have it already)
118+ if (!customElements.get('lit-virtualizer')) {
119+ customElements.define('lit-virtualizer', LitVirtualizer);
120+ }
121+
122+ export const loadVirtualizer = async (): Promise<void> => {
123+ // Element is registered above via static import
124+ };
125+ EOF
126+
95127# Save version info
96128echo " $RELEASE_TAG " > " $VERSION_FILE "
97129echo " Synced: $( date -u +" %Y-%m-%d %H:%M:%S UTC" ) " >> " $VERSION_FILE "
98130
99- # Add filterOutIgnoredMediaSources import to ha-media-player-browse.ts
100- echo " Adding filterOutIgnoredMediaSources import ..."
101- sed -i ' ' ' 1s/^/import { filterOutIgnoredMediaSources } from ' \' ' ..\/utils\/media-browse-utils' \' ' ;\n/' \
131+ # Add custom imports to ha-media-player-browse.ts
132+ echo " Adding custom imports ..."
133+ sed -i ' ' ' 1s/^/import { filterOutIgnoredMediaSources, getGridItemSize } from ' \' ' ..\/utils\/media-browse-utils' \' ' ;\n/' \
102134 " $UPSTREAM_DIR /ha-media-player-browse.ts"
103135
104136# Add @ts-nocheck to all upstream TypeScript files
112144echo " "
113145echo " ✅ Synced from HA frontend release: $RELEASE_TAG "
114146echo " ✅ Component renamed to 'sonos-ha-media-player-browse'"
115- echo " ✅ Grid customizations applied (100px items, 8px gap)"
147+ echo " ✅ Grid customizations applied (dynamic itemsPerRow width, 8px gap)"
148+ echo " ✅ itemsPerRow property added for configurable grid columns"
116149echo " ✅ Non-audio media sources filtered (TTS, camera, images)"
117150echo " ✅ @ts-nocheck added to all upstream files"
118151echo " ✅ Version saved to $VERSION_FILE "
0 commit comments