11import * as React from "react" ;
22import { useState , useEffect } from "react" ;
33import { createRender , useModelState , useModel } from "@anywidget/react" ;
4- import type { Initialize , Render } from "@anywidget/types" ;
4+ import type { Initialize , InitializeProps , Render } from "@anywidget/types" ;
55import Map from "react-map-gl/maplibre" ;
66import DeckGL from "@deck.gl/react/typed" ;
77import { MapViewState , type Layer } from "@deck.gl/core/typed" ;
88import { BaseLayerModel , initializeLayer } from "./model/index.js" ;
99import type { WidgetModel } from "@jupyter-widgets/base" ;
10- import { useParquetWasm } from "./parquet.js" ;
10+ import { initParquetWasmFromBinary } from "./parquet.js" ;
1111import { getTooltip } from "./tooltip/index.js" ;
1212import { isDefined , loadChildModels } from "./util.js" ;
1313import { v4 as uuidv4 } from "uuid" ;
@@ -63,10 +63,6 @@ async function getChildModelState(
6363function App ( ) {
6464 let model = useModel ( ) ;
6565
66- let [ parquetWasmBinary ] = useModelState < DataView | null > (
67- "_parquet_wasm_content" ,
68- ) ;
69- let [ parquetWasmReady ] = useParquetWasm ( parquetWasmBinary ) ;
7066 let [ mapStyle ] = useModelState < string > ( "basemap_style" ) ;
7167 let [ mapHeight ] = useModelState < number > ( "_height" ) ;
7268 let [ showTooltip ] = useModelState < boolean > ( "show_tooltip" ) ;
@@ -110,15 +106,7 @@ function App() {
110106 let [ stateCounter , setStateCounter ] = useState < Date > ( new Date ( ) ) ;
111107
112108 useEffect ( ( ) => {
113- if ( ! parquetWasmReady ) {
114- return ;
115- }
116-
117109 const callback = async ( ) => {
118- if ( ! parquetWasmReady ) {
119- throw new Error ( "inside callback but parquetWasm not ready!" ) ;
120- }
121-
122110 const childModels = await loadChildModels (
123111 model . widget_manager ,
124112 childLayerIds ,
@@ -132,7 +120,7 @@ function App() {
132120 setSubModelState ( newSubModelState ) ;
133121 } ;
134122 callback ( ) . catch ( console . error ) ;
135- } , [ parquetWasmReady , childLayerIds ] ) ;
123+ } , [ childLayerIds ] ) ;
136124
137125 const layers : Layer [ ] = [ ] ;
138126 for ( const subModel of Object . values ( subModelState ) ) {
@@ -200,7 +188,13 @@ function App() {
200188 ) ;
201189}
202190
191+ async function initialize ( { model } : InitializeProps ) : Promise < void > {
192+ const parquetWasmBinary : DataView = model . get ( "_parquet_wasm_content" ) ;
193+ await initParquetWasmFromBinary ( parquetWasmBinary ) ;
194+ }
195+
203196const module : { render : Render ; initialize ?: Initialize } = {
197+ initialize,
204198 render : createRender ( App ) ,
205199} ;
206200
0 commit comments