diff --git a/test/apps/widgets-9.2/index.html b/test/apps/widgets-9.2/index.html
deleted file mode 100644
index 2707109f812..00000000000
--- a/test/apps/widgets-9.2/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- deck.gl Example
-
-
-
-
-
-
-
diff --git a/test/apps/widgets-infovis/README.md b/test/apps/widgets-infovis/README.md
deleted file mode 100644
index 10f985a2938..00000000000
--- a/test/apps/widgets-infovis/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-## Example: deck.gl widgets with non-geospatial data
-
-Uses [Vite](https://vitejs.dev/) to bundle and serve files.
-
-## Usage
-
-To install dependencies:
-
-```bash
-npm install
-# or
-yarn
-```
-
-Commands:
-* `npm start` is the development target, to serve the app and hot reload.
-* `npm run build` is the production target, to create the final bundle and write to disk.
diff --git a/test/apps/widgets-infovis/package.json b/test/apps/widgets-infovis/package.json
deleted file mode 100644
index 9058a8e1f45..00000000000
--- a/test/apps/widgets-infovis/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "deckgl-example-pure-js-widgets-infovis",
- "version": "0.0.0",
- "private": true,
- "license": "MIT",
- "scripts": {
- "start": "vite --open",
- "start-local": "vite --config ../vite.config.local.mjs",
- "build": "vite build"
- },
- "dependencies": {
- "@deck.gl/core": "^9.2.0-beta.1",
- "@deck.gl/layers": "^9.2.0-beta.1",
- "@deck.gl/widgets": "^9.2.0-beta.1"
- },
- "devDependencies": {
- "vite": "^7.3.1"
- }
-}
diff --git a/test/apps/widgets-multi-view-9.2/README.md b/test/apps/widgets-multi-view-9.2/README.md
deleted file mode 100644
index 277a76dc22d..00000000000
--- a/test/apps/widgets-multi-view-9.2/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-## Example: Use deck.gl with widgets
-
-Uses [Vite](https://vitejs.dev/) to bundle and serve files.
-
-## Usage
-
-To install dependencies:
-
-```bash
-npm install
-# or
-yarn
-```
-
-Commands:
-* `npm start` is the development target, to serve the app and hot reload.
-* `npm run build` is the production target, to create the final bundle and write to disk.
diff --git a/test/apps/widgets-multi-view-9.2/package.json b/test/apps/widgets-multi-view-9.2/package.json
deleted file mode 100644
index 0fdf1c72476..00000000000
--- a/test/apps/widgets-multi-view-9.2/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "deckgl-example-widgets-multi-view",
- "version": "0.0.0",
- "private": true,
- "type": "module",
- "license": "MIT",
- "scripts": {
- "start": "vite --open",
- "start-local": "vite --config ../vite.config.local.mjs",
- "build": "vite build"
- },
- "dependencies": {
- "@deck.gl/core": "^9.2.0-beta.1",
- "@deck.gl/layers": "^9.2.0-beta.1",
- "@deck.gl/widgets": "^9.2.0-beta.1"
- },
- "devDependencies": {
- "vite": "^7.3.1"
- }
-}
diff --git a/test/apps/widgets-multi-view-9.2/react-app.tsx b/test/apps/widgets-multi-view-9.2/react-app.tsx
deleted file mode 100644
index 5edbaee6831..00000000000
--- a/test/apps/widgets-multi-view-9.2/react-app.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-// deck.gl
-// SPDX-License-Identifier: MIT
-// Copyright (c) vis.gl contributors
-
-import React, {useState, useEffect} from 'react';
-import {createRoot} from 'react-dom/client';
-import {View} from '@deck.gl/core';
-import {DeckGL} from '@deck.gl/react';
-import {LightTheme, DarkTheme, _SplitterWidget as SplitterWidget} from '@deck.gl/widgets';
-import '@deck.gl/widgets/stylesheet.css';
-
-import {INITIAL_VIEW_STATE, LAYERS, VIEW_LAYOUT} from './app';
-
-function App() {
- const [, setVersion] = useState(0);
- const [views, setViews] = useState([]);
-
- // This is used to force a rerender of the DeckGL component
- // to test for conflicting setters of the views prop
- // useEffect(() => {
- // const timer = setInterval(() => {
- // setVersion(v => v + 1);
- // }, 1000);
-
- // return () => clearInterval(timer);
- // }, [])
-
- return (
-
- );
-}
-
-createRoot(document.body.appendChild(document.createElement('div'))).render();
diff --git a/test/apps/widgets-9.2/README.md b/test/apps/widgets/README.md
similarity index 100%
rename from test/apps/widgets-9.2/README.md
rename to test/apps/widgets/README.md
diff --git a/test/apps/widgets/geospatial.html b/test/apps/widgets/geospatial.html
new file mode 100644
index 00000000000..f93dc07fe09
--- /dev/null
+++ b/test/apps/widgets/geospatial.html
@@ -0,0 +1,28 @@
+
+
+
+
+ deck.gl Example
+
+
+
+
+
+ Geospatial Widget Test
+ This is a very long body of text to test widget behavior with page scrolling.
+
+
+
+
+
+
diff --git a/test/apps/widgets-9.2/app.ts b/test/apps/widgets/geospatial.ts
similarity index 96%
rename from test/apps/widgets-9.2/app.ts
rename to test/apps/widgets/geospatial.ts
index 8bb77311cbb..d5e41c82ed7 100644
--- a/test/apps/widgets-9.2/app.ts
+++ b/test/apps/widgets/geospatial.ts
@@ -41,7 +41,7 @@ const INITIAL_VIEW_STATE = {
pitch: 30
};
-function getLayers(filterRange = [2, 9]) {
+export function getLayers(filterRange = [2, 9]) {
return [
new WMSLayer({
data: 'https://ows.terrestris.de/osm/service',
@@ -79,7 +79,7 @@ function getLayers(filterRange = [2, 9]) {
new ArcLayer({
id: 'arcs',
data: AIR_PORTS,
- dataTransform: d => d.features.filter(f => f.properties.scalerank < 4),
+ dataTransform: (d: any) => d.features.filter(f => f.properties.scalerank < 4),
// Styles
getSourcePosition: f => [-0.4531566, 51.4709959], // London
getTargetPosition: f => f.geometry.coordinates,
@@ -91,7 +91,7 @@ function getLayers(filterRange = [2, 9]) {
}
const deck = new Deck({
- parent: document.getElementById('app'),
+ parent: document.getElementById('map') as HTMLDivElement,
views: new MapView({repeat: true}),
initialViewState: INITIAL_VIEW_STATE,
controller: true,
@@ -135,11 +135,10 @@ const deck = new Deck({
closeOnClickOutside: true
}),
new _TimelineWidget({
- placement: 'bottom-left',
+ _container: document.getElementById('controls') as HTMLDivElement,
timeRange: [2, 9],
step: 1,
- initialTime: 0,
- playInterval: 1000,
+ playInterval: 500,
// eslint-disable-next-line no-console, no-undef
onTimeChange: time =>
deck.setProps({
@@ -199,7 +198,6 @@ function getTooltip(info: PickingInfo, widget: InfoWidget) {
text = `${info.object.properties.name} (${info.object.properties.abbrev})`;
break;
case 'click':
- case 'static':
text = `\
${info.object.properties.name} (${info.object.properties.abbrev})
${info.object.properties.type}
diff --git a/test/apps/widgets/index.html b/test/apps/widgets/index.html
new file mode 100644
index 00000000000..89e6bbfe263
--- /dev/null
+++ b/test/apps/widgets/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+ deck.gl Example
+
+
+
+
+ Pure JS - Geospatial
+ Pure JS - Multiview
+ Pure JS - Infovis
+ React - Geospatial
+ React - Multiview
+ React - Infovis
+
+
+
diff --git a/test/apps/widgets-infovis/index.html b/test/apps/widgets/infovis.html
similarity index 87%
rename from test/apps/widgets-infovis/index.html
rename to test/apps/widgets/infovis.html
index 129f837687a..31e874ecbb5 100644
--- a/test/apps/widgets-infovis/index.html
+++ b/test/apps/widgets/infovis.html
@@ -9,6 +9,6 @@
-
+