@@ -33,6 +33,7 @@ import { MVSData, Snapshot } from 'molstar/lib/extensions/mvs/mvs-data';
3333import { Mat3 , Mat4 , Quat , Vec3 } from 'molstar/lib/mol-math/linear-algebra' ;
3434import { tryFindIfStoryIsShared } from '@/lib/data-utils' ;
3535import { toast } from 'sonner' ;
36+ import { Euler } from 'molstar/lib/mol-math/linear-algebra/3d/euler' ;
3637
3738// Extended session interface that may include story data
3839export interface SessionWithData extends SessionItem {
@@ -91,21 +92,33 @@ export function newStory() {
9192 setSessionIdUrl ( undefined ) ;
9293}
9394
95+ // Should be sync with typing generation in the scripts directory
96+ const BuilderLib = {
97+ Vec3,
98+ Mat3,
99+ Mat4,
100+ Quat,
101+ Euler,
102+ } ;
103+
104+ export const BuilderLibNamespaces = Object . keys ( BuilderLib ) ;
105+
94106const createStateProvider = ( code : string ) => {
95- return new Function ( 'builder' , 'index' , 'Vec3' , 'Mat3' , 'Mat4' , 'Quat ', code ) ;
107+ return new Function ( 'builder' , 'index' , '__lib__ ' , code ) ;
96108} ;
97109
98110async function getMVSSnapshot ( story : Story , scene : SceneData , index : number ) {
99111 try {
100112 const stateProvider = createStateProvider ( `
113+ const { ${ Object . keys ( BuilderLib ) . join ( ', ' ) } } = __lib__;
101114async function _run_builder() {
102115 ${ story . javascript } \n\n${ scene . javascript }
103116}
104117return _run_builder();
105118` ) ;
106119 const builder = MVSData . createBuilder ( ) ;
107120 toast . dismiss ( 'state-build-error' ) ;
108- await stateProvider ( builder , index , Vec3 , Mat3 , Mat4 , Quat ) ;
121+ await stateProvider ( builder , index , BuilderLib ) ;
109122 if ( scene . camera ) {
110123 builder . camera ( {
111124 position : adjustedCameraPosition ( scene . camera ) ,
0 commit comments