diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0d030602af..4352c9b1df 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,25 @@
+# [v3.1.8](https://github.com/finos/perspective/releases/tag/v3.1.8)
+
+_2 December 2024_ ([Full changelog](https://github.com/finos/perspective/compare/v3.1.7...v3.1.8))
+
+Fixes
+
+- fix treemap rendering issue in firefox [#2813](https://github.com/finos/perspective/pull/2813)
+- Allow for passthrough of event loop in psp webserver handlers [#2829](https://github.com/finos/perspective/pull/2829)
+- Fix workspace dark theme, theme render bug [#2864](https://github.com/finos/perspective/pull/2864)
+
+# [v3.1.7](https://github.com/finos/perspective/releases/tag/v3.1.7)
+
+_30 November 2024_ ([Full changelog](https://github.com/finos/perspective/compare/v3.1.6...v3.1.7))
+
+Fixes
+
+- Remove `workspace-layout-update` event debounce [#2862](https://github.com/finos/perspective/pull/2862)
+
+Misc
+
+- Add some information on JSON input formats [#2856](https://github.com/finos/perspective/pull/2856)
+
# [v3.1.6](https://github.com/finos/perspective/releases/tag/v3.1.6)
_18 November 2024_ ([Full changelog](https://github.com/finos/perspective/compare/v3.1.5...v3.1.6))
diff --git a/Cargo.lock b/Cargo.lock
index d292903a1b..ab3fdc80b7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1961,7 +1961,7 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "perspective"
-version = "3.1.6"
+version = "3.1.8"
dependencies = [
"async-lock",
"axum",
@@ -2001,7 +2001,7 @@ dependencies = [
[[package]]
name = "perspective-client"
-version = "3.1.6"
+version = "3.1.8"
dependencies = [
"async-lock",
"futures",
@@ -2023,7 +2023,7 @@ dependencies = [
[[package]]
name = "perspective-js"
-version = "3.1.6"
+version = "3.1.8"
dependencies = [
"anyhow",
"base64 0.13.1",
@@ -2052,7 +2052,7 @@ dependencies = [
[[package]]
name = "perspective-lint"
-version = "3.1.6"
+version = "3.1.8"
dependencies = [
"glob",
"yew-fmt",
@@ -2072,7 +2072,7 @@ dependencies = [
[[package]]
name = "perspective-python"
-version = "3.1.6"
+version = "3.1.8"
dependencies = [
"async-lock",
"cmake",
@@ -2092,7 +2092,7 @@ dependencies = [
[[package]]
name = "perspective-server"
-version = "3.1.6"
+version = "3.1.8"
dependencies = [
"async-lock",
"base64 0.22.1",
@@ -2108,7 +2108,7 @@ dependencies = [
[[package]]
name = "perspective-viewer"
-version = "3.1.6"
+version = "3.1.8"
dependencies = [
"anyhow",
"async-lock",
diff --git a/cpp/perspective/package.json b/cpp/perspective/package.json
index 8ed89e516e..e4c570fb21 100644
--- a/cpp/perspective/package.json
+++ b/cpp/perspective/package.json
@@ -3,7 +3,7 @@
"private": true,
"author": "The Perspective Authors",
"license": "Apache-2.0",
- "version": "3.1.6",
+ "version": "3.1.8",
"main": "./dist/esm/perspective.cpp.js",
"files": [
"dist/esm/**/*",
diff --git a/docs/package.json b/docs/package.json
index b000c643ae..9790288837 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-docs",
- "version": "3.1.6",
+ "version": "3.1.8",
"private": true,
"scripts": {
"build": "node build.js && docusaurus build",
diff --git a/examples/blocks/package.json b/examples/blocks/package.json
index bad510f2b7..e44e3316cd 100644
--- a/examples/blocks/package.json
+++ b/examples/blocks/package.json
@@ -1,7 +1,7 @@
{
"name": "blocks",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "A collection of simple client-side Perspective examples for `http://bl.ocks.org`.",
"scripts": {
"start": "mkdirp dist && node --experimental-modules server.mjs",
diff --git a/examples/blocks/src/superstore/index.html b/examples/blocks/src/superstore/index.html
index 32b1127c8b..28c0bcbe37 100644
--- a/examples/blocks/src/superstore/index.html
+++ b/examples/blocks/src/superstore/index.html
@@ -6,17 +6,12 @@
diff --git a/examples/blocks/src/superstore/index.json b/examples/blocks/src/superstore/index.json
new file mode 100644
index 0000000000..78e3391b0d
--- /dev/null
+++ b/examples/blocks/src/superstore/index.json
@@ -0,0 +1,169 @@
+index.html: 48 {
+ "sizes": [
+ 1
+ ],
+ "detail": {
+ "main": {
+ "type": "split-area",
+ "orientation": "horizontal",
+ "children": [
+ {
+ "type": "tab-area",
+ "widgets": [
+ "PERSPECTIVE_GENERATED_ID_0",
+ "PERSPECTIVE_GENERATED_ID_1"
+ ],
+ "currentIndex": 0
+ },
+ {
+ "type": "tab-area",
+ "widgets": [
+ "PERSPECTIVE_GENERATED_ID_3"
+ ],
+ "currentIndex": 0
+ },
+ {
+ "type": "tab-area",
+ "widgets": [
+ "PERSPECTIVE_GENERATED_ID_2"
+ ],
+ "currentIndex": 0
+ }
+ ],
+ "sizes": [
+ 0.3765432098765432,
+ 0.24691358024691357,
+ 0.3765432098765432
+ ]
+ }
+ },
+ "viewers": {
+ "PERSPECTIVE_GENERATED_ID_0": {
+ "version": "3.1.8",
+ "plugin": "Datagrid",
+ "plugin_config": {
+ "columns": {},
+ "edit_mode": "READ_ONLY",
+ "scroll_lock": false
+ },
+ "columns_config": {},
+ "title": "Sales Report 2",
+ "group_by": [
+ "Region",
+ "State"
+ ],
+ "split_by": [
+ "Category",
+ "Sub-Category"
+ ],
+ "columns": [
+ "Sales",
+ "Profit"
+ ],
+ "filter": [],
+ "sort": [],
+ "expressions": {},
+ "aggregates": {},
+ "table": "superstore",
+ "settings": false
+ },
+ "PERSPECTIVE_GENERATED_ID_1": {
+ "version": "3.1.8",
+ "plugin": "Datagrid",
+ "plugin_config": {
+ "columns": {},
+ "edit_mode": "READ_ONLY",
+ "scroll_lock": false
+ },
+ "columns_config": {},
+ "title": null,
+ "group_by": [],
+ "split_by": [],
+ "columns": [
+ "Row ID",
+ "Order ID",
+ "Ship Mode",
+ "Customer ID",
+ "Customer Name",
+ "Segment",
+ "Country",
+ "City",
+ "State",
+ "Postal Code",
+ "Region",
+ "Product ID",
+ "Category",
+ "Sub-Category",
+ "Product Name",
+ "Sales",
+ "Quantity",
+ "Discount",
+ "Profit",
+ "Order Date",
+ "Ship Date"
+ ],
+ "filter": [],
+ "sort": [],
+ "expressions": {},
+ "aggregates": {},
+ "table": "superstore",
+ "settings": false
+ },
+ "PERSPECTIVE_GENERATED_ID_3": {
+ "version": "3.1.8",
+ "plugin": "Datagrid",
+ "plugin_config": {
+ "columns": {},
+ "edit_mode": "READ_ONLY",
+ "scroll_lock": false
+ },
+ "columns_config": {},
+ "title": "Sales Report 2 (*)",
+ "group_by": [
+ "Region",
+ "State"
+ ],
+ "split_by": [
+ "Category",
+ "Sub-Category"
+ ],
+ "columns": [
+ "Sales",
+ "Profit"
+ ],
+ "filter": [],
+ "sort": [],
+ "expressions": {},
+ "aggregates": {},
+ "table": "superstore",
+ "settings": false
+ },
+ "PERSPECTIVE_GENERATED_ID_2": {
+ "version": "3.1.8",
+ "plugin": "Treemap",
+ "plugin_config": {},
+ "columns_config": {},
+ "title": "Sales Report (by State)",
+ "group_by": [
+ "State"
+ ],
+ "split_by": [],
+ "columns": [
+ "Sales",
+ "Profit",
+ null
+ ],
+ "filter": [],
+ "sort": [
+ [
+ "Profit",
+ "desc"
+ ]
+ ],
+ "expressions": {},
+ "aggregates": {},
+ "table": "superstore",
+ "settings": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/examples/esbuild-example/package.json b/examples/esbuild-example/package.json
index ad8f18e1de..a3163995fa 100644
--- a/examples/esbuild-example/package.json
+++ b/examples/esbuild-example/package.json
@@ -1,7 +1,7 @@
{
"name": "esbuild-example",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An esbuild example app built using `@finos/perspective-viewer`.",
"scripts": {
"build": "node build.js",
diff --git a/examples/esbuild-remote/package.json b/examples/esbuild-remote/package.json
index c36cea0f4a..7ecb2d86ce 100644
--- a/examples/esbuild-remote/package.json
+++ b/examples/esbuild-remote/package.json
@@ -1,7 +1,7 @@
{
"name": "esbuild-remote",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example of 2 Perspectives, one client and one server, streaming via Apache Arrow.",
"scripts": {
"start": "node build.js && node server/index.mjs"
diff --git a/examples/python-aiohttp/package.json b/examples/python-aiohttp/package.json
index 84c2056504..5a7a9519b3 100644
--- a/examples/python-aiohttp/package.json
+++ b/examples/python-aiohttp/package.json
@@ -1,7 +1,7 @@
{
"name": "python-aiohttp",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example of editing a `perspective-python` server from the browser.",
"scripts": {
"start": "PYTHONPATH=../../python/perspective python3 server.py"
diff --git a/examples/python-starlette/package.json b/examples/python-starlette/package.json
index daf4804274..9b6fa71fea 100644
--- a/examples/python-starlette/package.json
+++ b/examples/python-starlette/package.json
@@ -1,7 +1,7 @@
{
"name": "python-starlette",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example of editing a `perspective-python` server from the browser.",
"scripts": {
"start": "PYTHONPATH=../../python/perspective python3 server.py"
diff --git a/examples/python-starlette/server.py b/examples/python-starlette/server.py
index b1bc6f602b..f1d3baa0a0 100644
--- a/examples/python-starlette/server.py
+++ b/examples/python-starlette/server.py
@@ -18,7 +18,6 @@
import uvicorn
from fastapi import FastAPI, WebSocket
-from fastapi.middleware.cors import CORSMiddleware
from starlette.responses import FileResponse
from starlette.staticfiles import StaticFiles
@@ -64,21 +63,12 @@ async def websocket_handler(websocket: WebSocket):
)
await handler.run()
- # static_html_files = StaticFiles(directory="../python-tornado", html=True)
static_html_files = StaticFiles(directory="../python-tornado", html=True)
app = FastAPI()
app.add_api_websocket_route("/websocket", websocket_handler)
app.get("/node_modules/{rest_of_path:path}")(static_node_modules_handler)
app.mount("/", static_html_files)
-
- app.add_middleware(
- CORSMiddleware,
- allow_origins=["*"],
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
return app
diff --git a/examples/python-tornado-streaming/package.json b/examples/python-tornado-streaming/package.json
index d525a02e45..c443f6a5cf 100644
--- a/examples/python-tornado-streaming/package.json
+++ b/examples/python-tornado-streaming/package.json
@@ -1,7 +1,7 @@
{
"name": "python-tornado-streaming",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example of streaming a `perspective-python` server to the browser.",
"scripts": {
"start": "PYTHONPATH=../../python/perspective python3 server.py"
diff --git a/examples/python-tornado/package.json b/examples/python-tornado/package.json
index 97b1d38c8c..7776d79491 100644
--- a/examples/python-tornado/package.json
+++ b/examples/python-tornado/package.json
@@ -1,7 +1,7 @@
{
"name": "python-tornado",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example of editing a `perspective-python` server from the browser.",
"scripts": {
"start": "PYTHONPATH=../../python/perspective python3 server.py"
diff --git a/examples/react-example/package.json b/examples/react-example/package.json
index 066f3fdc79..5d74a74d66 100644
--- a/examples/react-example/package.json
+++ b/examples/react-example/package.json
@@ -1,7 +1,7 @@
{
"name": "react-example",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example app built using `@finos/perspective-viewer`.",
"scripts": {
"start": "webpack serve --open",
diff --git a/examples/rust-axum/Cargo.toml b/examples/rust-axum/Cargo.toml
index de91ddd56a..08fc9cf9ee 100644
--- a/examples/rust-axum/Cargo.toml
+++ b/examples/rust-axum/Cargo.toml
@@ -17,7 +17,7 @@ edition = "2021"
publish = false
[dependencies]
-perspective = { version = "3.1.6", path = "../../rust/perspective" }
+perspective = { version = "3.1.8", path = "../../rust/perspective" }
axum = { version = ">=0.7,<2", features = ["ws"] }
futures = "0.3"
tokio = { version = "1.0", features = ["full"] }
diff --git a/examples/rust-axum/package.json b/examples/rust-axum/package.json
index f9f112619d..ce5993294d 100644
--- a/examples/rust-axum/package.json
+++ b/examples/rust-axum/package.json
@@ -1,7 +1,7 @@
{
"name": "rust-axum",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example of a Rust/Axum virtual Perspective server",
"scripts": {
"start": "cargo run"
diff --git a/examples/webpack-example/package.json b/examples/webpack-example/package.json
index 958a12fb97..98eaf0e790 100644
--- a/examples/webpack-example/package.json
+++ b/examples/webpack-example/package.json
@@ -1,7 +1,7 @@
{
"name": "webpack-example",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example app built using `@finos/perspective-viewer`.",
"scripts": {
"webpack_build": "webpack",
diff --git a/examples/workspace/package.json b/examples/workspace/package.json
index 6d9e5e4409..01b0e5b2e5 100644
--- a/examples/workspace/package.json
+++ b/examples/workspace/package.json
@@ -1,7 +1,7 @@
{
"name": "workspace",
"private": true,
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "An example app built using `@finos/perspective-workspace`.",
"scripts": {
"start": "webpack serve --open",
diff --git a/package.json b/package.json
index c65e0a3853..7a1273a18b 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"type": "git",
"url": "https://github.com/finos/perspective"
},
- "version": "3.1.6",
+ "version": "3.1.8",
"changelog": {
"labels": {
"enhancement": "Added",
diff --git a/packages/perspective-cli/package.json b/packages/perspective-cli/package.json
index c6465aec1d..35d33a769f 100644
--- a/packages/perspective-cli/package.json
+++ b/packages/perspective-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-cli",
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "Perspective.js CLI",
"main": "src/js/index.js",
"publishConfig": {
diff --git a/packages/perspective-esbuild-plugin/package.json b/packages/perspective-esbuild-plugin/package.json
index 98195e25c1..070745cc34 100644
--- a/packages/perspective-esbuild-plugin/package.json
+++ b/packages/perspective-esbuild-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-esbuild-plugin",
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "esbuild plugin for Perspective",
"author": "",
"license": "Apache-2.0",
diff --git a/packages/perspective-jupyterlab/package.json b/packages/perspective-jupyterlab/package.json
index 20926f1684..f6e248fb65 100644
--- a/packages/perspective-jupyterlab/package.json
+++ b/packages/perspective-jupyterlab/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-jupyterlab",
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "A Jupyterlab extension for the Perspective library, designed to be used with perspective-python.",
"files": [
"dist/**/*",
diff --git a/packages/perspective-viewer-d3fc/package.json b/packages/perspective-viewer-d3fc/package.json
index 039b328153..f87ae850c0 100644
--- a/packages/perspective-viewer-d3fc/package.json
+++ b/packages/perspective-viewer-d3fc/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-viewer-d3fc",
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "Perspective.js D3FC Plugin",
"unpkg": "./dist/cdn/perspective-viewer-d3fc.js",
"jsdelivr": "./dist/cdn/perspective-viewer-d3fc.js",
diff --git a/packages/perspective-viewer-d3fc/src/ts/series/treemap/treemapSeries.ts b/packages/perspective-viewer-d3fc/src/ts/series/treemap/treemapSeries.ts
index 8715c0cb23..1358ac0513 100644
--- a/packages/perspective-viewer-d3fc/src/ts/series/treemap/treemapSeries.ts
+++ b/packages/perspective-viewer-d3fc/src/ts/series/treemap/treemapSeries.ts
@@ -70,10 +70,10 @@ export function treemapSeries() {
const rects = nodesMerge
.select("rect")
.attr("class", (d) => `treerect ${nodeLevelHelper(maxDepth, d)}`)
- .style("x", (d) => d.x0)
- .style("y", (d) => d.y0)
- .style("width", (d) => calcWidth(d))
- .style("height", (d) => calcHeight(d));
+ .style("x", (d) => `${d.x0}px`)
+ .style("y", (d) => `${d.y0}px`)
+ .style("width", (d) => `${calcWidth(d)}px`)
+ .style("height", (d) => `${calcHeight(d)}px`);
rects.style("fill", (d) => {
if (nodeLevelHelper(maxDepth, d) === nodeLevel.leaf) {
diff --git a/packages/perspective-viewer-datagrid/package.json b/packages/perspective-viewer-datagrid/package.json
index 9153b46a18..75f58723c5 100644
--- a/packages/perspective-viewer-datagrid/package.json
+++ b/packages/perspective-viewer-datagrid/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-viewer-datagrid",
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "Perspective datagrid plugin based on `regular-table`",
"unpkg": "dist/cdn/perspective-viewer-datagrid.js",
"jsdelivr": "dist/cdn/perspective-viewer-datagrid.js",
diff --git a/packages/perspective-viewer-datagrid/src/less/row-hover.less b/packages/perspective-viewer-datagrid/src/less/row-hover.less
index 616130f6a3..8d60e95475 100644
--- a/packages/perspective-viewer-datagrid/src/less/row-hover.less
+++ b/packages/perspective-viewer-datagrid/src/less/row-hover.less
@@ -20,15 +20,12 @@ regular-table {
tr:hover:after {
border-color: var(--rt-hover--border-color, #c5c9d080) !important;
background-color: transparent;
- box-shadow: 0px 1px 0px var(--rt-hover--border-color, #c5c9d080),
- 0px 3px 0px rgba(0, 0, 0, 0.05), 0px 5px 0px rgba(0, 0, 0, 0.01);
+ box-shadow: 0px 1px 0px var(--rt-hover--border-color, #c5c9d080);
&.psp-menu-open {
box-shadow: inset -2px 0px 0px var(--icon--color),
inset 2px 0px 0px var(--icon--color),
- 0px 1px 0px var(--rt-hover--border-color, #c5c9d080),
- 0px 3px 0px rgba(0, 0, 0, 0.05),
- 0px 5px 0px rgba(0, 0, 0, 0.01);
+ 0px 1px 0px var(--rt-hover--border-color, #c5c9d080);
}
}
@@ -37,8 +34,7 @@ regular-table {
box-shadow: inset -2px 0px 0px var(--icon--color),
inset 2px 0px 0px var(--icon--color),
inset 0px -2px 0px var(--icon--color),
- 0px 1px 0px var(--rt-hover--border-color, #c5c9d080),
- 0px 3px 0px rgba(0, 0, 0, 0.05), 0px 5px 0px rgba(0, 0, 0, 0.01);
+ 0px 1px 0px var(--rt-hover--border-color, #c5c9d080);
}
tr:hover
diff --git a/packages/perspective-viewer-openlayers/package.json b/packages/perspective-viewer-openlayers/package.json
index 8eaa78348e..25fcbf5dd0 100644
--- a/packages/perspective-viewer-openlayers/package.json
+++ b/packages/perspective-viewer-openlayers/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-viewer-openlayers",
- "version": "3.1.6",
+ "version": "3.1.8",
"unpkg": "dist/cdn/perspective-viewer-openlayers.js",
"jsdelivr": "dist/cdn/perspective-viewer-openlayers.js",
"exports": {
diff --git a/packages/perspective-webpack-plugin/package.json b/packages/perspective-webpack-plugin/package.json
index 9fa13b861b..d3fcd4e7c8 100644
--- a/packages/perspective-webpack-plugin/package.json
+++ b/packages/perspective-webpack-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-webpack-plugin",
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "Perspective.js Webpack Plugin",
"main": "index.js",
"publishConfig": {
diff --git a/packages/perspective-workspace/build.js b/packages/perspective-workspace/build.js
index ad7d4375a5..f39bce6223 100644
--- a/packages/perspective-workspace/build.js
+++ b/packages/perspective-workspace/build.js
@@ -143,6 +143,8 @@ async function build_all() {
pro_dark.compile().get("output.css")
);
+ await Promise.all(BUILD.map(build)).catch(() => process.exit(1));
+
try {
await $`npx tsc --project ./tsconfig.json`.stdio(
"inherit",
@@ -152,8 +154,6 @@ async function build_all() {
} catch (e) {
process.exit(1);
}
-
- await Promise.all(BUILD.map(build)).catch(() => process.exit(1));
}
build_all();
diff --git a/packages/perspective-workspace/package.json b/packages/perspective-workspace/package.json
index 0be97e9540..a5826e811d 100644
--- a/packages/perspective-workspace/package.json
+++ b/packages/perspective-workspace/package.json
@@ -1,6 +1,6 @@
{
"name": "@finos/perspective-workspace",
- "version": "3.1.6",
+ "version": "3.1.8",
"description": "Perspective Workspace",
"files": [
"dist/**/*",
diff --git a/packages/perspective-workspace/src/less/menu.less b/packages/perspective-workspace/src/less/menu.less
index f184081323..2f7d138079 100644
--- a/packages/perspective-workspace/src/less/menu.less
+++ b/packages/perspective-workspace/src/less/menu.less
@@ -12,11 +12,15 @@
@import "@lumino/widgets/style/menu.css";
+:host {
+ position: absolute;
+}
+
.lm-Menu {
font-size: 12px;
padding: 8px;
- background: white;
- color: #666;
+ background-color: var(--plugin--background);
+ color: var(--icon--color);
border: 1px solid var(--inactive--color);
border-radius: 3px;
max-width: 350px;
diff --git a/packages/perspective-workspace/src/less/viewer.less b/packages/perspective-workspace/src/less/viewer.less
index 7aa9897dac..ae4fdf8113 100644
--- a/packages/perspective-workspace/src/less/viewer.less
+++ b/packages/perspective-workspace/src/less/viewer.less
@@ -64,7 +64,7 @@
}
}
-perspective-viewer {
+::slotted(perspective-viewer) {
flex: 1;
position: relative;
display: block;
@@ -76,10 +76,11 @@ perspective-viewer {
overflow: visible !important;
}
-.lm-mod-override-cursor {
+:host-context(.lm-mod-override-cursor) {
cursor: grabbing !important;
}
-.lm-mod-override-cursor perspective-viewer > * {
- pointer-events: none;
+:host-context(.lm-mod-override-cursor) ::slotted(perspective-viewer),
+.context-menu ::slotted(perspective-viewer) {
+ --override-content-pointer-events: none;
}
diff --git a/packages/perspective-workspace/src/less/workspace.less b/packages/perspective-workspace/src/less/workspace.less
index 6cf4f4d217..7b8c283ce9 100644
--- a/packages/perspective-workspace/src/less/workspace.less
+++ b/packages/perspective-workspace/src/less/workspace.less
@@ -21,6 +21,8 @@
@import "@lumino/widgets/style/tabbar.css";
@import "@lumino/widgets/style/tabpanel.css";
+@import "./injected.less";
+
:host {
@import "./tabbar.less";
@import "./dockpanel.less";
@@ -28,8 +30,8 @@
background-color: hsl(210deg 18% 90%);
- width: 100%;
- height: 100%;
+ // width: 100%;
+ // height: 100%;
.workspace {
width: 100%;
diff --git a/packages/perspective-workspace/src/themes/pro-dark.less b/packages/perspective-workspace/src/themes/pro-dark.less
index ce2b459b64..6d9f372a63 100644
--- a/packages/perspective-workspace/src/themes/pro-dark.less
+++ b/packages/perspective-workspace/src/themes/pro-dark.less
@@ -22,9 +22,6 @@ perspective-indicator[theme="Pro Dark"] {
--theme-name: "Pro Dark";
}
-.lm-Menu {
- @include perspective-viewer-pro-dark--colors;
-}
perspective-workspace perspective-viewer {
--status-bar--height: 38px;
@@ -62,7 +59,7 @@ perspective-viewer[theme="Pro Dark"].workspace-master-widget {
--plugin--background: @grey800;
}
-.lm-Menu {
+perspective-workspace-menu {
font-family: "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo",
"Consolas", "Liberation Mono", monospace;
font-weight: 300;
diff --git a/packages/perspective-workspace/src/themes/pro.less b/packages/perspective-workspace/src/themes/pro.less
index 6c8296ac47..5fca260321 100644
--- a/packages/perspective-workspace/src/themes/pro.less
+++ b/packages/perspective-workspace/src/themes/pro.less
@@ -24,11 +24,6 @@ perspective-workspace {
background-color: #dadada;
}
-.lm-Menu {
- @include perspective-viewer-pro--colors;
- background-color: #ffffff;
-}
-
perspective-workspace perspective-viewer[settings] {
--modal-panel--margin: -4px 0 -4px 0;
--status-bar--border-radius: 6px 0 0 0;
@@ -84,7 +79,7 @@ perspective-viewer[theme="Pro Light"].workspace-master-widget {
--workspace-tabbar-tab--border-width: 1px 1px 0px 1px;
}
-.lm-Menu {
+perspective-workspace-menu {
font-family: "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo",
"Consolas", "Liberation Mono", monospace;
font-weight: 300;
diff --git a/packages/perspective-workspace/src/ts/perspective-workspace.ts b/packages/perspective-workspace/src/ts/perspective-workspace.ts
index 6753e69407..0254226b4b 100644
--- a/packages/perspective-workspace/src/ts/perspective-workspace.ts
+++ b/packages/perspective-workspace/src/ts/perspective-workspace.ts
@@ -27,7 +27,6 @@ import {
import { bindTemplate, CustomElementProto } from "./utils/custom_elements";
import style from "../../build/css/workspace.css";
import template from "../html/workspace.html";
-import injectedStyles from "../../build/css/injected.css";
/**
* A Custom Element for coordinating a set of `` light DOM
@@ -52,13 +51,10 @@ import injectedStyles from "../../build/css/injected.css";
* name="View One"
* table="superstore">
*
- *
*
*
- *
*
* ```
*
@@ -295,11 +291,6 @@ export class HTMLPerspectiveWorkspaceElement extends HTMLElement {
}
}
-const _injectStyle = document.createElement("style");
-_injectStyle.toggleAttribute("injected", true);
-_injectStyle.innerHTML = injectedStyles;
-document.head.appendChild(_injectStyle);
-
bindTemplate(
template,
style
diff --git a/packages/perspective-workspace/src/ts/utils/custom_elements.ts b/packages/perspective-workspace/src/ts/utils/custom_elements.ts
index 13b631daa3..a3264fb0c7 100644
--- a/packages/perspective-workspace/src/ts/utils/custom_elements.ts
+++ b/packages/perspective-workspace/src/ts/utils/custom_elements.ts
@@ -51,14 +51,9 @@ export function registerElement(
`` + template.innerHTML;
}
- template.innerHTML =
- `` + template.innerHTML;
-
const _perspective_element = class extends proto {
- _initialized: boolean;
- _initializing: boolean;
+ private _initialized: boolean;
+ private _initializing: boolean;
constructor() {
super();
diff --git a/packages/perspective-workspace/src/ts/workspace/commands.ts b/packages/perspective-workspace/src/ts/workspace/commands.ts
index 09cc6ea761..95192f349a 100644
--- a/packages/perspective-workspace/src/ts/workspace/commands.ts
+++ b/packages/perspective-workspace/src/ts/workspace/commands.ts
@@ -20,6 +20,7 @@ import type {
} from "@finos/perspective-viewer";
import type { PerspectiveWorkspace } from "./workspace";
+import { WorkspaceMenu } from "./menu";
export const createCommands = (
workspace: PerspectiveWorkspace,
@@ -43,7 +44,10 @@ export const createCommands = (
workspace.get_context_menu()?.init_overlay?.();
menu.addEventListener("blur", () => {
const context_menu = workspace.get_context_menu()!;
- const signal = context_menu.aboutToClose as Signal