also add versioning in mini repl

This commit is contained in:
Felix Roos 2024-05-31 11:01:09 +02:00
parent 33322be948
commit 05289b171b
3 changed files with 10 additions and 10 deletions

View file

@ -1,4 +1,4 @@
import { useStlte, useRef, useCallback, useMemo, useEffect } from 'react'; import { useState, useRef, useCallback, useMemo, useEffect } from 'react';
import { Icon } from './Icon'; import { Icon } from './Icon';
import { silence, noteToMidi, _mod } from '@strudel/core'; import { silence, noteToMidi, _mod } from '@strudel/core';
import { getPunchcardPainter } from '@strudel/draw'; import { getPunchcardPainter } from '@strudel/draw';
@ -6,15 +6,15 @@ import { transpiler } from '@strudel/transpiler';
import { getAudioContext, webaudioOutput, initAudioOnFirstClick } from '@strudel/webaudio'; import { getAudioContext, webaudioOutput, initAudioOnFirstClick } from '@strudel/webaudio';
import { StrudelMirror } from '@strudel/codemirror'; import { StrudelMirror } from '@strudel/codemirror';
import { prebake } from '../repl/prebake.mjs'; import { prebake } from '../repl/prebake.mjs';
import { loadModules } from '../repl/util.mjs'; import { loadModules, setVersionDefaultsFrom } from '../repl/util.mjs';
import Claviature from '@components/Claviature'; import Claviature from '@components/Claviature';
import useClient from '@src/useClient.mjs'; import useClient from '@src/useClient.mjs';
let prebaked, modulesLoading, audioLoading; let prebaked, modulesLoading, audioReady;
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {
prebaked = prebake(); prebaked = prebake();
modulesLoading = loadModules(); modulesLoading = loadModules();
audioLoading = initAudioOnFirstClick(); audioReady = initAudioOnFirstClick();
} }
export function MiniRepl({ export function MiniRepl({
@ -69,13 +69,12 @@ export function MiniRepl({
} }
return pat; return pat;
}, },
prebake: async () => Promise.all([modulesLoading, prebaked, audioLoading]), prebake: async () => Promise.all([modulesLoading, prebaked]),
onUpdateState: (state) => { onUpdateState: (state) => {
setReplState({ ...state }); setReplState({ ...state });
}, },
afterEval:() => { beforeEval: () => audioReady, // not doing this in prebake to make sure viz is drawn
afterEval: ({ code }) => setVersionDefaultsFrom(code),
}
}); });
// init settings // init settings
editor.setCode(code); editor.setCode(code);

View file

@ -16,7 +16,7 @@ import {
initAudioOnFirstClick, initAudioOnFirstClick,
} from '@strudel/webaudio'; } from '@strudel/webaudio';
import { defaultAudioDeviceName } from '../settings.mjs'; import { defaultAudioDeviceName } from '../settings.mjs';
import { getAudioDevices, setAudioDevice } from './util.mjs'; import { getAudioDevices, setAudioDevice, setVersionDefaultsFrom } from './util.mjs';
import { StrudelMirror, defaultSettings } from '@strudel/codemirror'; import { StrudelMirror, defaultSettings } from '@strudel/codemirror';
import { clearHydra } from '@strudel/hydra'; import { clearHydra } from '@strudel/hydra';
import { useCallback, useEffect, useRef, useState } from 'react'; import { useCallback, useEffect, useRef, useState } from 'react';

View file

@ -1,6 +1,7 @@
import { evalScope, hash2code, logger } from '@strudel/core'; import { evalScope, hash2code, logger } from '@strudel/core';
import { settingPatterns, defaultAudioDeviceName } from '../settings.mjs'; import { settingPatterns, defaultAudioDeviceName } from '../settings.mjs';
import { getAudioContext, initializeAudioOutput, setDefaultAudioContext } from '@strudel/webaudio'; import { getAudioContext, initializeAudioOutput, setDefaultAudioContext, setVersionDefaults } from '@strudel/webaudio';
import { getMetadata } from '../metadata_parser';
import { isTauri } from '../tauri.mjs'; import { isTauri } from '../tauri.mjs';
import './Repl.css'; import './Repl.css';