From 8cbbe727232c4e777e9867fda2b293cd41b91b9c Mon Sep 17 00:00:00 2001
From: scc <66scc66@gmail.com>
Date: Tue, 18 Jul 2023 08:16:37 +0000
Subject: [PATCH] feat: add mapbox+deck.gl basic map
---
.gitmodules | 4 +
package.json | 52 +
packages/common/config.d.ts | 4 +
packages/common/package.json | 4 +
packages/common/src/index.mts | 5 +
.../src/content/docs/zh-cn/dev_log/202307.md | 13 +
packages/land_app/package.json | 22 +
packages/land_app/src/App.css | 10 +-
packages/land_app/src/chain/skchain.ts | 10 +
packages/land_app/src/main.tsx | 11 +-
.../mainWindow/components/Tabbar/index.scss | 16 +
.../mainWindow/components/Tabbar/index.tsx | 88 +
.../components/needPremission/index.scss | 16 +
.../components/needPremission/index.tsx | 10 +
.../land_app/src/pages/mainWindow/elements.ts | 2056 +++++++++++++++++
.../land_app/src/pages/mainWindow/index.tsx | 25 +-
packages/land_app/src/pages/mainWindow/map.ts | 183 ++
.../land_app/src/pages/mainWindow/preload.ts | 32 +
.../land_app/src/pages/mainWindow/timeline.ts | 50 -
.../src/pages/mainWindow/timelineComp.tsx | 39 -
packages/land_app/src/state/sk.ts | 5 -
.../land_app/src/utils/h3-hexagon-layer.ts | 192 ++
packages/land_app/src/utils/position.ts | 61 +
packages/land_app/src/vite-env.d.ts | 2 +
packages/land_app/vite.config.ts | 3 +
packages/skchain/src/lib/state/index.ts | 4 +
pnpm-lock.yaml | 868 ++++++-
27 files changed, 3670 insertions(+), 115 deletions(-)
create mode 100644 packages/common/config.d.ts
create mode 100644 packages/docs/src/content/docs/zh-cn/dev_log/202307.md
create mode 100644 packages/land_app/src/chain/skchain.ts
create mode 100644 packages/land_app/src/pages/mainWindow/components/Tabbar/index.scss
create mode 100644 packages/land_app/src/pages/mainWindow/components/Tabbar/index.tsx
create mode 100644 packages/land_app/src/pages/mainWindow/components/needPremission/index.scss
create mode 100644 packages/land_app/src/pages/mainWindow/components/needPremission/index.tsx
create mode 100644 packages/land_app/src/pages/mainWindow/elements.ts
create mode 100644 packages/land_app/src/pages/mainWindow/map.ts
create mode 100644 packages/land_app/src/pages/mainWindow/preload.ts
delete mode 100644 packages/land_app/src/pages/mainWindow/timeline.ts
delete mode 100644 packages/land_app/src/pages/mainWindow/timelineComp.tsx
delete mode 100644 packages/land_app/src/state/sk.ts
create mode 100644 packages/land_app/src/utils/h3-hexagon-layer.ts
create mode 100644 packages/land_app/src/utils/position.ts
diff --git a/.gitmodules b/.gitmodules
index 97d4ef1..fe0a56d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,7 @@
[submodule "packages/skboa"]
path = packages/skvm/skboa
url = git@github.com:chain-web/boa.git
+
+[submodule "configs"]
+ path = packages/private_configs
+ url = git@github.com:chain-web/private_configs.git
diff --git a/package.json b/package.json
index bd0d3a9..a705a32 100644
--- a/package.json
+++ b/package.json
@@ -61,6 +61,58 @@
"dependencies": {
"it-drain": "*"
}
+ },
+ "@deck.gl/mapbox": {
+ "dependencies": {
+ "@math.gl/web-mercator": "*"
+ }
+ },
+ "@loaders.gl/3d-tiles": {
+ "dependencies": {
+ "@math.gl/culling": "*",
+ "@babel/runtime": "*"
+ }
+ },
+ "@deck.gl/layers": {
+ "dependencies": {
+ "@luma.gl/core": "*"
+ }
+ },
+ "@deck.gl+geo/layers": {
+ "dependencies": {
+ "@deck.gl/mesh-layers": "*"
+ }
+ },
+ "@loaders.gl/gltf": {
+ "dependencies": {
+ "@babel/runtime": "*"
+ }
+ },
+ "@loaders.gl/schema": {
+ "dependencies": {
+ "@babel/runtime": "*"
+ }
+ },
+ "@loaders.gl/tiles": {
+ "dependencies": {
+ "@babel/runtime": "*"
+ }
+ },
+ "@loaders.gl/mvt": {
+ "dependencies": {
+ "@babel/runtime": "*"
+ }
+ },
+ "@deck.gl/mesh-layers": {
+ "dependencies": {
+ "@luma.gl/webgl": "*",
+ "@loaders.gl/schema": "*"
+ }
+ },
+ "@math.gl/polygon": {
+ "dependencies": {
+ "@babel/runtime": "*"
+ }
}
}
},
diff --git a/packages/common/config.d.ts b/packages/common/config.d.ts
new file mode 100644
index 0000000..789c020
--- /dev/null
+++ b/packages/common/config.d.ts
@@ -0,0 +1,4 @@
+type PrivateConfigs = {
+ mapboxToken: string;
+ mapboxStyle: string;
+};
diff --git a/packages/common/package.json b/packages/common/package.json
index 637d51e..f88de26 100644
--- a/packages/common/package.json
+++ b/packages/common/package.json
@@ -12,6 +12,10 @@
"engines": {
"node": ">=16.0.0"
},
+ "files": [
+ "dist",
+ "src"
+ ],
"type": "module",
"keywords": [],
"author": "",
diff --git a/packages/common/src/index.mts b/packages/common/src/index.mts
index 10bd697..40b678b 100644
--- a/packages/common/src/index.mts
+++ b/packages/common/src/index.mts
@@ -12,3 +12,8 @@ export type {
SerdeJsValueTypes,
SerdeJsObjectType,
} from './serde/serdeJs/interface.mjs';
+
+export type PrivateConfigs = {
+ mapboxToken: string;
+ mapboxStyle: string;
+};
diff --git a/packages/docs/src/content/docs/zh-cn/dev_log/202307.md b/packages/docs/src/content/docs/zh-cn/dev_log/202307.md
new file mode 100644
index 0000000..f993f57
--- /dev/null
+++ b/packages/docs/src/content/docs/zh-cn/dev_log/202307.md
@@ -0,0 +1,13 @@
+---
+title: 'Dev Log 2023-07'
+description: ''
+---
+
+### 7-10~7-14
+
+- [x] 创建了 land app 工程,用来做地图游戏开发
+- [x] 用私有的 repo: private_configs 来存储私有的配置文件,比如 mapbox token
+- [x] 加入 mapbox + deck.gl + h3-js 的格子地图
+ - [x] 调研、学习 deck.gl [怎么结合 mapbox 使用](https://deck.gl/docs/get-started/using-with-map)
+ - [x] 最开始想用 deck.gl 的 HexagonLayer 来实现大量格子渲染,但是发现这个 layer 不太灵活,最后选择了用 polygon Layer + h3-js 来实现(从 HexagonLayer 精简而来),最终只用来测试,还没实际用起来
+ - [x] 用 mapboxOverlay + deck.gl 来实现了地图上添加 deck.gl 的图层,最终选用了这个方案
diff --git a/packages/land_app/package.json b/packages/land_app/package.json
index a144bf5..7714dab 100644
--- a/packages/land_app/package.json
+++ b/packages/land_app/package.json
@@ -14,7 +14,24 @@
"node": ">=16.0.0"
},
"dependencies": {
+ "@deck.gl/core": "^8.9.21",
+ "@deck.gl/extensions": "^8.9.21",
+ "@deck.gl/geo-layers": "^8.9.21",
+ "@deck.gl/layers": "^8.9.21",
+ "@deck.gl/mapbox": "^8.9.21",
+ "@deck.gl/mesh-layers": "^8.9.21",
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
+ "@loaders.gl/core": "^3.4.7",
+ "@loaders.gl/gltf": "^3.4.7",
+ "@loaders.gl/images": "^3.4.7",
+ "@luma.gl/constants": "^8.5.20",
+ "@luma.gl/core": "^8.5.20",
+ "@luma.gl/engine": "^8.5.20",
+ "@luma.gl/gltools": "^8.5.20",
+ "@luma.gl/shadertools": "^8.5.20",
+ "@luma.gl/webgl": "^8.5.20",
+ "@math.gl/core": "^3.6.3",
+ "@math.gl/web-mercator": "^3.6.3",
"@trustack/common": "workspace:^1.0.0",
"@trustack/node-modules-polyfill": "^0.2.5",
"@trustack/rollup-plugin-node-polyfills": "^0.2.2",
@@ -22,8 +39,11 @@
"antd": "^5.6.4",
"buffer": "^6.0.3",
"esbuild": "^0.17.19",
+ "gl-matrix": "^3.4.3",
+ "h3-js": "^4.1.0",
"i18next": "^22.5.1",
"i18next-browser-languagedetector": "^7.1.0",
+ "mapbox-gl": "^2.15.0",
"mime-types": "^2.1.35",
"multiformats": "^11.0.2",
"react": "^18.2.0",
@@ -31,12 +51,14 @@
"react-i18next": "^12.3.1",
"react-router": "^6.14.1",
"react-router-dom": "^6.14.1",
+ "search-insights": "^2.7.0",
"skchain": "workspace:^1.0.0",
"xstate": "^4.38.0"
},
"devDependencies": {
"@playwright/test": "^1.35.1",
"@rollup/plugin-inject": "^5.0.3",
+ "@types/mapbox-gl": "^2.7.11",
"@types/react": "^18.2.14",
"@types/react-dom": "^18.2.6",
"@vitejs/plugin-react-swc": "^3.3.2",
diff --git a/packages/land_app/src/App.css b/packages/land_app/src/App.css
index 2c5e2ef..04945d2 100644
--- a/packages/land_app/src/App.css
+++ b/packages/land_app/src/App.css
@@ -1,8 +1,10 @@
#root {
- max-width: 1280px;
- margin: 0 auto;
- padding: 2rem;
- text-align: center;
+ width: 100%;
+ height: 100%;
+}
+
+.mapboxgl-ctrl-bottom-right {
+ display: none;
}
.logo {
diff --git a/packages/land_app/src/chain/skchain.ts b/packages/land_app/src/chain/skchain.ts
new file mode 100644
index 0000000..cd9e090
--- /dev/null
+++ b/packages/land_app/src/chain/skchain.ts
@@ -0,0 +1,10 @@
+import { SKChain } from 'skchain';
+
+const createChain = () => {
+ const chain = new SKChain();
+ return chain;
+};
+
+export const chain = createChain();
+
+export const chainState = chain.chainState;
diff --git a/packages/land_app/src/main.tsx b/packages/land_app/src/main.tsx
index 6530da5..3a244cf 100644
--- a/packages/land_app/src/main.tsx
+++ b/packages/land_app/src/main.tsx
@@ -1,6 +1,9 @@
import React from 'react';
+import { ConfigProvider, theme } from 'antd';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
+import 'mapbox-gl/dist/mapbox-gl.css';
+import 'antd/dist/reset.css';
import './polyfill';
import App from './App';
import './index.css';
@@ -14,7 +17,13 @@ import './index.css';
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
-
+
+
+
,
);
diff --git a/packages/land_app/src/pages/mainWindow/components/Tabbar/index.scss b/packages/land_app/src/pages/mainWindow/components/Tabbar/index.scss
new file mode 100644
index 0000000..151c3c7
--- /dev/null
+++ b/packages/land_app/src/pages/mainWindow/components/Tabbar/index.scss
@@ -0,0 +1,16 @@
+.tabbar-box {
+ .ant-tabs-nav {
+ margin-top: 0px;
+ padding: 10px 36px;
+ }
+ .tabbar-item-box {
+ height: calc(100vh - 80px);
+ position: relative;
+ overflow: hidden;
+ }
+}
+
+#map-container {
+ width: 100%;
+ height: 100%;
+}
diff --git a/packages/land_app/src/pages/mainWindow/components/Tabbar/index.tsx b/packages/land_app/src/pages/mainWindow/components/Tabbar/index.tsx
new file mode 100644
index 0000000..5eaa992
--- /dev/null
+++ b/packages/land_app/src/pages/mainWindow/components/Tabbar/index.tsx
@@ -0,0 +1,88 @@
+import { Button, Modal, Tabs } from 'antd';
+import { useActor } from '@xstate/react';
+import { useState } from 'react';
+// import GridDrawer from '../GridDrawer';
+import './index.scss';
+// import { Contract as CtrClass } from '../../contract/index';
+// import CtrCode from '../../contract/index.contract';
+// import { DeployContract } from '../../../test/components/contract/DeployContract';
+// import { TestContract } from '../../../test/components/contract/TestContract';
+// import { contractAddressKey } from '../../contract/mapContract';
+import { chainState } from '../../../../chain/skchain';
+
+const TabPane = Tabs.TabPane; // TODO use item config
+// const DeployContractComp = DeployContract(CtrClass, CtrCode);
+// const TestContractComp = TestContract(CtrClass, CtrCode);
+export default function Tabbar() {
+ const [showNodeModal, setshowNodeModal] = useState(true);
+ return (
+
+
+
+ {/* */}
+ {/* */}
+ {/* */}
+
+ {/* */}
+ {/* {
+ setshowNodeModal(false);
+ }}
+ style={{ top: 0 }}
+ maskClosable={false}
+ footer={null}
+ >
+ {
+ localStorage.setItem(contractAddressKey, trans.recipient.did);
+ }}
+ />
+
+ */}
+
+ {/*
+
+ */}
+
+ mine
+
+
+
+ );
+}
diff --git a/packages/land_app/src/pages/mainWindow/components/needPremission/index.scss b/packages/land_app/src/pages/mainWindow/components/needPremission/index.scss
new file mode 100644
index 0000000..9d3172f
--- /dev/null
+++ b/packages/land_app/src/pages/mainWindow/components/needPremission/index.scss
@@ -0,0 +1,16 @@
+.need-premission {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+
+ h2 {
+ text-align: center;
+ margin-top: 200px;
+ color: aquamarine;
+ font-size: 18px;
+ }
+}
diff --git a/packages/land_app/src/pages/mainWindow/components/needPremission/index.tsx b/packages/land_app/src/pages/mainWindow/components/needPremission/index.tsx
new file mode 100644
index 0000000..1018143
--- /dev/null
+++ b/packages/land_app/src/pages/mainWindow/components/needPremission/index.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import './index.scss';
+
+export default function NeedPremission() {
+ return (
+
+
等待定位权限授予中
+
+ );
+}
diff --git a/packages/land_app/src/pages/mainWindow/elements.ts b/packages/land_app/src/pages/mainWindow/elements.ts
new file mode 100644
index 0000000..dbe7ee2
--- /dev/null
+++ b/packages/land_app/src/pages/mainWindow/elements.ts
@@ -0,0 +1,2056 @@
+// some data from https://github.com/FlorianFe/Elements/tree/master/periodic-table/shared
+// color from http://jmol.sourceforge.net/jscolors/ use Jmol color
+export const elementsMeta = {
+ empty: {
+ symbol: 'Empty',
+ name: 'Empty',
+ group: 'Empty',
+ 'atomic-number': 0,
+ 'electron-configuration': [{ s: 0, p: 0, d: 0, f: 0 }],
+ electronegativity: 0,
+ 'atomic-weight': 0,
+ 'melting-point': 0,
+ 'boiling-point': 0,
+ color: 'transparent',
+ },
+ h: {
+ symbol: 'H',
+ name: 'Hydrogen',
+ group: 'other-nonmetal',
+ 'atomic-number': 1,
+ 'electron-configuration': [{ s: 1, p: 0, d: 0, f: 0 }],
+ electronegativity: 2.2,
+ 'atomic-weight': 1.0079,
+ 'melting-point': 13.99,
+ 'boiling-point': 20.271,
+ color: '#FFFFFF',
+ },
+ he: {
+ symbol: 'He',
+ name: 'Helium',
+ group: 'noble-gas',
+ 'atomic-number': 2,
+ 'electron-configuration': [{ s: 2, p: 0, d: 0, f: 0 }],
+ electronegativity: 'no data',
+ 'atomic-weight': 4.0026,
+ 'melting-point': 0.95,
+ 'boiling-point': 4.222,
+ color: '#D9FFFF',
+ },
+ li: {
+ symbol: 'Li',
+ name: 'Lithium',
+ group: 'alkali-metal',
+ 'atomic-number': 3,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 0.98,
+ 'atomic-weight': 6.94,
+ 'melting-point': 453.65,
+ 'boiling-point': 1603,
+ color: '#CC80FF',
+ },
+ be: {
+ symbol: 'Be',
+ name: 'Beryllium',
+ group: 'alkaline-earth-metal',
+ 'atomic-number': 4,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.57,
+ 'atomic-weight': 9.0121831,
+ 'melting-point': 1560,
+ 'boiling-point': 2742,
+ color: '#C2FF00',
+ },
+ b: {
+ symbol: 'B',
+ name: 'Boron',
+ group: 'metalloid',
+ 'atomic-number': 5,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 1, d: 0, f: 0 },
+ ],
+ electronegativity: 2.04,
+ 'atomic-weight': 10.81,
+ 'melting-point': 2349,
+ 'boiling-point': 4200,
+ color: '#FFB5B5',
+ },
+ c: {
+ symbol: 'C',
+ name: 'Carbon',
+ group: 'other-nonmetal',
+ 'atomic-number': 6,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 2, d: 0, f: 0 },
+ ],
+ electronegativity: 2.55,
+ 'atomic-weight': 12.011,
+ 'melting-point': '-',
+ 'boiling-point': '-',
+ color: '#909090',
+ },
+ n: {
+ symbol: 'N',
+ name: 'Nitrogen',
+ group: 'other-nonmetal',
+ 'atomic-number': 7,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 3, d: 0, f: 0 },
+ ],
+ electronegativity: 3.04,
+ 'atomic-weight': 14.007,
+ 'melting-point': 63.15,
+ 'boiling-point': 77.355,
+ color: '#3050F8',
+ },
+ o: {
+ symbol: 'O',
+ name: 'Oxygen',
+ group: 'other-nonmetal',
+ 'atomic-number': 8,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 4, d: 0, f: 0 },
+ ],
+ electronegativity: 3.44,
+ 'atomic-weight': 15.999,
+ 'melting-point': 54.36,
+ 'boiling-point': 90.188,
+ color: '#FF0D0D',
+ },
+ f: {
+ symbol: 'F',
+ name: 'Fluorine',
+ group: 'halogen',
+ 'atomic-number': 9,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 5, d: 0, f: 0 },
+ ],
+ electronegativity: 3.98,
+ 'atomic-weight': 18.998403163,
+ 'melting-point': 53.48,
+ 'boiling-point': 85.03,
+ color: '#90E050',
+ },
+ ne: {
+ symbol: 'Ne',
+ name: 'Neon',
+ group: 'noble-gas',
+ 'atomic-number': 10,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ ],
+ electronegativity: 'no data',
+ 'atomic-weight': 20.1797,
+ 'melting-point': 24.56,
+ 'boiling-point': 27.104,
+ color: '#B3E3F5',
+ },
+
+ na: {
+ symbol: 'Na',
+ name: 'Sodium',
+ group: 'alkali-metal',
+ 'atomic-number': 11,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 0.93,
+ 'atomic-weight': 22.98976928,
+ 'melting-point': 370.944,
+ 'boiling-point': 208.029,
+ color: '#AB5CF2',
+ },
+ mg: {
+ symbol: 'Mg',
+ name: 'Magnesium',
+ group: 'alkaline-earth-metal',
+ 'atomic-number': 12,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.31,
+ 'atomic-weight': 24.305,
+ 'melting-point': 923,
+ 'boiling-point': 1363,
+ color: '#8AFF00',
+ },
+ al: {
+ symbol: 'Al',
+ name: 'Aluminium',
+ group: 'post-transition-metal',
+ 'atomic-number': 13,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 1, d: 0, f: 0 },
+ ],
+ electronegativity: 1.61,
+ 'atomic-weight': 26.9815385,
+ 'melting-point': 933.47,
+ 'boiling-point': 2743,
+ color: '#BFA6A6',
+ },
+ si: {
+ symbol: 'Si',
+ name: 'Silicon',
+ group: 'metalloid',
+ 'atomic-number': 14,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 2, d: 0, f: 0 },
+ ],
+ electronegativity: 1.9,
+ 'atomic-weight': 28.085,
+ 'melting-point': 1687,
+ 'boiling-point': 3538,
+ color: '#F0C8A0',
+ },
+ p: {
+ symbol: 'P',
+ name: 'Phosphorus',
+ group: 'other-nonmetal',
+ 'atomic-number': 15,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 3, d: 0, f: 0 },
+ ],
+ electronegativity: 2.19,
+ 'atomic-weight': 30.973761998,
+ 'melting-point': '-',
+ 'boiling-point': '-',
+ color: '#FF8000',
+ },
+ s: {
+ symbol: 'S',
+ name: 'Sulfur',
+ group: 'other-nonmetal',
+ 'atomic-number': 16,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 4, d: 0, f: 0 },
+ ],
+ electronegativity: '2.58',
+ 'atomic-weight': 32.06,
+ 'melting-point': '388.36',
+ 'boiling-point': '717.8',
+ color: '#FFFF30',
+ },
+ cl: {
+ symbol: 'Cl',
+ name: 'Chlorine',
+ group: 'halogen',
+ 'atomic-number': 17,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 5, d: 0, f: 0 },
+ ],
+ electronegativity: 3.16,
+ 'atomic-weight': 35.45,
+ 'melting-point': 171.6,
+ 'boiling-point': 239.11,
+ color: '#1FF01F',
+ },
+ ar: {
+ symbol: 'Ar',
+ name: 'Argon',
+ group: 'noble-gas',
+ 'atomic-number': 18,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ ],
+ electronegativity: 'no data',
+ 'atomic-weight': 39.948,
+ 'melting-point': 83.81,
+ 'boiling-point': 87.302,
+ color: '#80D1E3',
+ },
+
+ k: {
+ symbol: 'K',
+ name: 'Potassium',
+ group: 'alkali-metal',
+ 'atomic-number': 19,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 0.82,
+ 'atomic-weight': 39.0983,
+ 'melting-point': 336.7,
+ 'boiling-point': 1032,
+ color: '#8F40D4',
+ },
+ ca: {
+ symbol: 'Ca',
+ name: 'Calcium',
+ group: 'alkaline-earth-metal',
+ 'atomic-number': 20,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.0,
+ 'atomic-weight': 40.078,
+ 'melting-point': 1115,
+ 'boiling-point': 1757,
+ color: '#3DFF00',
+ },
+ sc: {
+ symbol: 'Sc',
+ name: 'Scandium',
+ group: 'transition-metal',
+ 'atomic-number': 21,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.36,
+ 'atomic-weight': 44.955908,
+ 'melting-point': 1814,
+ 'boiling-point': 3109,
+ color: '#',
+ },
+ ti: {
+ symbol: 'Ti',
+ name: 'Titanium',
+ group: 'transition-metal',
+ 'atomic-number': 22,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 2, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.54,
+ 'atomic-weight': 47.867,
+ 'melting-point': 1941,
+ 'boiling-point': 3560,
+ color: '#',
+ },
+ v: {
+ symbol: 'V',
+ name: 'Vanadium',
+ group: 'transition-metal',
+ 'atomic-number': 23,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 3, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.63,
+ 'atomic-weight': 50.9415,
+ 'melting-point': 2183,
+ 'boiling-point': 3680,
+ color: '#',
+ },
+ cr: {
+ symbol: 'Cr',
+ name: 'Chromium',
+ group: 'transition-metal',
+ 'atomic-number': 24,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 5, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.66,
+ 'atomic-weight': 51.9961,
+ 'melting-point': 2180,
+ 'boiling-point': 2944,
+ color: '#',
+ },
+ mn: {
+ symbol: 'Mn',
+ name: 'Manganese',
+ group: 'transition-metal',
+ 'atomic-number': 25,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 5, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.55,
+ 'atomic-weight': 54.938044,
+ 'melting-point': 1519,
+ 'boiling-point': 2334,
+ color: '#',
+ },
+ fe: {
+ symbol: 'Fe',
+ name: 'Iron',
+ group: 'transition-metal',
+ 'atomic-number': 26,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 6, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.83,
+ 'atomic-weight': 55.845,
+ 'melting-point': 1811,
+ 'boiling-point': 3134,
+ color: '#',
+ },
+ co: {
+ symbol: 'Co',
+ name: 'Cobalt',
+ group: 'transition-metal',
+ 'atomic-number': 27,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 7, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.88,
+ 'atomic-weight': 58.933194,
+ 'melting-point': 1768,
+ 'boiling-point': 3200,
+ color: '#',
+ },
+ ni: {
+ symbol: 'Ni',
+ name: 'Nickel',
+ group: 'transition-metal',
+ 'atomic-number': 28,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 8, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.91,
+ 'atomic-weight': 58.6934,
+ 'melting-point': 1728,
+ 'boiling-point': 3003,
+ color: '#',
+ },
+ cu: {
+ symbol: 'Cu',
+ name: 'Copper',
+ group: 'transition-metal',
+ 'atomic-number': 29,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.9,
+ 'atomic-weight': 63.546,
+ 'melting-point': 1357.77,
+ 'boiling-point': 2835,
+ color: '#',
+ },
+ zn: {
+ symbol: 'Zn',
+ name: 'Zinc',
+ group: 'transition-metal',
+ 'atomic-number': 30,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.65,
+ 'atomic-weight': 65.38,
+ 'melting-point': 692.68,
+ 'boiling-point': 1180,
+ color: '#',
+ },
+ ga: {
+ symbol: 'Ga',
+ name: 'Gallium',
+ group: 'post-transition-metal',
+ 'atomic-number': 31,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 1, d: 0, f: 0 },
+ ],
+ electronegativity: 1.81,
+ 'atomic-weight': 69.723,
+ 'melting-point': 302.9146,
+ 'boiling-point': 2673,
+ color: '#',
+ },
+ ge: {
+ symbol: 'Ge',
+ name: 'Germanium',
+ group: 'metalloid',
+ 'atomic-number': 32,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 2, d: 0, f: 0 },
+ ],
+ electronegativity: 2.01,
+ 'atomic-weight': 72.63,
+ 'melting-point': 1211.4,
+ 'boiling-point': 3106,
+ color: '#',
+ },
+ as: {
+ symbol: 'As',
+ name: 'Arsenic',
+ group: 'metalloid',
+ 'atomic-number': 33,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 3, d: 0, f: 0 },
+ ],
+ electronegativity: 2.18,
+ 'atomic-weight': 74.921595,
+ 'melting-point': '-',
+ 'boiling-point': '-',
+ color: '#',
+ },
+ se: {
+ symbol: 'Se',
+ name: 'Selenium',
+ group: 'other-nonmetal',
+ 'atomic-number': 34,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 4, d: 0, f: 0 },
+ ],
+ electronegativity: 2.55,
+ 'atomic-weight': 78.971,
+ 'melting-point': 494,
+ 'boiling-point': 958,
+ color: '#',
+ },
+ br: {
+ symbol: 'Br',
+ name: 'Bromine',
+ group: 'halogen',
+ 'atomic-number': 35,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 5, d: 0, f: 0 },
+ ],
+ electronegativity: 2.96,
+ 'atomic-weight': 79.904,
+ 'melting-point': 265.8,
+ 'boiling-point': 332.0,
+ color: '#',
+ },
+ kr: {
+ symbol: 'Kr',
+ name: 'Krypton',
+ group: 'noble-gas',
+ 'atomic-number': 36,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ ],
+ electronegativity: 3.0,
+ 'atomic-weight': 83.798,
+ 'melting-point': 115.78,
+ 'boiling-point': 119.93,
+ color: '#',
+ },
+
+ rb: {
+ symbol: 'Rb',
+ name: 'Rubidium',
+ group: 'alkali-metal',
+ 'atomic-number': 37,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 0.82,
+ 'atomic-weight': 85.4678,
+ 'melting-point': 312.45,
+ 'boiling-point': 961,
+ color: '#',
+ },
+ sr: {
+ symbol: 'Sr',
+ name: 'Strontium',
+ group: 'alkaline-earth-metal',
+ 'atomic-number': 38,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 0.95,
+ 'atomic-weight': 87.62,
+ 'melting-point': 1050,
+ 'boiling-point': 1650,
+ color: '#',
+ },
+ y: {
+ symbol: 'Y',
+ name: 'Yttrium',
+ group: 'transition-metal',
+ 'atomic-number': 39,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.22,
+ 'atomic-weight': 88.90584,
+ 'melting-point': 1799,
+ 'boiling-point': 3203,
+ color: '#',
+ },
+ zr: {
+ symbol: 'Zr',
+ name: 'Zirconium',
+ group: 'transition-metal',
+ 'atomic-number': 40,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 2, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.33,
+ 'atomic-weight': 91.224,
+ 'melting-point': 2128,
+ 'boiling-point': 4650,
+ color: '#',
+ },
+ nb: {
+ symbol: 'Nb',
+ name: 'Niobium',
+ group: 'transition-metal',
+ 'atomic-number': 41,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 4, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.6,
+ 'atomic-weight': 92.90637,
+ 'melting-point': 2750,
+ 'boiling-point': 5017,
+ color: '#',
+ },
+ mo: {
+ symbol: 'Mo',
+ name: 'Molybdenum',
+ group: 'transition-metal',
+ 'atomic-number': 42,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 5, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.16,
+ 'atomic-weight': 95.95,
+ 'melting-point': 2896,
+ 'boiling-point': 4912,
+ color: '#',
+ },
+ tc: {
+ symbol: 'Tc',
+ name: 'Technetium',
+ group: 'transition-metal',
+ 'atomic-number': 43,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 5, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.9,
+ 'atomic-weight': '?',
+ 'melting-point': 2430,
+ 'boiling-point': 4538,
+ color: '#',
+ },
+ ru: {
+ symbol: 'Ru',
+ name: 'Ruthenium',
+ group: 'transition-metal',
+ 'atomic-number': 44,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 7, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.2,
+ 'atomic-weight': 101.07,
+ 'melting-point': 2607,
+ 'boiling-point': 4423,
+ color: '#',
+ },
+
+ rh: {
+ symbol: 'Rh',
+ name: 'Rhodium',
+ group: 'transition-metal',
+ 'atomic-number': 45,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 8, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.28,
+ 'atomic-weight': 102.9055,
+ 'melting-point': 2237,
+ 'boiling-point': 3968,
+ color: '#',
+ },
+ pd: {
+ symbol: 'Pd',
+ name: 'Palladium',
+ group: 'transition-metal',
+ 'atomic-number': 46,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 0, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.2,
+ 'atomic-weight': 106.42,
+ 'melting-point': 1828.05,
+ 'boiling-point': 3236,
+ color: '#',
+ },
+ ag: {
+ symbol: 'Ag',
+ name: 'Silver',
+ group: 'transition-metal',
+ 'atomic-number': 47,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.93,
+ 'atomic-weight': 107.8682,
+ 'melting-point': 1234.93,
+ 'boiling-point': 2435,
+ color: '#',
+ },
+ cd: {
+ symbol: 'Cd',
+ name: 'Cadmium',
+ group: 'transition-metal',
+ 'atomic-number': 48,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.69,
+ 'atomic-weight': 112.414,
+ 'melting-point': 594.22,
+ 'boiling-point': 1040,
+ color: '#',
+ },
+ in: {
+ symbol: 'In',
+ name: 'Indium',
+ group: 'post-transition-metal',
+ 'atomic-number': 49,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 1, d: 0, f: 0 },
+ ],
+ electronegativity: 1.78,
+ 'atomic-weight': 114.818,
+ 'melting-point': 429.7485,
+ 'boiling-point': 2345,
+ color: '#',
+ },
+ sn: {
+ symbol: 'Sn',
+ name: 'Tin',
+ group: 'post-transition-metal',
+ 'atomic-number': 50,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 2, d: 0, f: 0 },
+ ],
+ electronegativity: 1.96,
+ 'atomic-weight': 118.71,
+ 'melting-point': 505.08,
+ 'boiling-point': 2875,
+ color: '#',
+ },
+ sb: {
+ symbol: 'Sb',
+ name: 'Antimony',
+ group: 'metalloid',
+ 'atomic-number': 51,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 3, d: 0, f: 0 },
+ ],
+ electronegativity: 2.05,
+ 'atomic-weight': 121.76,
+ 'melting-point': 903.78,
+ 'boiling-point': 1908,
+ color: '#',
+ },
+ te: {
+ symbol: 'Te',
+ name: 'Tellurium',
+ group: 'metalloid',
+ 'atomic-number': 52,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 4, d: 0, f: 0 },
+ ],
+ electronegativity: 2.1,
+ 'atomic-weight': 127.6,
+ 'melting-point': 722.66,
+ 'boiling-point': 1261,
+ color: '#',
+ },
+ i: {
+ symbol: 'I',
+ name: 'Iodine',
+ group: 'halogen',
+ 'atomic-number': 53,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 5, d: 0, f: 0 },
+ ],
+ electronegativity: 2.66,
+ 'atomic-weight': 126.90447,
+ 'melting-point': 386.85,
+ 'boiling-point': 457.4,
+ color: '#',
+ },
+ xe: {
+ symbol: 'Xe',
+ name: 'Xenon',
+ group: 'noble-gas',
+ 'atomic-number': 54,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ ],
+ electronegativity: 2.6,
+ 'atomic-weight': 131.293,
+ 'melting-point': 161.4,
+ 'boiling-point': 165.051,
+ color: '#',
+ },
+
+ cs: {
+ symbol: 'Cs',
+ name: 'Caesium',
+ group: 'alkali-metal',
+ 'atomic-number': 55,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 0.79,
+ 'atomic-weight': 132.90545196,
+ 'melting-point': 301.7,
+ 'boiling-point': 944,
+ color: '#',
+ },
+ ba: {
+ symbol: 'Ba',
+ name: 'Barium',
+ group: 'alkaline-earth-metal',
+ 'atomic-number': 56,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: '?',
+ 'atomic-weight': 137.327,
+ 'melting-point': 1000,
+ 'boiling-point': 2118,
+ color: '#',
+ },
+ hf: {
+ symbol: 'Hf',
+ name: 'Hafnium',
+ group: 'transition-metal',
+ 'atomic-number': 72,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 2, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 178.49,
+ 'melting-point': 2506,
+ 'boiling-point': 4876,
+ color: '#',
+ },
+ ta: {
+ symbol: 'Ta',
+ name: 'Tantalium',
+ group: 'transition-metal',
+ 'atomic-number': 73,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 3, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.5,
+ 'atomic-weight': 180.94788,
+ 'melting-point': 3290,
+ 'boiling-point': 5731,
+ color: '#',
+ },
+ w: {
+ symbol: 'W',
+ name: 'Tungsten',
+ group: 'transition-metal',
+ 'atomic-number': 74,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 4, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.36,
+ 'atomic-weight': 183.84,
+ 'melting-point': 3695,
+ 'boiling-point': 6203,
+ color: '#',
+ },
+ re: {
+ symbol: 'Re',
+ name: 'Rhenium',
+ group: 'transition-metal',
+ 'atomic-number': 75,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 5, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.9,
+ 'atomic-weight': 186.207,
+ 'melting-point': 3459,
+ 'boiling-point': 5903,
+ color: '#',
+ },
+ os: {
+ symbol: 'Os',
+ name: 'Osmium',
+ group: 'transition-metal',
+ 'atomic-number': 76,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 6, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.2,
+ 'atomic-weight': 190.23,
+ 'melting-point': 3306,
+ 'boiling-point': 5285,
+ color: '#',
+ },
+ ir: {
+ symbol: 'Ir',
+ name: 'Iridium',
+ group: 'transition-metal',
+ 'atomic-number': 77,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 7, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.2,
+ 'atomic-weight': 192.217,
+ 'melting-point': 2719,
+ 'boiling-point': 4403,
+ color: '#',
+ },
+ pt: {
+ symbol: 'Pt',
+ name: 'Platinum',
+ group: 'transition-metal',
+ 'atomic-number': 78,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 9, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.28,
+ 'atomic-weight': 195.084,
+ 'melting-point': 2041.4,
+ 'boiling-point': 4098,
+ color: '#',
+ },
+ au: {
+ symbol: 'Au',
+ name: 'Gold',
+ group: 'transition-metal',
+ 'atomic-number': 79,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.54,
+ 'atomic-weight': 196.966569,
+ 'melting-point': 1337.33,
+ 'boiling-point': 3243,
+ color: '#',
+ },
+ hg: {
+ symbol: 'Hg',
+ name: 'Mercury',
+ group: 'transition-metal',
+ 'atomic-number': 80,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 2.0,
+ 'atomic-weight': 200.592,
+ 'melting-point': 234.321,
+ 'boiling-point': 629.88,
+ color: '#',
+ },
+ tl: {
+ symbol: 'Tl',
+ name: 'Thallium',
+ group: 'post-transition-metal',
+ 'atomic-number': 81,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 1, d: 0, f: 0 },
+ ],
+ electronegativity: 1.62,
+ 'atomic-weight': 204.38,
+ 'melting-point': 577,
+ 'boiling-point': 1746,
+ color: '#',
+ },
+ pb: {
+ symbol: 'Pb',
+ name: 'Lead',
+ group: 'post-transition-metal',
+ 'atomic-number': 82,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 2, d: 0, f: 0 },
+ ],
+ electronegativity: 1.87,
+ 'atomic-weight': 207.2,
+ 'melting-point': 600.61,
+ 'boiling-point': 2022,
+ color: '#',
+ },
+ bi: {
+ symbol: 'Bi',
+ name: 'Bismuth',
+ group: 'post-transition-metal',
+ 'atomic-number': 83,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 3, d: 0, f: 0 },
+ ],
+ electronegativity: 2.02,
+ 'atomic-weight': 208.9804,
+ 'melting-point': 544.7,
+ 'boiling-point': 1837,
+ color: '#',
+ },
+ po: {
+ symbol: 'Po',
+ name: 'Polonium',
+ group: 'metalloid',
+ 'atomic-number': 84,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 4, d: 0, f: 0 },
+ ],
+ electronegativity: 2.0,
+ 'atomic-weight': 209,
+ 'melting-point': 527,
+ 'boiling-point': 1235,
+ color: '#',
+ },
+ at: {
+ symbol: 'At',
+ name: 'Astatine',
+ group: 'halogen',
+ 'atomic-number': 85,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 5, d: 0, f: 0 },
+ ],
+ electronegativity: 2.2,
+ 'atomic-weight': 210,
+ 'melting-point': 575,
+ 'boiling-point': 610,
+ color: '#',
+ },
+ rn: {
+ symbol: 'Rn',
+ name: 'Radon',
+ group: 'noble-gas',
+ 'atomic-number': 86,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ ],
+ electronegativity: 2.2,
+ 'atomic-weight': 222,
+ 'melting-point': 202,
+ 'boiling-point': 211.5,
+ color: '#',
+ },
+
+ fr: {
+ symbol: 'Fr',
+ name: 'Francium',
+ group: 'alkali-metal',
+ 'atomic-number': 87,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 1, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: '> 0.79',
+ 'atomic-weight': 223,
+ 'melting-point': '300 (?)',
+ 'boiling-point': '950 (?)',
+ color: '#',
+ },
+ ra: {
+ symbol: 'Ra',
+ name: 'Radium',
+ group: 'alkaline-earth-metal',
+ 'atomic-number': 88,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 0.9,
+ 'atomic-weight': 226,
+ 'melting-point': 973,
+ 'boiling-point': 2010,
+ color: '#',
+ },
+ rf: {
+ symbol: 'Rf',
+ name: 'Rutherfordium',
+ group: 'transition-metal',
+ 'atomic-number': 104,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ db: {
+ symbol: 'Db',
+ name: 'Dubnium',
+ group: 'transition-metal',
+ 'atomic-number': 105,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ sg: {
+ symbol: 'Sg',
+ name: 'Seaborgium',
+ group: 'transition-metal',
+ 'atomic-number': 106,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ bh: {
+ symbol: 'Bh',
+ name: 'Bohrium',
+ group: 'transition-metal',
+ 'atomic-number': 107,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ hs: {
+ symbol: 'Hs',
+ name: 'Hassium',
+ group: 'transition-metal',
+ 'atomic-number': 108,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ mt: {
+ symbol: 'Mt',
+ name: 'Meitnerium',
+ group: 'transition-metal',
+ 'atomic-number': 109,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ ds: {
+ symbol: 'Ds',
+ name: 'Darmstadtium',
+ group: 'transition-metal',
+ 'atomic-number': 110,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ rg: {
+ symbol: 'Rg',
+ name: 'Roentgenium',
+ group: 'transition-metal',
+ 'atomic-number': 111,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ cn: {
+ symbol: 'Cn',
+ name: 'Copernium',
+ group: 'transition-metal',
+ 'atomic-number': 112,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ nh: {
+ symbol: 'Nh',
+ name: 'Nihonium',
+ group: 'post-transition-metal',
+ 'atomic-number': 113,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ fl: {
+ symbol: 'Fl',
+ name: 'Flerovium',
+ group: 'post-transition-metal',
+ 'atomic-number': 114,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ mc: {
+ symbol: 'Mc',
+ name: 'Moscovium',
+ group: 'post-transition-metal',
+ 'atomic-number': 115,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ lv: {
+ symbol: 'Lv',
+ name: 'Livermorium',
+ group: 'post-transition-metal',
+ 'atomic-number': 116,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ ts: {
+ symbol: 'Ts',
+ name: 'Tennessine',
+ group: 'halogen',
+ 'atomic-number': 117,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+ og: {
+ symbol: 'Og',
+ name: 'Oganesson',
+ group: 'noble-gas',
+ 'atomic-number': 118,
+ 'electron-configuration': '2',
+ electronegativity: '?',
+ 'atomic-weight': 4.0026,
+ 'melting-point': '?',
+ 'boiling-point': '?',
+ color: '#',
+ },
+
+ la: {
+ symbol: 'La',
+ name: 'Lanthanum',
+ group: 'lanthanide',
+ 'atomic-number': 57,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.1,
+ 'atomic-weight': 138.90547,
+ 'melting-point': 1193,
+ 'boiling-point': 3737,
+ color: '#',
+ },
+ ce: {
+ symbol: 'Ce',
+ name: 'Cerium',
+ group: 'lanthanide',
+ 'atomic-number': 58,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 1 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.12,
+ 'atomic-weight': 140.116,
+ 'melting-point': 1068,
+ 'boiling-point': 3716,
+ color: '#',
+ },
+ pr: {
+ symbol: 'Pr',
+ name: 'Praseodymium',
+ group: 'lanthanide',
+ 'atomic-number': 59,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 3 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.13,
+ 'atomic-weight': 140.90766,
+ 'melting-point': 1208,
+ 'boiling-point': 3403,
+ color: '#',
+ },
+ nd: {
+ symbol: 'Nd',
+ name: 'Neodymium',
+ group: 'lanthanide',
+ 'atomic-number': 60,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 4 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.14,
+ 'atomic-weight': 144.242,
+ 'melting-point': 1297,
+ 'boiling-point': 3347,
+ color: '#',
+ },
+ pm: {
+ symbol: 'Pm',
+ name: 'Promethium',
+ group: 'lanthanide',
+ 'atomic-number': 61,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 5 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: '1.13 (?)',
+ 'atomic-weight': 145,
+ 'melting-point': 1315,
+ 'boiling-point': 3273,
+ color: '#',
+ },
+ sm: {
+ symbol: 'Sm',
+ name: 'Samarium',
+ group: 'lanthanide',
+ 'atomic-number': 62,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 6 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.17,
+ 'atomic-weight': 150.36,
+ 'melting-point': 1345,
+ 'boiling-point': 2173,
+ color: '#',
+ },
+ eu: {
+ symbol: 'Eu',
+ name: 'Europium',
+ group: 'lanthanide',
+ 'atomic-number': 63,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 7 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.2,
+ 'atomic-weight': 151.964,
+ 'melting-point': 1099,
+ 'boiling-point': 1802,
+ color: '#',
+ },
+ gd: {
+ symbol: 'Gd',
+ name: 'Gadolinium',
+ group: 'lanthanide',
+ 'atomic-number': 64,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 7 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.2,
+ 'atomic-weight': 157.25,
+ 'melting-point': 1585,
+ 'boiling-point': 3273,
+ color: '#',
+ },
+ tb: {
+ symbol: 'Tb',
+ name: 'Terbium',
+ group: 'lanthanide',
+ 'atomic-number': 65,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 9 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: '1.2 (?)',
+ 'atomic-weight': 158.92535,
+ 'melting-point': 1629,
+ 'boiling-point': 3396,
+ color: '#',
+ },
+ dy: {
+ symbol: 'Dy',
+ name: 'Dysprosium',
+ group: 'lanthanide',
+ 'atomic-number': 66,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 10 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.22,
+ 'atomic-weight': 162.5,
+ 'melting-point': 1680,
+ 'boiling-point': 2840,
+ color: '#',
+ },
+ ho: {
+ symbol: 'Ho',
+ name: 'Holmium',
+ group: 'lanthanide',
+ 'atomic-number': 67,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 11 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.23,
+ 'atomic-weight': 164.93033,
+ 'melting-point': 1734,
+ 'boiling-point': 2873,
+ color: '#',
+ },
+ er: {
+ symbol: 'Er',
+ name: 'Erbium',
+ group: 'lanthanide',
+ 'atomic-number': 68,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 12 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.24,
+ 'atomic-weight': 167.259,
+ 'melting-point': 1802,
+ 'boiling-point': 3141,
+ color: '#',
+ },
+ tm: {
+ symbol: 'Tm',
+ name: 'Thulium',
+ group: 'lanthanide',
+ 'atomic-number': 69,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 13 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.25,
+ 'atomic-weight': 168.93422,
+ 'melting-point': 1818,
+ 'boiling-point': 2223,
+ color: '#',
+ },
+ yb: {
+ symbol: 'Yb',
+ name: 'Ytterbium',
+ group: 'lanthanide',
+ 'atomic-number': 70,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: '1.1 (?)',
+ 'atomic-weight': 173.045,
+ 'melting-point': 1097,
+ 'boiling-point': 1469,
+ color: '#',
+ },
+ lu: {
+ symbol: 'Lu',
+ name: 'Lutetium',
+ group: 'lanthanide',
+ 'atomic-number': 71,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.27,
+ 'atomic-weight': 174.9668,
+ 'melting-point': 1925,
+ 'boiling-point': 3675,
+ color: '#',
+ },
+
+ ac: {
+ symbol: 'Ac',
+ name: 'Actinium',
+ group: 'actinide',
+ 'atomic-number': 89,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.1,
+ 'atomic-weight': 227,
+ 'melting-point': 1500,
+ 'boiling-point': 3500,
+ color: '#',
+ },
+ th: {
+ symbol: 'Th',
+ name: 'Thorium',
+ group: 'actinide',
+ 'atomic-number': 90,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 2, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 232.0377,
+ 'melting-point': 2023,
+ 'boiling-point': 5061,
+ color: '#',
+ },
+ pa: {
+ symbol: 'Pa',
+ name: 'Protactinium',
+ group: 'actinide',
+ 'atomic-number': 91,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 2 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.5,
+ 'atomic-weight': 231.03588,
+ 'melting-point': 1841,
+ 'boiling-point': 4300,
+ color: '#',
+ },
+ u: {
+ symbol: 'U',
+ name: 'Uranium',
+ group: 'actinide',
+ 'atomic-number': 92,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 3 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.38,
+ 'atomic-weight': 238.02891,
+ 'melting-point': 1405.3,
+ 'boiling-point': 4404,
+ color: '#',
+ },
+ np: {
+ symbol: 'Np',
+ name: 'Neptunium',
+ group: 'actinide',
+ 'atomic-number': 93,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 4 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.36,
+ 'atomic-weight': 237,
+ 'melting-point': 912,
+ 'boiling-point': 4447,
+ color: '#',
+ },
+ pu: {
+ symbol: 'Pu',
+ name: 'Plutonium',
+ group: 'actinide',
+ 'atomic-number': 94,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 6 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.28,
+ 'atomic-weight': 244,
+ 'melting-point': 912.5,
+ 'boiling-point': 3505,
+ color: '#',
+ },
+ am: {
+ symbol: 'Am',
+ name: 'Americum',
+ group: 'actinide',
+ 'atomic-number': 95,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 7 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 243,
+ 'melting-point': 1449,
+ 'boiling-point': 2880,
+ color: '#',
+ },
+ cm: {
+ symbol: 'Cm',
+ name: 'Curium',
+ group: 'actinide',
+ 'atomic-number': 96,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 7 },
+ { s: 2, p: 6, d: 1, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: '1.3',
+ 'atomic-weight': 247,
+ 'melting-point': '1613',
+ 'boiling-point': '3383',
+ color: '#',
+ },
+ bk: {
+ symbol: 'Bk',
+ name: 'Berkelium',
+ group: 'actinide',
+ 'atomic-number': 97,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 9 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 247,
+ 'melting-point': 1259,
+ 'boiling-point': 2900,
+ color: '#',
+ },
+ cf: {
+ symbol: 'Cf',
+ name: 'Californium',
+ group: 'actinide',
+ 'atomic-number': 98,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 10 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 251,
+ 'melting-point': 1173,
+ 'boiling-point': 1743,
+ color: '#',
+ },
+ es: {
+ symbol: 'Es',
+ name: 'Einsteinium',
+ group: 'actinide',
+ 'atomic-number': 99,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 11 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 252,
+ 'melting-point': 1133,
+ 'boiling-point': 1269,
+ color: '#',
+ },
+ fm: {
+ symbol: 'Fm',
+ name: 'Fermium',
+ group: 'actinide',
+ 'atomic-number': 100,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 12 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 257,
+ 'melting-point': 1800,
+ 'boiling-point': '-',
+ color: '#',
+ },
+ md: {
+ symbol: 'Md',
+ name: 'Mendelevium',
+ group: 'actinide',
+ 'atomic-number': 101,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 13 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 258,
+ 'melting-point': 1100,
+ 'boiling-point': '-',
+ color: '#',
+ },
+ no: {
+ symbol: 'No',
+ name: 'Nobelium',
+ group: 'actinide',
+ 'atomic-number': 102,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 0, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 259,
+ 'melting-point': 1100,
+ 'boiling-point': '-',
+ color: '#',
+ },
+ lr: {
+ symbol: 'Lr',
+ name: 'Lawrencium',
+ group: 'actinide',
+ 'atomic-number': 103,
+ 'electron-configuration': [
+ { s: 2, p: 0, d: 0, f: 0 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 6, d: 10, f: 0 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 10, f: 14 },
+ { s: 2, p: 6, d: 0, f: 0 },
+ { s: 2, p: 1, d: 0, f: 0 },
+ ],
+ electronegativity: 1.3,
+ 'atomic-weight': 266,
+ 'melting-point': 1900,
+ 'boiling-point': '-',
+ color: '#',
+ },
+};
+
+export type ElementTypes = keyof typeof elementsMeta;
diff --git a/packages/land_app/src/pages/mainWindow/index.tsx b/packages/land_app/src/pages/mainWindow/index.tsx
index 2786a32..6d36054 100644
--- a/packages/land_app/src/pages/mainWindow/index.tsx
+++ b/packages/land_app/src/pages/mainWindow/index.tsx
@@ -1,21 +1,16 @@
-import { Button } from 'antd';
-import { useState } from 'react';
-import { useTranslation } from 'react-i18next';
-import ChangeI18n from '../../config/i18n/i18nSelect';
-import { lanKeys } from './index.i18n';
-import { Timeline } from './timelineComp';
+import { useEffect } from 'react';
+// import ChangeI18n from '../../config/i18n/i18nSelect';
+import Tabbar from './components/Tabbar';
+import { mapAction } from './map';
export function MainWindow() {
- const [t] = useTranslation();
- const [passed, setPass] = useState(false);
- const [skvmPassed, setSkvmPass] = useState(false);
+ useEffect(() => {
+ console.log('MainWindow init');
+ mapAction.init();
+ }, []);
return (
-
-
-
-
+
+
);
}
diff --git a/packages/land_app/src/pages/mainWindow/map.ts b/packages/land_app/src/pages/mainWindow/map.ts
new file mode 100644
index 0000000..fc44ba7
--- /dev/null
+++ b/packages/land_app/src/pages/mainWindow/map.ts
@@ -0,0 +1,183 @@
+import { cellToBoundary, gridDisk, latLngToCell } from 'h3-js';
+import mapboxgl, { LngLat, Map as MapBox } from 'mapbox-gl';
+import { MapboxOverlay } from '@deck.gl/mapbox/typed';
+import type { LayersList } from '@deck.gl/core/typed';
+import { GeoJsonLayer } from '@deck.gl/layers/typed';
+import { PositionControl } from '../../utils/position';
+import { preLoadMapSource } from './preload';
+
+mapboxgl.accessToken = __privateConfigs__.mapboxToken;
+
+export class MapAction {
+ map!: MapBox; // init by init function
+ deckMap!: MapboxOverlay; // init by init function
+ center!: LngLat; // init by init function
+ positionControl!: PositionControl; // init by init function
+
+ inited = false;
+
+ cells: string[] = []; // 当前可视区域内的格子
+ deckLayers: LayersList = [];
+
+ getinggGridList = false;
+ getinggGridData = false;
+
+ init = async (): Promise
=> {
+ if (this.map) {
+ return;
+ }
+ this.positionControl = new PositionControl((lng, lat) => {
+ this.center = new LngLat(lng, lat);
+ });
+ await this.positionControl.init();
+ const map = new MapBox({
+ container: 'map-container',
+ style: __privateConfigs__.mapboxStyle,
+ antialias: true,
+ center: this.center,
+ zoom: 18,
+ });
+ this.map = map;
+ await Promise.all([this.mapLoad(), preLoadMapSource(this.map)]);
+ const deck = new MapboxOverlay({ id: 'deckgl' });
+ this.map.addControl(deck);
+ this.inited = true;
+ this.center = this.map.getCenter();
+ // this.getinggGridList = true;
+ // await this.getCellsByLngLat(this.center.lng, this.center.lat);
+ // this.getinggGridList = false;
+ this.bindClickEvent();
+ // this.map.on('dragend', () => {
+ // if (this.getinggGridList) {
+ // return;
+ // }
+ // this.getCurrentGrids();
+ // });
+ };
+
+ private mapLoad = async () => {
+ return new Promise((reslove) => {
+ this.map.on('load', () => {
+ reslove(true);
+ });
+ });
+ };
+
+ private bindClickEvent = async () => {
+ this.map.on('click', async (e) => {
+ const lngLat = e.lngLat;
+ const hex = latLngToCell(lngLat.lat, lngLat.lng, 13);
+
+ const geo = cellToBoundary(hex, true);
+ const layer = new GeoJsonLayer({
+ id: `geojson-layer-${hex}`,
+ data: {
+ type: 'FeatureCollection',
+ features: [
+ {
+ type: 'Feature',
+ properties: {},
+ geometry: {
+ type: 'Polygon',
+ coordinates: [geo].map((ele) => {
+ return [...ele];
+ }),
+ },
+ },
+ ],
+ },
+ });
+ this.deckLayers.push(layer);
+ this.deckMap.setProps({ layers: this.deckLayers });
+ // mapStateService.send(MapEventType.UPDATE_GRID, {
+ // data: { showGridDetail: true, activeHex: hex },
+ // });
+ });
+ };
+
+ private getCellsByLngLat = async (lng: number, lat: number) => {
+ // const bounds = this.map.getBounds();
+ // const polygon = [
+ // [bounds.getNorthWest().lng, bounds.getNorthWest().lat],
+ // [bounds.getNorthEast().lng, bounds.getNorthEast().lat],
+ // [bounds.getSouthEast().lng, bounds.getSouthEast().lat],
+ // [bounds.getSouthWest().lng, bounds.getSouthWest().lat],
+ // ];
+ // console.log(polygon);
+ const centerCell = latLngToCell(lat, lng, 13);
+ const cells = gridDisk(centerCell, 90);
+ this.cells = cells;
+ // await this.getGridData();
+ // this.addDefaultHexLayer(); // test
+ };
+
+ // getGridData = async () => {
+ // if (this.getinggGridData) {
+ // setTimeout(() => {
+ // this.getGridData();
+ // }, 500);
+ // }
+ // this.getinggGridData = true;
+ // for (let i = 0; i < this.grids.length; i++) {
+ // const grid = this.grids[i];
+ // const gridData = await getGridData(grid.hexid);
+ // if (gridData?.owner) {
+ // let color = '';
+ // if (gridData.data.type === GridType.factoryL0) {
+ // color = elementsMeta[gridData.data.element].color;
+ // }
+ // this.addGridLayer(grid, {
+ // outline: gridTypeColor[gridData.data.type],
+ // color,
+ // });
+ // }
+ // // console.log(img, gridData);
+ // }
+ // this.getinggGridData = false;
+ // };
+
+ // addGridLayer = (grid: HexItem, opt: { outline?: string; color?: string }) => {
+ // const id = grid.hexid.replace(this.featureIdReg, '');
+ // const layerId = `${id}-fills`;
+ // if (!this.map.getSource(id)) {
+ // this.map.addSource(id, {
+ // type: 'geojson',
+ // data: {
+ // type: 'FeatureCollection',
+ // features: [
+ // {
+ // type: 'Feature',
+ // id: `${id}-grid`,
+ // properties: { center: grid.center, id: grid.hexid },
+ // geometry: {
+ // type: 'Polygon',
+ // coordinates: [grid.polygon],
+ // },
+ // },
+ // ],
+ // },
+ // });
+ // }
+
+ // if (this.map.getLayer(layerId)) {
+ // this.map.removeLayer(layerId);
+ // }
+ // const paint: FillPaint = {};
+ // if (opt.color) {
+ // paint['fill-color'] = opt.color;
+ // }
+ // if (opt.outline) {
+ // paint['fill-outline-color'] = opt.outline;
+ // }
+
+ // this.map.addLayer({
+ // id: layerId,
+ // type: 'fill',
+ // source: id,
+ // layout: {},
+ // paint,
+ // });
+ // };
+}
+
+export const mapAction = new MapAction();
diff --git a/packages/land_app/src/pages/mainWindow/preload.ts b/packages/land_app/src/pages/mainWindow/preload.ts
new file mode 100644
index 0000000..60ea360
--- /dev/null
+++ b/packages/land_app/src/pages/mainWindow/preload.ts
@@ -0,0 +1,32 @@
+import type { Map } from 'mapbox-gl';
+// import { GridType } from './contract/interface';
+
+export const gridTypeColor = {
+ // [GridType.empty]: '#565656',
+ // [GridType.factoryL0]: '#f1f1f1',
+};
+
+export const preLoadMapSource = async (map: Map): Promise => {
+ const imgMap: { [key: string]: { url: string } } = {
+ blackGrid: {
+ url: 'https://wudao.aminer.cn/api/cogview/get-image/f9090f5c4679e5f0/1653632448178/6.jpg',
+ },
+ clay: {
+ url: 'https://wudao.aminer.cn/api/cogview/get-image/f9090f5c4679e5f0/1653632448178/1.jpg',
+ },
+ };
+ await Promise.all(
+ Object.keys(imgMap).map((key) => {
+ return new Promise((reslove, reject) => {
+ const item = imgMap[key];
+ map.loadImage(item.url, (e, res) => {
+ if (e) {
+ console.error('load img', item.url, 'err:', e);
+ }
+ map.addImage(key, res as ImageBitmap);
+ reslove(true);
+ });
+ });
+ }),
+ );
+};
diff --git a/packages/land_app/src/pages/mainWindow/timeline.ts b/packages/land_app/src/pages/mainWindow/timeline.ts
deleted file mode 100644
index 824c1e5..0000000
--- a/packages/land_app/src/pages/mainWindow/timeline.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { Button } from 'antd';
-import { useState } from 'react';
-// import { Chart } from '@antv/g2';
-
-const labelFormatter = (d: number) => d;
-// const left = (d) => d.end > -1500 && d.start > -3000;
-
-// chart.coordinate({ transform: [{ type: 'transpose' }] });
-
-// .transform({ type: 'sortX', by: 'y' })
-// .transform({ type: 'sortColor', by: 'y', reducer: 'min' })
-// .axis('y', [
-// {
-// tickCount: 5,
-// labelFormatter,
-// grid: null,
-// title: null,
-// labelTextAlign: 'start',
-// },
-// {
-// position: 'top',
-// labelFormatter,
-// title: null,
-// labelTextAlign: 'start',
-// },
-// ])
-// .axis('x', false)
-// .encode('x', 'civilization')
-// .encode('y', ['start', 'end'])
-// .encode('color', 'region')
-// .scale('color', { palette: 'set2' });
-// .label({
-// text: 'civilization',
-// position: (d) => (left(d) ? 'left' : 'right'),
-// style: {
-// textAlign: (d) => (left(d) ? 'end' : 'start'),
-// dx: (d) => (left(d) ? -5 : 5),
-// fontSize: 10,
-// },
-// });
-
-export const renderPl = (data: any[]): void => {
- // const chart = new Chart({
- // container: 'container',
- // width: 900,
- // height: 1000,
- // });
- // chart.interval().data = data;
- // chart.render();
-};
diff --git a/packages/land_app/src/pages/mainWindow/timelineComp.tsx b/packages/land_app/src/pages/mainWindow/timelineComp.tsx
deleted file mode 100644
index ead8cfa..0000000
--- a/packages/land_app/src/pages/mainWindow/timelineComp.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import { Button, Input } from 'antd';
-import React, { useState } from 'react';
-import { renderPl } from './timeline';
-
-export function Timeline() {
- const [pl, setPl] = useState('{}');
- return (
-
-
- {
- setPl(e.tatget.value);
- }}
- />
-
-
-
- {/*
-
- {skvmPassed.toString()}
-
*/}
-
- );
-}
diff --git a/packages/land_app/src/state/sk.ts b/packages/land_app/src/state/sk.ts
deleted file mode 100644
index f96423e..0000000
--- a/packages/land_app/src/state/sk.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import type { SKChain } from 'skchain';
-
-export const chain = {} as unknown as SKChain;
-
-export const chainState = chain.chainState;
diff --git a/packages/land_app/src/utils/h3-hexagon-layer.ts b/packages/land_app/src/utils/h3-hexagon-layer.ts
new file mode 100644
index 0000000..73dfa29
--- /dev/null
+++ b/packages/land_app/src/utils/h3-hexagon-layer.ts
@@ -0,0 +1,192 @@
+import type { H3Index } from 'h3-js';
+import { cellToBoundary, cellToLatLng } from 'h3-js';
+import { lerp } from '@math.gl/core';
+import type {
+ DefaultProps,
+ Layer,
+ LayersList,
+ UpdateParameters,
+} from '@deck.gl/core/typed';
+import { CompositeLayer } from '@deck.gl/core/typed';
+import type { PolygonLayerProps } from '@deck.gl/layers/typed';
+import { PolygonLayer } from '@deck.gl/layers/typed';
+
+// normalize longitudes w.r.t center (refLng), when not provided first vertex
+export function normalizeLongitudes(
+ vertices: number[][],
+ refLng?: number,
+): void {
+ refLng = refLng === undefined ? vertices[0][0] : refLng;
+ for (const pt of vertices) {
+ const deltaLng = pt[0] - refLng;
+ if (deltaLng > 180) {
+ pt[0] -= 360;
+ } else if (deltaLng < -180) {
+ pt[0] += 360;
+ }
+ }
+}
+
+// scale polygon vertices w.r.t center (hexId)
+export function scalePolygon(
+ hexId: H3Index,
+ vertices: number[][],
+ factor: number,
+): void {
+ const [lat, lng] = cellToLatLng(hexId);
+ const actualCount = vertices.length;
+
+ // normalize with respect to center
+ normalizeLongitudes(vertices, lng);
+
+ // `cellToBoundary` returns same array object for first and last vertex (closed polygon),
+ // if so skip scaling the last vertex
+ const vertexCount =
+ vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
+ for (let i = 0; i < vertexCount; i++) {
+ vertices[i][0] = lerp(lng, vertices[i][0], factor);
+ vertices[i][1] = lerp(lat, vertices[i][1], factor);
+ }
+}
+
+function h3ToPolygon(hexId: H3Index, coverage: number = 1): number[][] {
+ const vertices = cellToBoundary(hexId, true);
+
+ if (coverage !== 1) {
+ // scale and normalize vertices w.r.t to center
+ scalePolygon(hexId, vertices, coverage);
+ } else {
+ // normalize w.r.t to start vertex
+ normalizeLongitudes(vertices);
+ }
+
+ return vertices;
+}
+
+function flattenPolygon(vertices: number[][]): Float64Array {
+ const positions = new Float64Array(vertices.length * 2);
+ let i = 0;
+ for (const pt of vertices) {
+ positions[i++] = pt[0];
+ positions[i++] = pt[1];
+ }
+ return positions;
+}
+
+const defaultProps: DefaultProps = {
+ ...PolygonLayer.defaultProps,
+};
+
+/** All properties supported by H3HexagonLayer */
+export type H3HexagonLayerProps = PolygonLayerProps & {
+ type: any;
+};
+
+/**
+ * Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.
+ */
+export class H3HexLayer<
+ DataT = any,
+ ExtraPropsT extends {} = {},
+> extends CompositeLayer>> {
+ static defaultProps = defaultProps;
+ static layerName = 'H3HexagonLayer';
+
+ initializeState(): void {
+ this.state = {
+ edgeLengthKM: 0,
+ resolution: -1,
+ };
+ }
+
+ shouldUpdateState({ changeFlags }: UpdateParameters): boolean {
+ return changeFlags.propsOrDataChanged;
+ }
+
+ updateState({ props, changeFlags }: UpdateParameters): void {
+ // this.setState(dataProps);
+ }
+
+ renderLayers(): Layer | null | LayersList {
+ return this._renderPolygonLayer();
+ }
+
+ private _getForwardProps() {
+ const {
+ elevationScale,
+ material,
+ extruded,
+ wireframe,
+ stroked,
+ filled,
+ lineWidthUnits,
+ lineWidthScale,
+ lineWidthMinPixels,
+ lineWidthMaxPixels,
+ getFillColor,
+ getElevation,
+ getLineColor,
+ getLineWidth,
+ transitions,
+ updateTriggers,
+ } = this.props;
+
+ return {
+ elevationScale,
+ extruded,
+ wireframe,
+ stroked,
+ filled,
+ lineWidthUnits,
+ lineWidthScale,
+ lineWidthMinPixels,
+ lineWidthMaxPixels,
+ material,
+ getElevation,
+ getFillColor,
+ getLineColor,
+ getLineWidth,
+ transitions,
+ updateTriggers: {
+ getFillColor: updateTriggers.getFillColor,
+ getElevation: updateTriggers.getElevation,
+ getLineColor: updateTriggers.getLineColor,
+ getLineWidth: updateTriggers.getLineWidth,
+ } as {
+ getFillColor: any;
+ getElevation: any;
+ getLineColor: any;
+ getLineWidth: any;
+ getPolygon?: any;
+ getPosition?: any;
+ },
+ };
+ }
+
+ private _renderPolygonLayer(): PolygonLayer {
+ const { data } = this.props;
+
+ const SubLayerClass = this.getSubLayerClass(
+ 'hexagon-cell-hifi',
+ PolygonLayer,
+ );
+ const forwardProps = this._getForwardProps();
+
+ return new SubLayerClass(
+ forwardProps,
+ this.getSubLayerProps({
+ id: 'hexagon-cell-hifi',
+ updateTriggers: forwardProps.updateTriggers,
+ }),
+ {
+ data,
+ _normalize: false,
+ _windingOrder: 'CCW',
+ positionFormat: 'XY',
+ getPolygon: (hex: string) => {
+ return flattenPolygon(h3ToPolygon(hex, 0.8));
+ },
+ },
+ );
+ }
+}
diff --git a/packages/land_app/src/utils/position.ts b/packages/land_app/src/utils/position.ts
new file mode 100644
index 0000000..3c9eafa
--- /dev/null
+++ b/packages/land_app/src/utils/position.ts
@@ -0,0 +1,61 @@
+type OnPositionChange = (long: number, lat: number) => void;
+
+export class PositionControl {
+ constructor(cb: OnPositionChange) {
+ this.cb = cb;
+ }
+ cb: OnPositionChange;
+ currentPosition!: [number, number];
+ watchId!: number;
+
+ listenPostion = (): Promise => {
+ // 监听位置变化,地图跟随
+ return new Promise((resolve, reject) => {
+ this.watchId = navigator.geolocation.watchPosition(
+ (res) => {
+ this.handlePosition(res);
+ resolve();
+ },
+ (err) => {
+ console.log(err);
+ reject(err);
+ },
+ { enableHighAccuracy: true },
+ );
+ });
+ };
+
+ initPostion = (): Promise => {
+ // 初始化获取位置,地图跟随
+ return new Promise((resolve, reject) => {
+ navigator.geolocation.getCurrentPosition(
+ (res) => {
+ this.handlePosition(res);
+ resolve();
+ },
+ (err) => {
+ console.log(err);
+ reject(err);
+ },
+ { enableHighAccuracy: true },
+ );
+ });
+ };
+
+ handlePosition = (res: GeolocationPosition): void => {
+ const crd = res.coords;
+ // console.log(crd);
+ this.currentPosition = [crd.longitude, crd.latitude];
+ this.cb(crd.longitude, crd.latitude);
+ };
+
+ clearWatch = (): void => {
+ navigator.geolocation.clearWatch(this.watchId);
+ };
+
+ init = async (): Promise<[number, number]> => {
+ await this.initPostion();
+ // console.log(this.currentPosition);
+ return this.currentPosition;
+ };
+}
diff --git a/packages/land_app/src/vite-env.d.ts b/packages/land_app/src/vite-env.d.ts
index 11f02fe..f5a9d92 100644
--- a/packages/land_app/src/vite-env.d.ts
+++ b/packages/land_app/src/vite-env.d.ts
@@ -1 +1,3 @@
///
+///
+declare const __privateConfigs__: PrivateConfigs;
diff --git a/packages/land_app/vite.config.ts b/packages/land_app/vite.config.ts
index b62a63d..2b8f568 100644
--- a/packages/land_app/vite.config.ts
+++ b/packages/land_app/vite.config.ts
@@ -1,3 +1,5 @@
+/* eslint-disable import/no-nodejs-modules */
+import { readFileSync } from 'fs';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react-swc';
// yarn add --dev @esbuild-plugins/node-globals-polyfill
@@ -45,6 +47,7 @@ export default defineConfig({
},
define: {
global: 'globalThis',
+ __privateConfigs__: readFileSync('../private_configs/config.json', 'utf-8'),
},
build: {
target: 'es2020',
diff --git a/packages/skchain/src/lib/state/index.ts b/packages/skchain/src/lib/state/index.ts
index e18f33d..464c30a 100644
--- a/packages/skchain/src/lib/state/index.ts
+++ b/packages/skchain/src/lib/state/index.ts
@@ -141,6 +141,10 @@ class ChainState {
getInitOption() {
return this.getSnapshot().context.initOptions;
}
+
+ get started() {
+ return this.getSnapshot().matches('active');
+ }
}
export const chainState = new ChainState();
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 57afb7a..c925a39 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,6 +1,6 @@
lockfileVersion: 5.4
-packageExtensionsChecksum: e62b705719bf0c4181bb65250e74dc85
+packageExtensionsChecksum: f3811b5ff652d9b178b60184ab768bcc
importers:
@@ -135,12 +135,30 @@ importers:
packages/land_app:
specifiers:
+ '@deck.gl/core': ^8.9.21
+ '@deck.gl/extensions': ^8.9.21
+ '@deck.gl/geo-layers': ^8.9.21
+ '@deck.gl/layers': ^8.9.21
+ '@deck.gl/mapbox': ^8.9.21
+ '@deck.gl/mesh-layers': ^8.9.21
'@esbuild-plugins/node-globals-polyfill': ^0.2.3
+ '@loaders.gl/core': ^3.4.7
+ '@loaders.gl/gltf': ^3.4.7
+ '@loaders.gl/images': ^3.4.7
+ '@luma.gl/constants': ^8.5.20
+ '@luma.gl/core': ^8.5.20
+ '@luma.gl/engine': ^8.5.20
+ '@luma.gl/gltools': ^8.5.20
+ '@luma.gl/shadertools': ^8.5.20
+ '@luma.gl/webgl': ^8.5.20
+ '@math.gl/core': ^3.6.3
+ '@math.gl/web-mercator': ^3.6.3
'@playwright/test': ^1.35.1
'@rollup/plugin-inject': ^5.0.3
'@trustack/common': workspace:^1.0.0
'@trustack/node-modules-polyfill': ^0.2.5
'@trustack/rollup-plugin-node-polyfills': ^0.2.2
+ '@types/mapbox-gl': ^2.7.11
'@types/react': ^18.2.14
'@types/react-dom': ^18.2.6
'@vitejs/plugin-react-swc': ^3.3.2
@@ -148,8 +166,11 @@ importers:
antd: ^5.6.4
buffer: ^6.0.3
esbuild: ^0.17.19
+ gl-matrix: ^3.4.3
+ h3-js: ^4.1.0
i18next: ^22.5.1
i18next-browser-languagedetector: ^7.1.0
+ mapbox-gl: ^2.15.0
mime-types: ^2.1.35
multiformats: ^11.0.2
react: ^18.2.0
@@ -158,12 +179,30 @@ importers:
react-router: ^6.14.1
react-router-dom: ^6.14.1
sass: ^1.63.6
+ search-insights: ^2.7.0
skchain: workspace:^1.0.0
typescript: ^5.1.6
vite: ^4.4.2
xstate: ^4.38.0
dependencies:
+ '@deck.gl/core': 8.9.21
+ '@deck.gl/extensions': 8.9.21_loepxxoqm6cwfq274s7pkoqjuu
+ '@deck.gl/geo-layers': 8.9.21_nzsujjoedg65iibh62lyj67rtm
+ '@deck.gl/layers': 8.9.21_nuz4uglonky7ssbx3kyjali2l4
+ '@deck.gl/mapbox': 8.9.21_@deck.gl+core@8.9.21
+ '@deck.gl/mesh-layers': 8.9.21_x75qo55hffj5wup5gixotpelje
'@esbuild-plugins/node-globals-polyfill': 0.2.3_esbuild@0.17.19
+ '@loaders.gl/core': 3.4.7
+ '@loaders.gl/gltf': 3.4.7
+ '@loaders.gl/images': 3.4.7
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/core': 8.5.20
+ '@luma.gl/engine': 8.5.20
+ '@luma.gl/gltools': 8.5.20
+ '@luma.gl/shadertools': 8.5.20
+ '@luma.gl/webgl': 8.5.20
+ '@math.gl/core': 3.6.3
+ '@math.gl/web-mercator': 3.6.3
'@trustack/common': link:../common
'@trustack/node-modules-polyfill': 0.2.5_esbuild@0.17.19
'@trustack/rollup-plugin-node-polyfills': 0.2.2
@@ -171,8 +210,11 @@ importers:
antd: 5.6.4_biqbaboplfbrettd7655fr4n2y
buffer: 6.0.3
esbuild: 0.17.19
+ gl-matrix: 3.4.3
+ h3-js: 4.1.0
i18next: 22.5.1
i18next-browser-languagedetector: 7.1.0
+ mapbox-gl: 2.15.0
mime-types: 2.1.35
multiformats: 11.0.2
react: 18.2.0
@@ -180,11 +222,13 @@ importers:
react-i18next: 12.3.1_spyi3zqm3bqfobczid2f6jym6y
react-router: 6.14.1_react@18.2.0
react-router-dom: 6.14.1_biqbaboplfbrettd7655fr4n2y
+ search-insights: 2.7.0
skchain: link:../skchain
xstate: 4.38.0
devDependencies:
'@playwright/test': 1.35.1
'@rollup/plugin-inject': 5.0.3
+ '@types/mapbox-gl': 2.7.11
'@types/react': 18.2.14
'@types/react-dom': 18.2.6
'@vitejs/plugin-react-swc': 3.3.2_vite@4.4.2
@@ -1172,6 +1216,141 @@ packages:
engines: {node: '>=10'}
dev: false
+ /@deck.gl/core/8.9.21:
+ resolution: {integrity: sha512-kyPOEkl90T5agiNhIPCool03/4MMQXKoNqSurdXtJS7+xU9FVf7/biTrLxVxWCfF8kqRgxX6sJ4m2PKUwRjV0A==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/core': 3.4.7
+ '@loaders.gl/images': 3.4.7
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/core': 8.5.20
+ '@luma.gl/webgl': 8.5.20
+ '@math.gl/core': 3.6.3
+ '@math.gl/sun': 3.6.3
+ '@math.gl/web-mercator': 3.6.3
+ '@probe.gl/env': 3.6.0
+ '@probe.gl/log': 3.6.0
+ '@probe.gl/stats': 3.6.0
+ gl-matrix: 3.4.3
+ math.gl: 3.6.3
+ mjolnir.js: 2.7.1
+ dev: false
+
+ /@deck.gl/extensions/8.9.21_loepxxoqm6cwfq274s7pkoqjuu:
+ resolution: {integrity: sha512-GIVeRG8K7uJfiKktfsFlgMv5kwKWPEgFkYsxxr/NY6UnqNRgAn9B+aH6YgJ4Hu22xwjUTOtzrX6BrSnsQI3kOg==}
+ peerDependencies:
+ '@deck.gl/core': ^8.0.0
+ '@luma.gl/constants': ^8.0.0
+ '@luma.gl/core': ^8.0.0
+ '@math.gl/core': ^3.6.2
+ '@math.gl/web-mercator': ^3.6.2
+ gl-matrix: ^3.0.0
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@deck.gl/core': 8.9.21
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/core': 8.5.20
+ '@luma.gl/shadertools': 8.5.20
+ '@math.gl/core': 3.6.3
+ '@math.gl/web-mercator': 3.6.3
+ gl-matrix: 3.4.3
+ dev: false
+
+ /@deck.gl/geo-layers/8.9.21_nzsujjoedg65iibh62lyj67rtm:
+ resolution: {integrity: sha512-JS01acqO6weF9MUAdT/GVGABMHbkWKB/ZRinJ0HBqOyiZNpJ9k8SpwCiBP8jDwYfQ9Ziz8SGFNU/DmtNI9Vgxg==}
+ peerDependencies:
+ '@deck.gl/core': ^8.0.0
+ '@deck.gl/extensions': ^8.0.0
+ '@deck.gl/layers': ^8.0.0
+ '@deck.gl/mesh-layers': ^8.0.0
+ '@loaders.gl/core': ^3.4.2
+ '@luma.gl/core': ^8.0.0
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@deck.gl/core': 8.9.21
+ '@deck.gl/extensions': 8.9.21_loepxxoqm6cwfq274s7pkoqjuu
+ '@deck.gl/layers': 8.9.21_nuz4uglonky7ssbx3kyjali2l4
+ '@deck.gl/mesh-layers': 8.9.21_x75qo55hffj5wup5gixotpelje
+ '@loaders.gl/3d-tiles': 3.4.6_@loaders.gl+core@3.4.7
+ '@loaders.gl/core': 3.4.7
+ '@loaders.gl/gis': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/mvt': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ '@loaders.gl/terrain': 3.4.6
+ '@loaders.gl/tiles': 3.4.6_@loaders.gl+core@3.4.7
+ '@loaders.gl/wms': 3.4.6
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/core': 8.5.20
+ '@luma.gl/experimental': 8.5.20_7mnddonr42takpwjuhfa7cwj3i
+ '@math.gl/core': 3.6.3
+ '@math.gl/culling': 3.6.3
+ '@math.gl/web-mercator': 3.6.3
+ '@types/geojson': 7946.0.10
+ h3-js: 3.7.2
+ long: 3.2.0
+ transitivePeerDependencies:
+ - '@loaders.gl/gltf'
+ - '@loaders.gl/images'
+ - '@luma.gl/engine'
+ - '@luma.gl/gltools'
+ - '@luma.gl/shadertools'
+ - '@luma.gl/webgl'
+ dev: false
+
+ /@deck.gl/layers/8.9.21_nuz4uglonky7ssbx3kyjali2l4:
+ resolution: {integrity: sha512-tNxbBhFcc81mBaSK+zNxvhlmZmQNuYmUJMWymWMq5vz5MLTE6hHNjLY5n181ZSYspHDA/7tsjXXZ5c/+MGru2g==}
+ peerDependencies:
+ '@deck.gl/core': ^8.0.0
+ '@loaders.gl/core': ^3.4.2
+ '@luma.gl/core': ^8.0.0
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@deck.gl/core': 8.9.21
+ '@loaders.gl/core': 3.4.7
+ '@loaders.gl/images': 3.4.7
+ '@loaders.gl/schema': 3.4.6
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/core': 8.5.20
+ '@mapbox/tiny-sdf': 2.0.6
+ '@math.gl/core': 3.6.3
+ '@math.gl/polygon': 3.6.3
+ '@math.gl/web-mercator': 3.6.3
+ earcut: 2.2.4
+ dev: false
+
+ /@deck.gl/mapbox/8.9.21_@deck.gl+core@8.9.21:
+ resolution: {integrity: sha512-QhyhS5Te+SDirgw5RF599zcAMM5HmNRJzyOu1plDx17UufYnRUXHq+ystT8KLzQqo8HnHDuNMOK1ZGwr4lblWg==}
+ peerDependencies:
+ '@deck.gl/core': ^8.0.0
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@deck.gl/core': 8.9.21
+ '@math.gl/web-mercator': 3.6.3
+ '@types/mapbox-gl': 2.7.11
+ dev: false
+
+ /@deck.gl/mesh-layers/8.9.21_x75qo55hffj5wup5gixotpelje:
+ resolution: {integrity: sha512-alTRtuZADvz18txumJeE/cTJQ6I1DqYDHGGFHA/FlKA3kYcy91Te4evHSok/+k8xlNyzf26cjgs9EoHAbUDpuQ==}
+ peerDependencies:
+ '@deck.gl/core': ^8.0.0
+ '@luma.gl/core': ^8.0.0
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@deck.gl/core': 8.9.21
+ '@loaders.gl/gltf': 3.4.7
+ '@loaders.gl/schema': 3.4.7
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/core': 8.5.20
+ '@luma.gl/experimental': 8.5.20_7mnddonr42takpwjuhfa7cwj3i
+ '@luma.gl/shadertools': 8.5.20
+ '@luma.gl/webgl': 8.5.20
+ transitivePeerDependencies:
+ - '@loaders.gl/images'
+ - '@luma.gl/engine'
+ - '@luma.gl/gltools'
+ dev: false
+
/@docsearch/css/3.5.1:
resolution: {integrity: sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==}
dev: false
@@ -2626,6 +2805,397 @@ packages:
- utf-8-validate
dev: false
+ /@loaders.gl/3d-tiles/3.4.6_@loaders.gl+core@3.4.7:
+ resolution: {integrity: sha512-oM+wOg/HeYl8249Eq3fLT6L2ZU1wFXdXcyUsenaUubxuCKbWk/mwFyqHq3NINcy7K56TUlEXwxpaiRiIhZa9WA==}
+ peerDependencies:
+ '@loaders.gl/core': ^3.4.0
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/core': 3.4.7
+ '@loaders.gl/draco': 3.4.6
+ '@loaders.gl/gltf': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/math': 3.4.6
+ '@loaders.gl/tiles': 3.4.6_@loaders.gl+core@3.4.7
+ '@math.gl/core': 3.6.3
+ '@math.gl/culling': 3.6.3
+ '@math.gl/geospatial': 3.6.3
+ long: 5.2.3
+ dev: false
+
+ /@loaders.gl/core/3.4.7:
+ resolution: {integrity: sha512-iKyOKtUTYsgmIaXFmkaV1bc4h36TiHoKzc4xrolU4eSw9BQzR3UATEx/356sUI8g90uQe1SosAcKAUgAvFqgGg==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/loader-utils': 3.4.7
+ '@loaders.gl/worker-utils': 3.4.7
+ '@probe.gl/log': 4.0.4
+ dev: false
+
+ /@loaders.gl/draco/3.4.6:
+ resolution: {integrity: sha512-FoxmvM0ojT1B5yntyQ/mzrWN55XyOOqPiie99Bs8yLj9+eNAfQoviMfrED1uS6gYVJEHNBmH9wibNaa1LjMTmw==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ '@loaders.gl/worker-utils': 3.4.6
+ draco3d: 1.5.5
+ dev: false
+
+ /@loaders.gl/draco/3.4.7:
+ resolution: {integrity: sha512-FWwOWV/aSlbWM1HsGau1zxXyJT02yODfvBgZIf3Saro40oVws9LrmqLrCw7pnIm0jNfSzfw0pW/ogf0KOAq0mQ==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/loader-utils': 3.4.7
+ '@loaders.gl/schema': 3.4.7
+ '@loaders.gl/worker-utils': 3.4.7
+ draco3d: 1.5.5
+ dev: false
+
+ /@loaders.gl/gis/3.4.6:
+ resolution: {integrity: sha512-DKG1oBjz7KYe/VInST3Hsnzo+E3cAv9cOvS6EA34YRMSb1T4xOmdvTpoN6x5/WZU7VBTK376F7TidMNskKOMoA==}
+ dependencies:
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ '@mapbox/vector-tile': 1.3.1
+ '@math.gl/polygon': 3.6.3
+ pbf: 3.2.1
+ dev: false
+
+ /@loaders.gl/gltf/3.4.6:
+ resolution: {integrity: sha512-BB2Hkz8dTr6IbgccGb6y9QYdXyqbi5L8qIlEldA3P7f36y9EN1JVTBUxyF8hHqPt3YKgJ0RKX9F2YLRrhWT1gw==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/draco': 3.4.6
+ '@loaders.gl/images': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/textures': 3.4.6
+ '@math.gl/core': 3.6.3
+ dev: false
+
+ /@loaders.gl/gltf/3.4.7:
+ resolution: {integrity: sha512-ZJoM0JhShN8YtriYQL1F0fYU5NU2oY6ZlFbXkkoJBWgfdKHrb/Hv2Jac1S+omNTGrbuv1FbaBTJBCBhjPtQ+Vw==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/draco': 3.4.7
+ '@loaders.gl/images': 3.4.7
+ '@loaders.gl/loader-utils': 3.4.7
+ '@loaders.gl/textures': 3.4.7
+ '@math.gl/core': 3.6.3
+ dev: false
+
+ /@loaders.gl/images/3.4.6:
+ resolution: {integrity: sha512-zwM6lXATGxxIe27X1gPyqcgXb6ql9gPkoNlb5pWOrF1D8DrFFjTJSLV9p6WGrVKMZKeioJ2PK8ZnkeRiOYkveA==}
+ dependencies:
+ '@loaders.gl/loader-utils': 3.4.6
+ dev: false
+
+ /@loaders.gl/images/3.4.7:
+ resolution: {integrity: sha512-f8cQ5wUJtST75bLWy8GuMyCM/AMRst+Y2lRta4+fdWL7QMxUEbu91xoLkfKbLBIx2MwAGm0uowJzAmlLmbvAvQ==}
+ dependencies:
+ '@loaders.gl/loader-utils': 3.4.7
+ dev: false
+
+ /@loaders.gl/loader-utils/3.4.6:
+ resolution: {integrity: sha512-AN56Tvomas7bOZlrMEDforJWwS6DuXXFT/MsxOR/2vvzhutLDxYSuG4dZ9g5ejqJkiboDLAL3aghXXWekyToaw==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/worker-utils': 3.4.6
+ '@probe.gl/stats': 4.0.4
+ dev: false
+
+ /@loaders.gl/loader-utils/3.4.7:
+ resolution: {integrity: sha512-nu7g3LHbq+MaeDf0LLMhMex+hQdriRNcM1TFD6hNi7jjQAPbKGcXZ1aBybuLvT3DGU/TK0o88ekUkkmrSpx83A==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/worker-utils': 3.4.7
+ '@probe.gl/stats': 4.0.4
+ dev: false
+
+ /@loaders.gl/math/3.4.6:
+ resolution: {integrity: sha512-FC+BSp6NqMH372wkVS92yb+YIP2a26Mi1nEj8eiyRadxkQoyZ2bKH2kxoNX40yCo1xk/ZyX2v8wYq3ZNS+9fIg==}
+ dependencies:
+ '@loaders.gl/images': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@math.gl/core': 3.6.3
+ dev: false
+
+ /@loaders.gl/mvt/3.4.6:
+ resolution: {integrity: sha512-fzZjuY5mS7p3IBu5MSyiHAvRUz2MEX1w0tRW/AlNiBn3SaEKqt8rei7Fir7QTNxK5qEBoTUDr5jOg1wH9SCC7Q==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/gis': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ '@math.gl/polygon': 3.6.3
+ pbf: 3.2.1
+ dev: false
+
+ /@loaders.gl/schema/3.4.6:
+ resolution: {integrity: sha512-uvToDknGCEL0TIZY1Rn76lQ0m22kUtVxE0HbgfgzwkT7dlXeT92F5yD4VVVL8qTX4oqh2xUySPQIaiAqdkGCvg==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@types/geojson': 7946.0.10
+ dev: false
+
+ /@loaders.gl/schema/3.4.7:
+ resolution: {integrity: sha512-w429HMLt/NTtREbC2zFO2Fy36cOdQfYE2Ztjo9MJyv+takmZiVzwCRfYrAjOPFWcTLVwcbTkAF2r55+IyNGNeA==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@types/geojson': 7946.0.10
+ dev: false
+
+ /@loaders.gl/terrain/3.4.6:
+ resolution: {integrity: sha512-Ki/t1wtroBqvPf1XxKdVKWjZ8BwEw4mxIHbWg+vRauxU7T3m85Bfp1KMF49E8jAa5HGikenD2Qumf5jC66GNSQ==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/images': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ '@mapbox/martini': 0.2.0
+ dev: false
+
+ /@loaders.gl/textures/3.4.6:
+ resolution: {integrity: sha512-eeYFD0kWwkKwUWQ/sNHMP0wDiG2XsTWPY4rWV9RZRY955p+7q11Xoksqc3M4g8/DJ5+gYnBHyJMM3Tg4cG5Uhg==}
+ dependencies:
+ '@loaders.gl/images': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ '@loaders.gl/worker-utils': 3.4.6
+ ktx-parse: 0.0.4
+ texture-compressor: 1.0.2
+ dev: false
+
+ /@loaders.gl/textures/3.4.7:
+ resolution: {integrity: sha512-YtqNBk4QOSqSNeiUByFns1i5XsE/od5FnGkafjVSMRJaXLtJXc89LbmKwV3WvVy69ktNnBayY6hwZC73566G/A==}
+ dependencies:
+ '@loaders.gl/images': 3.4.7
+ '@loaders.gl/loader-utils': 3.4.7
+ '@loaders.gl/schema': 3.4.7
+ '@loaders.gl/worker-utils': 3.4.7
+ ktx-parse: 0.0.4
+ texture-compressor: 1.0.2
+ dev: false
+
+ /@loaders.gl/tiles/3.4.6_@loaders.gl+core@3.4.7:
+ resolution: {integrity: sha512-Tl9H9Gt8p8ZOJGdWjkdAHXjyr3UAArimC/DRRHbP70Zpipgo/qgSfYPbkGih20dvuoj4uuNe9pwSrk9ctmpxMg==}
+ peerDependencies:
+ '@loaders.gl/core': ^3.4.0
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/core': 3.4.7
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/math': 3.4.6
+ '@math.gl/core': 3.6.3
+ '@math.gl/culling': 3.6.3
+ '@math.gl/geospatial': 3.6.3
+ '@math.gl/web-mercator': 3.6.3
+ '@probe.gl/stats': 4.0.4
+ dev: false
+
+ /@loaders.gl/wms/3.4.6:
+ resolution: {integrity: sha512-LkVaIM36Nqp8rTmeSVnHxHXdq8NRjnoXC0bSoDW3WzClYIcQmMf43zHzi2zQf0Y1O/DH+6oLo9ueOtGKc8VfLA==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/images': 3.4.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ '@loaders.gl/xml': 3.4.6
+ '@turf/rewind': 5.1.5
+ deep-strict-equal: 0.2.0
+ lerc: 4.0.1
+ dev: false
+
+ /@loaders.gl/worker-utils/3.4.6:
+ resolution: {integrity: sha512-1Ns2d5HbJ22u9PDfEqoDWhg2F3zyYZUCQBmfmSW9Yuxblt2M0pRyB01VvAhPCnLovldvesHu+o16FsgkqieybQ==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ dev: false
+
+ /@loaders.gl/worker-utils/3.4.7:
+ resolution: {integrity: sha512-qMO4MWvIe9iCFhXbRcDhJEwhhw21KIh26Ehqtw3RGfHurOMRTC16jsAsGAJ+P65PZErpdg11QFS1p/dIEHp4fA==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ dev: false
+
+ /@loaders.gl/xml/3.4.6:
+ resolution: {integrity: sha512-kB3R2Wz9d/UEDka5Fhjv/MoIXK2dB57J7nQIXmFpdCVJKPUIm9aZXyqODcCMNoufSR2PI5uqxJ12a14vV3WZsQ==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@loaders.gl/loader-utils': 3.4.6
+ '@loaders.gl/schema': 3.4.6
+ fast-xml-parser: 4.2.5
+ dev: false
+
+ /@luma.gl/constants/8.5.20:
+ resolution: {integrity: sha512-5yG+ybkUZ4j6kLPWMZjN4Hun2yLB0MyEpNCRKAUN9/yS9UIWA7unyVxjSf2vnE7k/7dywtxlbXegASNFgNVGxw==}
+ dev: false
+
+ /@luma.gl/core/8.5.20:
+ resolution: {integrity: sha512-xJr96G6vhYcznYHC84fbeOG3fgNM4lFwj9bd0VPcg/Kfe8otUeN1Hl0AKHCCtNn48PiMSg3LKbaiRfNUMhaffQ==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/engine': 8.5.20
+ '@luma.gl/gltools': 8.5.20
+ '@luma.gl/shadertools': 8.5.20
+ '@luma.gl/webgl': 8.5.20
+ dev: false
+
+ /@luma.gl/engine/8.5.20:
+ resolution: {integrity: sha512-+0ryJ/4gL1pWaEgZimY21jUPt1LYiO6Cqte8TNUprCfAHoAStsuzD7jwgEqnM6jJOUEdIxQ3w0z3Dzw/0KIE+w==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/gltools': 8.5.20
+ '@luma.gl/shadertools': 8.5.20
+ '@luma.gl/webgl': 8.5.20
+ '@math.gl/core': 3.6.3
+ '@probe.gl/env': 3.6.0
+ '@probe.gl/stats': 3.6.0
+ '@types/offscreencanvas': 2019.7.0
+ dev: false
+
+ /@luma.gl/experimental/8.5.20_7mnddonr42takpwjuhfa7cwj3i:
+ resolution: {integrity: sha512-V1Jp68rYMPtwMdf+50r3NSYsGV3srjwZ+lcK2ew4DshjedDbYwLqTGMWcOyBhY3K3aCl2LH3Fhn0hAY+3NTLGA==}
+ peerDependencies:
+ '@loaders.gl/gltf': ^3.0.0
+ '@loaders.gl/images': ^3.0.0
+ '@luma.gl/engine': ^8.4.0
+ '@luma.gl/gltools': ^8.4.0
+ '@luma.gl/shadertools': ^8.4.0
+ '@luma.gl/webgl': ^8.4.0
+ dependencies:
+ '@loaders.gl/gltf': 3.4.7
+ '@loaders.gl/images': 3.4.7
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/engine': 8.5.20
+ '@luma.gl/gltools': 8.5.20
+ '@luma.gl/shadertools': 8.5.20
+ '@luma.gl/webgl': 8.5.20
+ '@math.gl/core': 3.6.3
+ earcut: 2.2.4
+ dev: false
+
+ /@luma.gl/gltools/8.5.20:
+ resolution: {integrity: sha512-5pP6ph9FSX5gHiVWQM1DmYRUnriklzKUG9yaqlQsKEqCFsOcKB0EfK3MfBVXIfsOdP/1bJZ9Dlz/zV19soWVhg==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@luma.gl/constants': 8.5.20
+ '@probe.gl/env': 3.6.0
+ '@probe.gl/log': 3.6.0
+ '@types/offscreencanvas': 2019.7.0
+ dev: false
+
+ /@luma.gl/shadertools/8.5.20:
+ resolution: {integrity: sha512-q1lrCZy1ncIFb4mMjsYgISLzNP6eMnhLUY+Oltj/qjAMcPEssCeHN2+XGfP/CVtU+O7sC+5JY2bQGaTs6HQ/Qw==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@math.gl/core': 3.6.3
+ dev: false
+
+ /@luma.gl/webgl/8.5.20:
+ resolution: {integrity: sha512-p/kt9KztywH4l+09XHoZ4cPFOoE7xlZXIBMT8rxRVgfe1w0lvi7QYh4tOG7gk+iixQ34EyDQacoHCsabdpmqQg==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@luma.gl/constants': 8.5.20
+ '@luma.gl/gltools': 8.5.20
+ '@probe.gl/env': 3.6.0
+ '@probe.gl/stats': 3.6.0
+ dev: false
+
+ /@mapbox/geojson-rewind/0.5.2:
+ resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==}
+ hasBin: true
+ dependencies:
+ get-stream: 6.0.1
+ minimist: 1.2.8
+ dev: false
+
+ /@mapbox/jsonlint-lines-primitives/2.0.2:
+ resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /@mapbox/mapbox-gl-supported/2.0.1:
+ resolution: {integrity: sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ==}
+ dev: false
+
+ /@mapbox/martini/0.2.0:
+ resolution: {integrity: sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==}
+ dev: false
+
+ /@mapbox/point-geometry/0.1.0:
+ resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==}
+ dev: false
+
+ /@mapbox/tiny-sdf/2.0.6:
+ resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==}
+ dev: false
+
+ /@mapbox/unitbezier/0.0.1:
+ resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==}
+ dev: false
+
+ /@mapbox/vector-tile/1.3.1:
+ resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==}
+ dependencies:
+ '@mapbox/point-geometry': 0.1.0
+ dev: false
+
+ /@mapbox/whoots-js/3.1.0:
+ resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==}
+ engines: {node: '>=6.0.0'}
+ dev: false
+
+ /@math.gl/core/3.6.3:
+ resolution: {integrity: sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@math.gl/types': 3.6.3
+ gl-matrix: 3.4.3
+ dev: false
+
+ /@math.gl/culling/3.6.3:
+ resolution: {integrity: sha512-3UERXHbaPlM6pnTk2MI7LeQ5CoelDZzDzghTTcv+HdQCZsT/EOEuEdYimETHtSxiyiOmsX2Un65UBLYT/rbKZg==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@math.gl/core': 3.6.3
+ gl-matrix: 3.4.3
+ dev: false
+
+ /@math.gl/geospatial/3.6.3:
+ resolution: {integrity: sha512-6xf657lJnaecSarSzn02t0cnsCSkWb+39m4+im96v20dZTrLCWZ2glDQVzfuL91meDnDXjH4oyvynp12Mj5MFg==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@math.gl/core': 3.6.3
+ gl-matrix: 3.4.3
+ dev: false
+
+ /@math.gl/polygon/3.6.3:
+ resolution: {integrity: sha512-FivQ1ZnYcAss1wVifOkHP/ZnlfQy1IL/769uzNtiHxwUbW0kZG3yyOZ9I7fwyzR5Hvqt3ErJKHjSYZr0uVlz5g==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@math.gl/core': 3.6.3
+ dev: false
+
+ /@math.gl/sun/3.6.3:
+ resolution: {integrity: sha512-mrx6CGYYeTNSQttvcw0KVUy+35YDmnjMqpO/o0t06Vcghrt0HNruB/ScRgUSbJrgkbOg1Vcqm23HBd++clzQzw==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ dev: false
+
+ /@math.gl/types/3.6.3:
+ resolution: {integrity: sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==}
+ dev: false
+
+ /@math.gl/web-mercator/3.6.3:
+ resolution: {integrity: sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ gl-matrix: 3.4.3
+ dev: false
+
/@multiformats/base-x/4.0.1:
resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==}
dev: false
@@ -2747,6 +3317,44 @@ packages:
preact: 10.16.0
dev: false
+ /@probe.gl/env/3.6.0:
+ resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ dev: false
+
+ /@probe.gl/env/4.0.4:
+ resolution: {integrity: sha512-sYNGqesDfWD6dFP5oNZtTeFA4Z6ak5T4a8BNPdNhoqy7PK9w70JHrb6mv+RKWqKXq33KiwCDWL7fYxx2HuEH2w==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ dev: false
+
+ /@probe.gl/log/3.6.0:
+ resolution: {integrity: sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@probe.gl/env': 3.6.0
+ dev: false
+
+ /@probe.gl/log/4.0.4:
+ resolution: {integrity: sha512-WpmXl6njlBMwrm8HBh/b4kSp/xnY1VVmeT4PWUKF+RkVbFuKQbsU11dA1IxoMd7gSY+5DGIwxGfAv1H5OMzA4A==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ '@probe.gl/env': 4.0.4
+ dev: false
+
+ /@probe.gl/stats/3.6.0:
+ resolution: {integrity: sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ dev: false
+
+ /@probe.gl/stats/4.0.4:
+ resolution: {integrity: sha512-SDuSY/D4yDL6LQDa69l/GCcnZLRiGYdyvYkxWb0CgnzTPdPrcdrzGkzkvpC3zsA4fEFw2smlDje370QGHwlisg==}
+ dependencies:
+ '@babel/runtime': 7.22.6
+ dev: false
+
/@protobuf-ts/plugin-framework/2.9.0:
resolution: {integrity: sha512-/fgpwEgYeiazEpkp9S+iaxVXd6LCkfd2iCfsvHiiSz94DatwZGkhv/85ciq2vcZVwSeEagKoSKeinnQWYvTnxw==}
dependencies:
@@ -3206,6 +3814,45 @@ packages:
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
dev: false
+ /@turf/boolean-clockwise/5.1.5:
+ resolution: {integrity: sha512-FqbmEEOJ4rU4/2t7FKx0HUWmjFEVqR+NJrFP7ymGSjja2SQ7Q91nnBihGuT+yuHHl6ElMjQ3ttsB/eTmyCycxA==}
+ dependencies:
+ '@turf/helpers': 5.1.5
+ '@turf/invariant': 5.2.0
+ dev: false
+
+ /@turf/clone/5.1.5:
+ resolution: {integrity: sha512-//pITsQ8xUdcQ9pVb4JqXiSqG4dos5Q9N4sYFoWghX21tfOV2dhc5TGqYOhnHrQS7RiKQL1vQ48kIK34gQ5oRg==}
+ dependencies:
+ '@turf/helpers': 5.1.5
+ dev: false
+
+ /@turf/helpers/5.1.5:
+ resolution: {integrity: sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw==}
+ dev: false
+
+ /@turf/invariant/5.2.0:
+ resolution: {integrity: sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA==}
+ dependencies:
+ '@turf/helpers': 5.1.5
+ dev: false
+
+ /@turf/meta/5.2.0:
+ resolution: {integrity: sha512-ZjQ3Ii62X9FjnK4hhdsbT+64AYRpaI8XMBMcyftEOGSmPMUVnkbvuv3C9geuElAXfQU7Zk1oWGOcrGOD9zr78Q==}
+ dependencies:
+ '@turf/helpers': 5.1.5
+ dev: false
+
+ /@turf/rewind/5.1.5:
+ resolution: {integrity: sha512-Gdem7JXNu+G4hMllQHXRFRihJl3+pNl7qY+l4qhQFxq+hiU1cQoVFnyoleIqWKIrdK/i2YubaSwc3SCM7N5mMw==}
+ dependencies:
+ '@turf/boolean-clockwise': 5.1.5
+ '@turf/clone': 5.1.5
+ '@turf/helpers': 5.1.5
+ '@turf/invariant': 5.2.0
+ '@turf/meta': 5.2.0
+ dev: false
+
/@types/babel__core/7.20.1:
resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==}
dependencies:
@@ -3251,12 +3898,19 @@ packages:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
dev: true
+ /@types/geojson/7946.0.10:
+ resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==}
+
/@types/graceful-fs/4.1.6:
resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
dependencies:
'@types/node': 20.4.1
dev: false
+ /@types/hammerjs/2.0.41:
+ resolution: {integrity: sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==}
+ dev: false
+
/@types/hast/2.3.4:
resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
dependencies:
@@ -3320,6 +3974,11 @@ packages:
resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==}
dev: false
+ /@types/mapbox-gl/2.7.11:
+ resolution: {integrity: sha512-4vSwPSTQIawZTFRiTY2R74aZwAiM9gE6KGj871xdyAPpa+DmEObXxQQXqL2PsMH31/rP9nxJ2Kv0boeTVJMXVw==}
+ dependencies:
+ '@types/geojson': 7946.0.10
+
/@types/mdast/3.0.11:
resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==}
dependencies:
@@ -3350,6 +4009,10 @@ packages:
/@types/node/20.4.1:
resolution: {integrity: sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==}
+ /@types/offscreencanvas/2019.7.0:
+ resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==}
+ dev: false
+
/@types/parse5/6.0.3:
resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
dev: false
@@ -4197,6 +4860,11 @@ packages:
node-int64: 0.4.0
dev: false
+ /buf-compare/1.0.1:
+ resolution: {integrity: sha512-Bvx4xH00qweepGc43xFvMs5BKASXTbHaHm6+kDYIK9p/4iFwjATQkmPKHQSgJZzKbAymhztRbXUf1Nqhzl73/Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/buffer-from/1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
dev: false
@@ -4495,6 +5163,14 @@ packages:
toggle-selection: 1.0.6
dev: false
+ /core-assert/0.2.1:
+ resolution: {integrity: sha512-IG97qShIP+nrJCXMCgkNZgH7jZQ4n8RpPyPeXX++T6avR/KhLhgLiHKoEn5Rc1KjfycSfA9DMa6m+4C4eguHhw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ buf-compare: 1.0.1
+ is-error: 2.2.2
+ dev: false
+
/create-require/1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: false
@@ -4508,6 +5184,10 @@ packages:
which: 2.0.2
dev: false
+ /csscolorparser/1.0.3:
+ resolution: {integrity: sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==}
+ dev: false
+
/csstype/3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
@@ -4589,6 +5269,13 @@ packages:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: false
+ /deep-strict-equal/0.2.0:
+ resolution: {integrity: sha512-3daSWyvZ/zwJvuMGlzG1O+Ow0YSadGfb3jsh9xoCutv2tWyB9dA4YvR9L9/fSdDZa2dByYQe+TqapSGUrjnkoA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ core-assert: 0.2.1
+ dev: false
+
/deepmerge-ts/4.3.0:
resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==}
engines: {node: '>=12.4.0'}
@@ -4729,11 +5416,19 @@ packages:
resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==}
dev: false
+ /draco3d/1.5.5:
+ resolution: {integrity: sha512-JVuNV0EJzD3LBYhGyIXJLeBID/EVtmFO1ZNhAYflTgiMiAJlbhXQmRRda/azjc8MRVMHh0gqGhiqHUo5dIXM8Q==}
+ dev: false
+
/dset/3.1.2:
resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==}
engines: {node: '>=4'}
dev: false
+ /earcut/2.2.4:
+ resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
+ dev: false
+
/eastasianwidth/0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: false
@@ -5329,6 +6024,13 @@ packages:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: false
+ /fast-xml-parser/4.2.5:
+ resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ dev: false
+
/fastq/1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
@@ -5453,6 +6155,10 @@ packages:
engines: {node: '>=6.9.0'}
dev: false
+ /geojson-vt/3.2.1:
+ resolution: {integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==}
+ dev: false
+
/get-caller-file/2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -5505,6 +6211,10 @@ packages:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
dev: false
+ /gl-matrix/3.4.3:
+ resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==}
+ dev: false
+
/glob-parent/5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -5599,6 +6309,25 @@ packages:
strip-bom-string: 1.0.0
dev: false
+ /grid-index/1.1.0:
+ resolution: {integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==}
+ dev: false
+
+ /h3-js/3.7.2:
+ resolution: {integrity: sha512-LPjlHSwB9zQZrMqKloCZmmmt3yZzIK7nqPcXqwU93zT3TtYG6jP4tZBzAPouxut7lLjdFbMQ75wRBiKfpsnY7w==}
+ engines: {node: '>=4', npm: '>=3', yarn: '>=1.3.0'}
+ dev: false
+
+ /h3-js/4.1.0:
+ resolution: {integrity: sha512-LQhmMl1dRQQjMXPzJc7MpZ/CqPOWWuAvVEoVJM9n/s7vHypj+c3Pd5rLQCkAsOgAoAYKbNCsYFE++LF7MvSfCQ==}
+ engines: {node: '>=4', npm: '>=3', yarn: '>=1.3.0'}
+ dev: false
+
+ /hammerjs/2.0.8:
+ resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==}
+ engines: {node: '>=0.8.0'}
+ dev: false
+
/has-bigints/1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
dev: false
@@ -5775,6 +6504,12 @@ packages:
engines: {node: '>= 4'}
dev: false
+ /image-size/0.7.5:
+ resolution: {integrity: sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==}
+ engines: {node: '>=6.9.0'}
+ hasBin: true
+ dev: false
+
/immutable/4.3.0:
resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
dev: true
@@ -5972,6 +6707,10 @@ packages:
resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==}
dev: false
+ /is-error/2.2.2:
+ resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==}
+ dev: false
+
/is-extendable/0.1.1:
resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
engines: {node: '>=0.10.0'}
@@ -6830,6 +7569,10 @@ packages:
resolution: {integrity: sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==}
dev: false
+ /kdbush/4.0.2:
+ resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==}
+ dev: false
+
/kill-port/2.0.1:
resolution: {integrity: sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ==}
hasBin: true
@@ -6853,6 +7596,14 @@ packages:
engines: {node: '>=6'}
dev: false
+ /ktx-parse/0.0.4:
+ resolution: {integrity: sha512-LY3nrmfXl+wZZdPxgJ3ZmLvG+wkOZZP3/dr4RbQj1Pk3Qwz44esOOSFFVQJcNWpXAtiNIC66WgXufX/SYgYz6A==}
+ dev: false
+
+ /lerc/4.0.1:
+ resolution: {integrity: sha512-b351eOjY3DKm1H2hDVhXswsd2RCK6bgREBK6Z639ctClOuYXTi9a44l8yO3zm1pYM2o4WrriloTAKgyrb/0EyA==}
+ dev: false
+
/level-supports/4.0.1:
resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==}
engines: {node: '>=12'}
@@ -7082,6 +7833,11 @@ packages:
wrap-ansi: 6.2.0
dev: false
+ /long/3.2.0:
+ resolution: {integrity: sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==}
+ engines: {node: '>=0.6'}
+ dev: false
+
/long/4.0.0:
resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
dev: false
@@ -7151,10 +7907,43 @@ packages:
tmpl: 1.0.5
dev: false
+ /mapbox-gl/2.15.0:
+ resolution: {integrity: sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==}
+ dependencies:
+ '@mapbox/geojson-rewind': 0.5.2
+ '@mapbox/jsonlint-lines-primitives': 2.0.2
+ '@mapbox/mapbox-gl-supported': 2.0.1
+ '@mapbox/point-geometry': 0.1.0
+ '@mapbox/tiny-sdf': 2.0.6
+ '@mapbox/unitbezier': 0.0.1
+ '@mapbox/vector-tile': 1.3.1
+ '@mapbox/whoots-js': 3.1.0
+ csscolorparser: 1.0.3
+ earcut: 2.2.4
+ geojson-vt: 3.2.1
+ gl-matrix: 3.4.3
+ grid-index: 1.1.0
+ kdbush: 4.0.2
+ murmurhash-js: 1.0.0
+ pbf: 3.2.1
+ potpack: 2.0.0
+ quickselect: 2.0.0
+ rw: 1.3.3
+ supercluster: 8.0.1
+ tinyqueue: 2.0.3
+ vt-pbf: 3.1.3
+ dev: false
+
/markdown-table/3.0.3:
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
dev: false
+ /math.gl/3.6.3:
+ resolution: {integrity: sha512-Yq9CyECvSDox9+5ETi2+x1bGTY5WvGUGL3rJfC4KPoCZAM51MGfrCm6rIn4yOJUVfMPs2a5RwMD+yGS/n1g3gg==}
+ dependencies:
+ '@math.gl/core': 3.6.3
+ dev: false
+
/mdast-util-definitions/5.1.2:
resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
dependencies:
@@ -7615,6 +8404,14 @@ packages:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: false
+ /mjolnir.js/2.7.1:
+ resolution: {integrity: sha512-72BeUWgTv2cj5aZQKpwL8caNUFhXZ9bDm1hxpNj70XJQ62IBnTZmtv/WPxJvtaVNhzNo+D2U8O6ryNI0zImYcw==}
+ engines: {node: '>= 4', npm: '>= 3'}
+ dependencies:
+ '@types/hammerjs': 2.0.41
+ hammerjs: 2.0.8
+ dev: false
+
/module-error/1.0.2:
resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==}
engines: {node: '>=10'}
@@ -7687,6 +8484,10 @@ packages:
varint: 5.0.2
dev: false
+ /murmurhash-js/1.0.0:
+ resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==}
+ dev: false
+
/nanoid/3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -8014,6 +8815,14 @@ packages:
engines: {node: '>=8'}
dev: false
+ /pbf/3.2.1:
+ resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==}
+ hasBin: true
+ dependencies:
+ ieee754: 1.2.1
+ resolve-protobuf-schema: 2.1.0
+ dev: false
+
/picocolors/1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
@@ -8069,6 +8878,10 @@ packages:
picocolors: 1.0.0
source-map-js: 1.0.2
+ /potpack/2.0.0:
+ resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==}
+ dev: false
+
/preact-render-to-string/5.2.6_preact@10.16.0:
resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==}
peerDependencies:
@@ -8204,6 +9017,10 @@ packages:
long: 5.2.3
dev: false
+ /protocol-buffers-schema/3.6.0:
+ resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==}
+ dev: false
+
/protons-runtime/5.0.1:
resolution: {integrity: sha512-AwyAA3pQ4Ka4tEBMdIjLi/cRdpb322f7sgv3NruVq9yguLggzwu5eeLe1HuRPFYlI4UsVN/QK/AQXjLPVLCzTA==}
dependencies:
@@ -8232,6 +9049,10 @@ packages:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: false
+ /quickselect/2.0.0:
+ resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
+ dev: false
+
/rate-limiter-flexible/2.4.1:
resolution: {integrity: sha512-dgH4T44TzKVO9CLArNto62hJOwlWJMLUjVVr/ii0uUzZXEXthDNr7/yefW5z/1vvHAfycc1tnuiYyNJ8CTRB3g==}
dev: false
@@ -8984,6 +9805,12 @@ packages:
engines: {node: '>=8'}
dev: false
+ /resolve-protobuf-schema/2.1.0:
+ resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==}
+ dependencies:
+ protocol-buffers-schema: 3.6.0
+ dev: false
+
/resolve.exports/2.0.2:
resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
engines: {node: '>=10'}
@@ -9115,6 +9942,10 @@ packages:
queue-microtask: 1.2.3
dev: false
+ /rw/1.3.3:
+ resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
+ dev: false
+
/rxjs/7.8.1:
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
dependencies:
@@ -9194,6 +10025,11 @@ packages:
regexp-ast-analysis: 0.6.0
dev: false
+ /search-insights/2.7.0:
+ resolution: {integrity: sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==}
+ engines: {node: '>=8.16.0'}
+ dev: false
+
/section-matter/1.0.0:
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
engines: {node: '>=4'}
@@ -9472,6 +10308,10 @@ packages:
engines: {node: '>=8'}
dev: false
+ /strnum/1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ dev: false
+
/stylis/4.3.0:
resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==}
dev: false
@@ -9482,6 +10322,12 @@ packages:
s.color: 0.0.15
dev: false
+ /supercluster/8.0.1:
+ resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==}
+ dependencies:
+ kdbush: 4.0.2
+ dev: false
+
/supports-color/5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -9529,6 +10375,14 @@ packages:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: false
+ /texture-compressor/1.0.2:
+ resolution: {integrity: sha512-dStVgoaQ11mA5htJ+RzZ51ZxIZqNOgWKAIvtjLrW1AliQQLCmrDqNzQZ8Jh91YealQ95DXt4MEduLzJmbs6lig==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ image-size: 0.7.5
+ dev: false
+
/throttle-debounce/5.0.0:
resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==}
engines: {node: '>=12.22'}
@@ -9548,6 +10402,10 @@ packages:
retimer: 3.0.0
dev: false
+ /tinyqueue/2.0.3:
+ resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==}
+ dev: false
+
/titleize/3.0.0:
resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
engines: {node: '>=12'}
@@ -10116,6 +10974,14 @@ packages:
resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==}
dev: false
+ /vt-pbf/3.1.3:
+ resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==}
+ dependencies:
+ '@mapbox/point-geometry': 0.1.0
+ '@mapbox/vector-tile': 1.3.1
+ pbf: 3.2.1
+ dev: false
+
/walker/1.0.8:
resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
dependencies: