@viamrobotics/motion-tools 1.14.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FrameConfigUpdater.svelte.d.ts +2 -2
- package/dist/HoverUpdater.svelte.d.ts +1 -1
- package/dist/attribute.js +1 -1
- package/dist/color.d.ts +1 -1
- package/dist/color.js +2 -2
- package/dist/components/App.svelte +25 -21
- package/dist/components/App.svelte.d.ts +1 -1
- package/dist/components/BatchedArrows.svelte +5 -3
- package/dist/components/Camera.svelte +1 -0
- package/dist/components/CameraControls.svelte +5 -3
- package/dist/components/Entities/Arrows/ArrowGroups.svelte +6 -3
- package/dist/components/Entities/Arrows/Arrows.svelte +6 -3
- package/dist/components/Entities/Entities.svelte +7 -5
- package/dist/components/Entities/Frame.svelte +8 -5
- package/dist/components/Entities/Frame.svelte.d.ts +2 -2
- package/dist/components/Entities/GLTF.svelte +8 -5
- package/dist/components/Entities/GLTF.svelte.d.ts +2 -2
- package/dist/components/Entities/Geometry.svelte +8 -5
- package/dist/components/Entities/Line.svelte +8 -5
- package/dist/components/Entities/Line.svelte.d.ts +1 -1
- package/dist/components/Entities/LineDots.svelte +1 -1
- package/dist/components/Entities/LineGeometry.svelte +1 -1
- package/dist/components/Entities/Mesh.svelte +8 -5
- package/dist/components/Entities/Points.svelte +9 -6
- package/dist/components/Entities/Points.svelte.d.ts +2 -2
- package/dist/components/Entities/Pose.svelte +4 -3
- package/dist/components/Entities/hooks/useEntityEvents.svelte.d.ts +1 -1
- package/dist/components/Entities/hooks/useEntityEvents.svelte.js +2 -2
- package/dist/components/FileDrop/FileDrop.svelte +10 -6
- package/dist/components/FileDrop/file-dropper.d.ts +1 -1
- package/dist/components/FileDrop/pcd-dropper.js +1 -1
- package/dist/components/FileDrop/ply-dropper.js +1 -1
- package/dist/components/FileDrop/snapshot-dropper.js +1 -1
- package/dist/components/Focus.svelte +4 -2
- package/dist/components/KeyboardControls.svelte +4 -2
- package/dist/components/Lasso/Debug.svelte +5 -2
- package/dist/components/Lasso/Lasso.svelte +9 -6
- package/dist/components/Lasso/Tool.svelte +10 -7
- package/dist/components/MeasureTool/MeasurePoint.svelte +2 -1
- package/dist/components/MeasureTool/MeasurePoint.svelte.d.ts +1 -1
- package/dist/components/MeasureTool/MeasureTool.svelte +7 -5
- package/dist/components/PCD.svelte +4 -3
- package/dist/components/PointerMissBox.svelte +3 -2
- package/dist/components/Scene.svelte +12 -9
- package/dist/components/SceneProviders.svelte +20 -18
- package/dist/components/Selected.svelte +5 -3
- package/dist/components/Snapshot.svelte +8 -5
- package/dist/components/StaticGeometries.svelte +10 -7
- package/dist/components/hover/HoveredEntities.svelte +2 -1
- package/dist/components/hover/HoveredEntity.svelte +2 -1
- package/dist/components/hover/HoveredEntityTooltip.svelte +1 -0
- package/dist/components/hover/LinkedHoveredEntity.svelte +7 -5
- package/dist/components/overlay/AddRelationship.svelte +4 -2
- package/dist/components/overlay/Details.svelte +21 -19
- package/dist/components/overlay/FloatingPanel.svelte +40 -3
- package/dist/components/overlay/FloatingPanel.svelte.d.ts +1 -0
- package/dist/components/overlay/LiveUpdatesBanner.svelte +1 -0
- package/dist/components/overlay/Logs.svelte +4 -2
- package/dist/components/overlay/Popover.svelte +3 -2
- package/dist/components/overlay/RefreshRate.svelte +4 -2
- package/dist/components/overlay/dashboard/Button.svelte +2 -1
- package/dist/components/overlay/dashboard/Button.svelte.d.ts +1 -1
- package/dist/components/overlay/dashboard/Dashboard.svelte +3 -1
- package/dist/components/overlay/left-pane/AddFrames.svelte +4 -2
- package/dist/components/overlay/left-pane/Drawer.svelte +3 -2
- package/dist/components/overlay/left-pane/Tree.svelte +6 -12
- package/dist/components/overlay/left-pane/TreeContainer.svelte +33 -50
- package/dist/components/overlay/left-pane/TreeContainer.svelte.d.ts +1 -1
- package/dist/components/overlay/settings/Settings.svelte +37 -10
- package/dist/components/overlay/settings/Tabs.svelte +2 -1
- package/dist/components/overlay/widgets/ArmPositions.svelte +3 -2
- package/dist/components/overlay/widgets/Camera.svelte +6 -5
- package/dist/components/weblab/WeblabActive.svelte +2 -1
- package/dist/components/xr/ArmTeleop.svelte +7 -6
- package/dist/components/xr/BentPlaneGeometry.svelte +3 -2
- package/dist/components/xr/CameraFeed.svelte +2 -0
- package/dist/components/xr/Controllers.svelte +5 -3
- package/dist/components/xr/Draggable.svelte +4 -3
- package/dist/components/xr/HandCollider.svelte +2 -1
- package/dist/components/xr/JointLimitsWidget.svelte +1 -0
- package/dist/components/xr/OriginMarker.svelte +2 -1
- package/dist/components/xr/PointDistance.svelte +3 -2
- package/dist/components/xr/XR.svelte +8 -6
- package/dist/components/xr/XRConfigPanel.svelte +4 -3
- package/dist/components/xr/XRControllerSettings.svelte +2 -1
- package/dist/components/xr/XRToast.svelte +4 -3
- package/dist/ecs/traits.d.ts +1 -1
- package/dist/ecs/traits.js +1 -1
- package/dist/ecs/useQuery.svelte.js +1 -1
- package/dist/frame.js +1 -1
- package/dist/hooks/use3DModels.svelte.js +3 -3
- package/dist/hooks/useConfigFrames.svelte.js +3 -3
- package/dist/hooks/useDrawAPI.svelte.js +9 -9
- package/dist/hooks/useFramelessComponents.svelte.js +1 -1
- package/dist/hooks/useFrames.svelte.js +7 -7
- package/dist/hooks/useGeometries.svelte.js +8 -8
- package/dist/hooks/useMouseRaycaster.svelte.d.ts +1 -1
- package/dist/hooks/useMouseRaycaster.svelte.js +1 -1
- package/dist/hooks/usePartConfig.svelte.d.ts +1 -1
- package/dist/hooks/usePartConfig.svelte.js +3 -3
- package/dist/hooks/usePointcloudObjects.svelte.js +6 -6
- package/dist/hooks/usePointclouds.svelte.js +5 -5
- package/dist/hooks/usePose.svelte.js +7 -7
- package/dist/hooks/useSelection.svelte.d.ts +1 -1
- package/dist/hooks/useWeblabs.svelte.d.ts +1 -0
- package/dist/hooks/useWeblabs.svelte.js +15 -3
- package/dist/hooks/useWorldState.svelte.js +8 -8
- package/dist/plugins/bvh.svelte.js +2 -2
- package/dist/snapshot.d.ts +2 -2
- package/dist/snapshot.js +4 -4
- package/dist/three/BatchedArrow.d.ts +1 -1
- package/dist/three/BatchedArrow.js +1 -1
- package/dist/three/InstancedArrows/InstancedArrows.d.ts +1 -1
- package/dist/three/InstancedArrows/InstancedArrows.js +3 -3
- package/dist/three/InstancedArrows/box.js +1 -1
- package/dist/three/InstancedArrows/geometry.js +1 -1
- package/dist/three/InstancedArrows/raycast.d.ts +1 -1
- package/dist/three/InstancedArrows/raycast.js +1 -1
- package/dist/three/OBBHelper.d.ts +1 -1
- package/dist/three/OBBHelper.js +1 -1
- package/dist/three/OrientationVector.js +1 -1
- package/dist/transform.js +1 -1
- package/package.json +3 -2
- package/dist/hooks/__tests__/fixtures/ResizableTestWrapper.svelte +0 -41
- package/dist/hooks/__tests__/fixtures/ResizableTestWrapper.svelte.d.ts +0 -6
- package/dist/hooks/useResizable.svelte.d.ts +0 -12
- package/dist/hooks/useResizable.svelte.js +0 -46
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createPoseFromFrame } from '../transform';
|
|
3
|
-
import { Struct, Pose } from '@viamrobotics/sdk';
|
|
1
|
+
import { Pose, Struct } from '@viamrobotics/sdk';
|
|
4
2
|
import { createAppMutation, createAppQuery } from '@viamrobotics/svelte-sdk';
|
|
5
3
|
import { getContext, setContext } from 'svelte';
|
|
4
|
+
import { createFrame } from '../frame';
|
|
5
|
+
import { createPoseFromFrame } from '../transform';
|
|
6
6
|
const key = Symbol('part-config-context');
|
|
7
7
|
export const providePartConfig = (partID, params) => {
|
|
8
8
|
const props = $derived(params());
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { VisionClient } from '@viamrobotics/sdk';
|
|
2
2
|
import { createResourceClient, createResourceQuery, useResourceNames, } from '@viamrobotics/svelte-sdk';
|
|
3
|
-
import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
|
|
4
|
-
import { useLogs } from './useLogs.svelte';
|
|
5
|
-
import { parsePcdInWorker } from '../lib';
|
|
6
3
|
import { getContext, setContext, untrack } from 'svelte';
|
|
7
|
-
import { traits, useWorld } from '../ecs';
|
|
8
4
|
import { createBufferGeometry, updateBufferGeometry } from '../attribute';
|
|
9
|
-
import { useEnvironment } from './useEnvironment.svelte';
|
|
10
5
|
import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
|
|
11
|
-
import {
|
|
6
|
+
import { traits, useWorld } from '../ecs';
|
|
12
7
|
import { updateGeometryTrait } from '../ecs/traits';
|
|
8
|
+
import { parsePcdInWorker } from '../lib';
|
|
9
|
+
import { createPose } from '../transform';
|
|
10
|
+
import { useEnvironment } from './useEnvironment.svelte';
|
|
11
|
+
import { useLogs } from './useLogs.svelte';
|
|
12
|
+
import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
|
|
13
13
|
const key = Symbol('pointcloud-object-context');
|
|
14
14
|
export const providePointcloudObjects = (partID) => {
|
|
15
15
|
const world = useWorld();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { CameraClient } from '@viamrobotics/sdk';
|
|
2
|
-
import { setContext, getContext, untrack } from 'svelte';
|
|
3
2
|
import { createResourceClient, createResourceQuery, useResourceNames, } from '@viamrobotics/svelte-sdk';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { useLogs } from './useLogs.svelte';
|
|
3
|
+
import { getContext, setContext, untrack } from 'svelte';
|
|
4
|
+
import { createBufferGeometry, updateBufferGeometry } from '../attribute';
|
|
7
5
|
import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
|
|
8
6
|
import { traits, useWorld } from '../ecs';
|
|
7
|
+
import { parsePcdInWorker } from '../loaders/pcd';
|
|
9
8
|
import { useEnvironment } from './useEnvironment.svelte';
|
|
10
|
-
import {
|
|
9
|
+
import { useLogs } from './useLogs.svelte';
|
|
10
|
+
import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
|
|
11
11
|
const key = Symbol('pointcloud-context');
|
|
12
12
|
export const providePointclouds = (partID) => {
|
|
13
13
|
const environment = useEnvironment();
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { createRobotQuery, useRobotClient } from '@viamrobotics/svelte-sdk';
|
|
2
|
-
import { usePartID } from './usePartID.svelte';
|
|
3
|
-
import { commonApi, Pose } from '@viamrobotics/sdk';
|
|
4
|
-
import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
|
|
5
|
-
import { useEnvironment } from './useEnvironment.svelte';
|
|
6
1
|
import { observe } from '@threlte/core';
|
|
2
|
+
import { commonApi, Pose } from '@viamrobotics/sdk';
|
|
3
|
+
import { createRobotQuery, useRobotClient } from '@viamrobotics/svelte-sdk';
|
|
7
4
|
import { untrack } from 'svelte';
|
|
8
|
-
import { useFrames } from './useFrames.svelte';
|
|
9
5
|
import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
|
|
6
|
+
import { useEnvironment } from './useEnvironment.svelte';
|
|
7
|
+
import { useFrames } from './useFrames.svelte';
|
|
10
8
|
import { useLogs } from './useLogs.svelte';
|
|
11
|
-
import {
|
|
9
|
+
import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
|
|
10
|
+
import { usePartID } from './usePartID.svelte';
|
|
12
11
|
import { useRefetchPoses } from './useRefetchPoses';
|
|
12
|
+
import { useResourceByName } from './useResourceByName.svelte';
|
|
13
13
|
const originFrameComponentTypes = new Set(['arm', 'gantry', 'gripper', 'base']);
|
|
14
14
|
export const usePose = (name, parent) => {
|
|
15
15
|
const environment = useEnvironment();
|
|
@@ -3,6 +3,7 @@ export declare const WEBLABS_CONTEXT_KEY: unique symbol;
|
|
|
3
3
|
interface Context {
|
|
4
4
|
load: (experiments: string[]) => void;
|
|
5
5
|
isActive(experiment: string): boolean;
|
|
6
|
+
toggle(experiment: string): void;
|
|
6
7
|
}
|
|
7
8
|
export declare const createWeblabs: () => Context;
|
|
8
9
|
export declare const provideWeblabs: () => void;
|
|
@@ -37,11 +37,22 @@ export const createWeblabs = () => {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
|
+
const toggle = (experiment) => {
|
|
41
|
+
const cookieExperiments = new Set(getCookieExperiments());
|
|
42
|
+
if (activeExperiments.has(experiment)) {
|
|
43
|
+
activeExperiments.delete(experiment);
|
|
44
|
+
cookieExperiments.delete(experiment);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
activeExperiments.add(experiment);
|
|
48
|
+
cookieExperiments.add(experiment);
|
|
49
|
+
}
|
|
50
|
+
addCookie('weblab_experiments', [...cookieExperiments].join(','));
|
|
51
|
+
};
|
|
40
52
|
return {
|
|
41
53
|
load,
|
|
42
|
-
isActive: (experiment) =>
|
|
43
|
-
|
|
44
|
-
},
|
|
54
|
+
isActive: (experiment) => activeExperiments.has(experiment),
|
|
55
|
+
toggle,
|
|
45
56
|
};
|
|
46
57
|
};
|
|
47
58
|
export const provideWeblabs = () => {
|
|
@@ -58,6 +69,7 @@ export const useWeblabs = () => {
|
|
|
58
69
|
return {
|
|
59
70
|
load: () => { },
|
|
60
71
|
isActive: () => false,
|
|
72
|
+
toggle: () => { },
|
|
61
73
|
};
|
|
62
74
|
}
|
|
63
75
|
return context;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useThrelte } from '@threlte/core';
|
|
2
|
+
import { TransformChangeType, WorldStateStoreClient, } from '@viamrobotics/sdk';
|
|
2
3
|
import { createResourceClient, createResourceQuery, createResourceStream, useResourceNames, } from '@viamrobotics/svelte-sdk';
|
|
3
|
-
import { parseMetadata } from '../metadata';
|
|
4
|
-
import { asColor, asOpacity, isPerVertexColors, STRIDE } from '../buffer';
|
|
5
4
|
import { Color } from 'three';
|
|
6
|
-
import {
|
|
5
|
+
import { createBufferGeometry } from '../attribute';
|
|
6
|
+
import { asColor, asOpacity, isPerVertexColors, STRIDE } from '../buffer';
|
|
7
7
|
import { traits, useWorld } from '../ecs';
|
|
8
|
-
import { createPose } from '../transform';
|
|
9
|
-
import { useThrelte } from '@threlte/core';
|
|
10
8
|
import { createBox, createCapsule, createSphere } from '../geometry';
|
|
11
|
-
import { parsePlyInput } from '../ply';
|
|
12
9
|
import { parsePcdInWorker } from '../loaders/pcd';
|
|
13
|
-
import {
|
|
10
|
+
import { parseMetadata } from '../metadata';
|
|
11
|
+
import { parsePlyInput } from '../ply';
|
|
12
|
+
import { createPose } from '../transform';
|
|
13
|
+
import { usePartID } from './usePartID.svelte';
|
|
14
14
|
const colorUtil = new Color();
|
|
15
15
|
export const provideWorldStates = () => {
|
|
16
16
|
const partID = usePartID();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { injectPlugin, isInstanceOf } from '@threlte/core';
|
|
2
|
-
import { BatchedMesh,
|
|
3
|
-
import { acceleratedRaycast,
|
|
2
|
+
import { BatchedMesh, Mesh, Points } from 'three';
|
|
3
|
+
import { acceleratedRaycast, BVHHelper, computeBatchedBoundsTree, computeBoundsTree, disposeBatchedBoundsTree, disposeBoundsTree, PointsBVH, SAH, } from 'three-mesh-bvh';
|
|
4
4
|
export const bvh = (raycaster, options) => {
|
|
5
5
|
const bvhOptions = $derived({
|
|
6
6
|
strategy: SAH,
|
package/dist/snapshot.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Entity, World } from 'koota';
|
|
2
2
|
import type { Snapshot } from './buf/draw/v1/snapshot_pb';
|
|
3
|
-
import { type SceneMetadata } from './buf/draw/v1/scene_pb';
|
|
4
3
|
import type { Settings } from './hooks/useSettings.svelte';
|
|
4
|
+
import { type SceneMetadata } from './buf/draw/v1/scene_pb';
|
|
5
5
|
/**
|
|
6
6
|
* Merges scene-level metadata (grid, camera, point/line settings) into the
|
|
7
7
|
* current viewer settings. Millimetre values from the proto are converted
|
package/dist/snapshot.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import { Geometry } from '@viamrobotics/sdk';
|
|
1
2
|
import { Color, Vector3, Vector4 } from 'three';
|
|
2
3
|
import { NURBSCurve } from 'three/addons/curves/NURBSCurve.js';
|
|
3
|
-
import { RenderArmModels } from './buf/draw/v1/scene_pb';
|
|
4
4
|
import {} from './buf/draw/v1/drawing_pb';
|
|
5
|
+
import { RenderArmModels } from './buf/draw/v1/scene_pb';
|
|
5
6
|
import { traits } from './ecs';
|
|
6
|
-
import { Geometry } from '@viamrobotics/sdk';
|
|
7
7
|
import { parseMetadata } from './metadata';
|
|
8
|
-
import { rgbaToHex } from './color';
|
|
9
|
-
import { asColor, asFloat32Array, asOpacity, isPerVertexColors, STRIDE } from './buffer';
|
|
10
8
|
import { createBufferGeometry } from './attribute';
|
|
9
|
+
import { asColor, asFloat32Array, asOpacity, isPerVertexColors, STRIDE } from './buffer';
|
|
10
|
+
import { rgbaToHex } from './color';
|
|
11
11
|
const vec3 = new Vector3();
|
|
12
12
|
const colorUtil = new Color();
|
|
13
13
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BatchedMesh,
|
|
1
|
+
import { BatchedMesh, Box3, Color, MeshBasicMaterial, Object3D, Vector3 } from 'three';
|
|
2
2
|
import { createArrowGeometry } from './arrow';
|
|
3
3
|
const black = new Color('black');
|
|
4
4
|
const axis = new Vector3();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Box3, BufferGeometry, type ColorRepresentation, Group, InstancedInterleavedBuffer, Mesh, Vector3 } from 'three';
|
|
2
2
|
export declare class InstancedArrows extends Group {
|
|
3
3
|
isInstancedArrows: boolean;
|
|
4
4
|
count: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { Box3, BufferGeometry, Color, DynamicDrawUsage, FrontSide, Group, InstancedBufferAttribute, InstancedInterleavedBuffer, InterleavedBufferAttribute, Material, Mesh, RawShaderMaterial, Vector3, } from 'three';
|
|
2
|
+
import { computeBoundingBox } from './box';
|
|
3
3
|
import fragmentShader from './fragment.glsl';
|
|
4
4
|
import { createHeadGeometry, createShaftGeometry, toInstanced } from './geometry';
|
|
5
|
-
import
|
|
5
|
+
import vertexShader from './vertex.glsl';
|
|
6
6
|
const defaults = {
|
|
7
7
|
LENGTH: 0.1,
|
|
8
8
|
HEAD_LENGTH: 0.02,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BufferAttribute, BufferGeometry, InstancedBufferGeometry } from 'three';
|
|
2
2
|
export const createShaftGeometry = () => {
|
|
3
3
|
// Triangular prism aligned to +Y, base at y=0, top at y=1.
|
|
4
4
|
// No caps, 6 verts, 6 side triangles.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type Intersection, Raycaster } from 'three';
|
|
2
2
|
import type { InstancedArrows } from './InstancedArrows';
|
|
3
3
|
export declare function meshBoundsRaycast(this: InstancedArrows, raycaster: Raycaster, intersects: Intersection[]): void;
|
|
4
4
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Object3D, Vector3 } from 'three';
|
|
2
2
|
import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2.js';
|
|
3
3
|
export declare class OBBHelper extends LineSegments2 {
|
|
4
4
|
constructor(color?: number, linewidth?: number);
|
package/dist/three/OBBHelper.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BoxGeometry, BufferGeometry, EdgesGeometry, Matrix3, Matrix4, Mesh, Object3D, Quaternion, Vector3, } from 'three';
|
|
2
2
|
import { LineMaterial } from 'three/addons/lines/LineMaterial.js';
|
|
3
3
|
import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2.js';
|
|
4
4
|
import { LineSegmentsGeometry } from 'three/examples/jsm/lines/LineSegmentsGeometry.js';
|
package/dist/transform.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OrientationVector } from './three/OrientationVector';
|
|
2
1
|
import { Euler, MathUtils, Matrix4, Quaternion, Vector3 } from 'three';
|
|
2
|
+
import { OrientationVector } from './three/OrientationVector';
|
|
3
3
|
const quaternion = new Quaternion();
|
|
4
4
|
const euler = new Euler();
|
|
5
5
|
const ov = new OrientationVector();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viamrobotics/motion-tools",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "Motion visualization with Viam",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"esbuild": "^0.27.3",
|
|
52
52
|
"eslint": "10.0.2",
|
|
53
53
|
"eslint-config-prettier": "10.1.8",
|
|
54
|
+
"eslint-plugin-perfectionist": "^5.6.0",
|
|
54
55
|
"eslint-plugin-svelte": "3.15.0",
|
|
55
56
|
"eslint-plugin-unicorn": "^63.0.0",
|
|
56
57
|
"globals": "16.3.0",
|
|
@@ -149,7 +150,7 @@
|
|
|
149
150
|
"preview": "vite preview",
|
|
150
151
|
"check": "svelte-kit sync && pnpm build:workers && svelte-check --tsconfig ./tsconfig.json && pnpm vet",
|
|
151
152
|
"check:watch": "svelte-kit sync && pnpm build:workers && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
152
|
-
"format": "prettier --write .",
|
|
153
|
+
"format": "prettier --write . && eslint . --fix",
|
|
153
154
|
"lint:draw": "golangci-lint run ./draw/...",
|
|
154
155
|
"lint:client": "golangci-lint run ./client/...",
|
|
155
156
|
"lint:prettier": "prettier --check .",
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { useResizable } from '../../useResizable.svelte'
|
|
3
|
-
|
|
4
|
-
interface Props {
|
|
5
|
-
name: string
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
let { name }: Props = $props()
|
|
9
|
-
|
|
10
|
-
const resizable = useResizable(() => name)
|
|
11
|
-
|
|
12
|
-
let container = $state<HTMLDivElement>()
|
|
13
|
-
|
|
14
|
-
$effect(() => {
|
|
15
|
-
if (container) {
|
|
16
|
-
resizable.observe(container)
|
|
17
|
-
}
|
|
18
|
-
})
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<div data-testid="status">
|
|
22
|
-
{#if resizable.isLoaded}
|
|
23
|
-
loaded
|
|
24
|
-
{:else}
|
|
25
|
-
loading
|
|
26
|
-
{/if}
|
|
27
|
-
</div>
|
|
28
|
-
|
|
29
|
-
<div data-testid="dimensions">
|
|
30
|
-
{resizable.current.width}x{resizable.current.height}
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
<div
|
|
34
|
-
bind:this={container}
|
|
35
|
-
data-testid="container"
|
|
36
|
-
class="resize"
|
|
37
|
-
style:width={`${resizable.current.width}px`}
|
|
38
|
-
style:height={`${resizable.current.height}px`}
|
|
39
|
-
>
|
|
40
|
-
Resizable container
|
|
41
|
-
</div>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface Dimensions {
|
|
2
|
-
width: number;
|
|
3
|
-
height: number;
|
|
4
|
-
}
|
|
5
|
-
interface Context {
|
|
6
|
-
readonly current: Dimensions;
|
|
7
|
-
readonly isLoaded: boolean;
|
|
8
|
-
observe: (target: HTMLElement) => void;
|
|
9
|
-
}
|
|
10
|
-
export declare const MIN_DIMENSIONS: Dimensions;
|
|
11
|
-
export declare const useResizable: (name: () => string, defaultDimensions?: () => Dimensions) => Context;
|
|
12
|
-
export {};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { get, set } from 'idb-keyval';
|
|
2
|
-
export const MIN_DIMENSIONS = { width: 240, height: 320 };
|
|
3
|
-
export const useResizable = (name, defaultDimensions) => {
|
|
4
|
-
const key = $derived(`${name()}-resizable`);
|
|
5
|
-
let dimensions = $derived(defaultDimensions?.() ?? MIN_DIMENSIONS);
|
|
6
|
-
let loaded = $state(false);
|
|
7
|
-
let observer;
|
|
8
|
-
$effect(() => {
|
|
9
|
-
get(key).then((saved) => {
|
|
10
|
-
if (saved) {
|
|
11
|
-
dimensions = saved;
|
|
12
|
-
}
|
|
13
|
-
loaded = true;
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
const observe = (target) => {
|
|
17
|
-
// Disconnect previous observer if any
|
|
18
|
-
observer?.disconnect();
|
|
19
|
-
observer = new ResizeObserver((entries) => {
|
|
20
|
-
const entry = entries[0];
|
|
21
|
-
if (!entry)
|
|
22
|
-
return;
|
|
23
|
-
const next = {
|
|
24
|
-
width: Math.max(entry.contentRect.width, MIN_DIMENSIONS.width),
|
|
25
|
-
height: Math.max(entry.contentRect.height, MIN_DIMENSIONS.height),
|
|
26
|
-
};
|
|
27
|
-
set(key, next);
|
|
28
|
-
});
|
|
29
|
-
observer.observe(target);
|
|
30
|
-
};
|
|
31
|
-
const disconnect = () => {
|
|
32
|
-
observer?.disconnect();
|
|
33
|
-
};
|
|
34
|
-
$effect(() => {
|
|
35
|
-
return disconnect;
|
|
36
|
-
});
|
|
37
|
-
return {
|
|
38
|
-
get current() {
|
|
39
|
-
return dimensions;
|
|
40
|
-
},
|
|
41
|
-
get isLoaded() {
|
|
42
|
-
return loaded;
|
|
43
|
-
},
|
|
44
|
-
observe,
|
|
45
|
-
};
|
|
46
|
-
};
|