A music player that connects to your cloud/distributed storage.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: webamp milkdrop

+16 -22
+16 -22
src/themes/winamp/webamp/element.js
··· 19 19 __butterchurnOptions: { 20 20 importButterchurn: () => import("butterchurn"), 21 21 async getPresets() { 22 - const { default: presets } = await import( 23 - "butterchurn-presets/dist/all" 22 + const { default: raw } = await import( 23 + // @ts-ignore 24 + "butterchurn-presets/dist/base.js" 24 25 ); 25 26 26 - return Object.entries(presets).map(([name, preset]) => { 27 - // Some presets have shapes/waves with null baseVals which 28 - // causes butterchurn's overrideDefaultVars to throw. 29 - const p = /** @type {any} */ (preset); 30 - const fix = (arr) => 31 - (arr ?? []).map((e) => ({ 32 - ...e, 33 - baseVals: e.baseVals ?? {}, 34 - })); 35 - return { 36 - name, 37 - butterchurnPresetObject: { 38 - ...p, 39 - baseVals: p.baseVals ?? {}, 40 - shapes: fix(p.shapes), 41 - waves: fix(p.waves), 42 - }, 43 - }; 44 - }); 27 + // In some environments (e.g. Deno's CJS interop), the CJS module.exports 28 + // is surfaced as the default export, so the actual presets collection is 29 + // nested under .default. Unwrap one level if needed. 30 + const presets = 31 + typeof raw?.default === "object" && raw.default !== null 32 + ? raw.default 33 + : raw; 34 + 35 + return Object.entries(presets ?? {}).map(([name, preset]) => ({ 36 + name, 37 + butterchurnPresetObject: preset, 38 + })); 45 39 }, 46 - butterchurnOpen: false, 40 + butterchurnOpen: true, 47 41 }, 48 42 windowLayout: { 49 43 main: { position: { top: 0, left: 0 } },