@@ -12,6 +12,7 @@ import addProjections from '../../utils/addProjections';
12
12
import { dispatchingLogger } from '../../utils/logger' ;
13
13
import { Popup } from '../popup' ;
14
14
import './index.css' ;
15
+ import { expressionInterpreter as vegaInterpreter } from 'vega-interpreter' ;
15
16
16
17
// Add additional projections
17
18
addProjections ( vega . projection ) ;
@@ -126,16 +127,23 @@ class Editor extends React.PureComponent<Props, State> {
126
127
}
127
128
128
129
public initView ( ) {
129
- const { vegaSpec, vegaLiteSpec, normalizedVegaLiteSpec, config, baseURL, mode, setView, setRuntime, hoverEnable} =
130
- this . props ;
131
-
132
- let runtime : vega . Runtime ;
133
- if ( mode === Mode . VegaLite ) {
134
- // In vl mode, we compile Vega-Lite spec along with config to Vega spec
135
- runtime = vega . parse ( vegaSpec ) ;
136
- } else {
137
- runtime = vega . parse ( vegaSpec , config as VgConfig ) ;
138
- }
130
+ const {
131
+ vegaSpec,
132
+ vegaLiteSpec,
133
+ normalizedVegaLiteSpec,
134
+ config,
135
+ baseURL,
136
+ mode,
137
+ setView,
138
+ setRuntime,
139
+ hoverEnable,
140
+ expressionInterpreter,
141
+ } = this . props ;
142
+
143
+ const parseOptions = expressionInterpreter ? { ast : true } : { } ;
144
+
145
+ // In vl mode, we compile Vega-Lite spec along with config to Vega spec
146
+ const runtime = vega . parse ( vegaSpec , mode === Mode . VegaLite ? { } : ( config as VgConfig ) , parseOptions ) ;
139
147
140
148
const loader = vega . loader ( ) ;
141
149
const originalLoad = loader . load . bind ( loader ) ;
@@ -163,15 +171,15 @@ class Editor extends React.PureComponent<Props, State> {
163
171
164
172
this . props . view . finalize ( ) ;
165
173
}
166
-
167
174
const hover = typeof hoverEnable === 'boolean' ? hoverEnable : mode === Mode . Vega ;
168
175
const view = new vega . View ( runtime , {
169
176
hover,
170
177
loader,
178
+ expr : expressionInterpreter ? vegaInterpreter : undefined ,
171
179
} ) ;
172
180
173
181
view . runAfter ( this . runAfter , true ) ;
174
- ( view as any ) . logger ( dispatchingLogger ) ;
182
+ view . logger ( dispatchingLogger ) ;
175
183
176
184
const debug = ( window as any ) . VEGA_DEBUG ;
177
185
debug . view = view ;
@@ -284,7 +292,8 @@ class Editor extends React.PureComponent<Props, State> {
284
292
! deepEqual ( prevProps . logLevel , this . props . logLevel ) ||
285
293
! deepEqual ( prevProps . mode , this . props . mode ) ||
286
294
! deepEqual ( prevProps . hoverEnable , this . props . hoverEnable ) ||
287
- ! deepEqual ( prevProps . tooltipEnable , this . props . tooltipEnable )
295
+ ! deepEqual ( prevProps . tooltipEnable , this . props . tooltipEnable ) ||
296
+ prevProps . expressionInterpreter !== this . props . expressionInterpreter
288
297
) {
289
298
this . initView ( ) ;
290
299
}
0 commit comments