@vertexvis/viewer-toolkit-react 0.0.5-canary.0 → 0.0.5-canary.10
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/bundle.cjs.js +14 -2
- package/dist/bundle.cjs.js.map +1 -1
- package/dist/bundle.esm.js +14 -2
- package/dist/bundle.esm.js.map +1 -1
- package/dist/components/common/copy-button.d.ts +9 -0
- package/dist/components/context-menu/menu-items/show-properties-menu-item.d.ts +1 -0
- package/dist/components/metadata/__tests__/metadata-panel.spec.d.ts +1 -0
- package/dist/components/metadata/__tests__/metadata-property-value.spec.d.ts +1 -0
- package/dist/components/metadata/metadata-panel.d.ts +4 -0
- package/dist/components/metadata/metadata-property-value.d.ts +6 -0
- package/dist/components/scene-tree/__tests__/scene-tree-secondary-panel.spec.d.ts +1 -0
- package/dist/components/scene-tree/scene-tree-secondary-panel.d.ts +6 -0
- package/dist/components/scene-tree/vertex-scene-tree.d.ts +2 -1
- package/dist/components/sidebar/viewer-right-sidebar/viewer-right-open-panel.d.ts +14 -1
- package/dist/components/sidebar/viewer-right-sidebar/viewer-right-panel-header.d.ts +4 -1
- package/dist/components/sidebar/viewer-right-sidebar/viewer-right-sidebar.d.ts +17 -1
- package/dist/components/transforms/transform-controls.d.ts +3 -1
- package/dist/components/transforms/transform-inputs.d.ts +5 -0
- package/dist/components/transforms/transform-numeric-field.d.ts +14 -0
- package/dist/components/transforms/transform-panel-section.d.ts +3 -1
- package/dist/index.css +2 -2
- package/dist/index.d.ts +3 -1
- package/dist/state/metadata/index.d.ts +2 -0
- package/dist/state/metadata/metadata.d.ts +5 -0
- package/dist/state/metadata/types.d.ts +7 -0
- package/dist/state/panel/actions.d.ts +3 -1
- package/dist/state/panel/panel.d.ts +5 -3
- package/dist/state/scene-tree/columns/actions.d.ts +1 -0
- package/dist/state/scene-tree/columns/columns.d.ts +1 -0
- package/dist/state/scene-tree/core/actions.d.ts +1 -0
- package/dist/state/scene-tree/search/actions.d.ts +3 -2
- package/dist/state/scene-tree/search/search.d.ts +3 -3
- package/dist/state/scene-view-item/actions.d.ts +8 -0
- package/dist/state/scene-view-item/index.d.ts +2 -0
- package/dist/state/scene-view-item/items.d.ts +2 -0
- package/dist/state/selection/selection.d.ts +3 -0
- package/dist/state/transforms/actions.d.ts +3 -1
- package/dist/state/transforms/edit-transforms.d.ts +10 -0
- package/dist/state/transforms/index.d.ts +1 -0
- package/dist/state/transforms/transforms.d.ts +55 -9
- package/dist/state/viewer/core/core.d.ts +1 -0
- package/dist/util/react/children.d.ts +4 -0
- package/dist/util/recoil/loadable.d.ts +20 -0
- package/dist/util/refs/__tests__/when-component-ready.spec.d.ts +1 -0
- package/dist/util/refs/when-component-ready.d.ts +1 -1
- package/dist/util/transforms/transforms.d.ts +6 -0
- package/package.json +12 -9
- /package/dist/util/{measurement/units.d.ts → numbers/distance-units.d.ts} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IconSize } from '@vertexvis/ui/dist/types/types/icon';
|
|
2
|
+
export interface Props {
|
|
3
|
+
id?: string;
|
|
4
|
+
textToCopy?: string;
|
|
5
|
+
iconSize?: IconSize;
|
|
6
|
+
disableTooltip?: boolean;
|
|
7
|
+
onCopyValue?: (copiedValue: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const CopyButton: ({ id, textToCopy, iconSize, disableTooltip, onCopyValue, }: Props) => JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VertexShowPropertiesMenuItem: () => JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -9,6 +9,7 @@ export interface Props {
|
|
|
9
9
|
readonly onToggleSelection?: SceneTreeOperationHandler;
|
|
10
10
|
readonly onToggleExpansion?: SceneTreeOperationHandler;
|
|
11
11
|
readonly onToggleVisibility?: SceneTreeOperationHandler;
|
|
12
|
+
readonly onCopyMetadataValue?: (copiedValue: string) => void;
|
|
12
13
|
readonly children?: React.ReactNode;
|
|
13
14
|
}
|
|
14
|
-
export declare const VertexSceneTree: ({ id, font, backgroundColors, children, style, onPointerDown, onClick, onToggleSelection, onToggleExpansion, onToggleVisibility, className, rowData, ...sdkProps }: Props & React.ComponentProps<typeof SdkVertexSceneTree>) => JSX.Element;
|
|
15
|
+
export declare const VertexSceneTree: ({ id, font, backgroundColors, children, style, onPointerDown, onClick, onToggleSelection, onToggleExpansion, onToggleVisibility, onCopyMetadataValue, className, rowData, ...sdkProps }: Props & React.ComponentProps<typeof SdkVertexSceneTree>) => JSX.Element;
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface VertexViewerRightOpenedPanelProps {
|
|
3
|
+
readonly children?: Array<React.ReactElement<CustomPanelContentProps>> | React.ReactElement<CustomPanelContentProps>;
|
|
4
|
+
}
|
|
5
|
+
export declare function VertexViewerRightOpenedPanel({ children, }: VertexViewerRightOpenedPanelProps): JSX.Element;
|
|
6
|
+
export declare namespace VertexViewerRightOpenedPanel {
|
|
7
|
+
var CustomPanelContent: ({ panelName, children, }: CustomPanelContentProps) => JSX.Element;
|
|
8
|
+
}
|
|
9
|
+
interface CustomPanelContentProps {
|
|
10
|
+
readonly panelName: string;
|
|
11
|
+
readonly panelTitle: string;
|
|
12
|
+
readonly children: React.ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export declare const APPEARANCE_HEADING = "Appearance";
|
|
2
2
|
export declare const SETTINGS_HEADING = "Settings";
|
|
3
3
|
export declare const TRANSFORMS_HEADING = "Transforms";
|
|
4
|
-
export
|
|
4
|
+
export interface ViewerRightPanelHeaderProps {
|
|
5
|
+
readonly additionalHeaderMap?: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export declare const ViewerRightPanelHeader: ({ additionalHeaderMap, }: ViewerRightPanelHeaderProps) => JSX.Element;
|
|
@@ -1 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
import { IconName } from '@vertexvis/ui/dist/types/types/icon';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Props as SidebarIconProps } from '../sidebar-icon';
|
|
4
|
+
export interface VertexViewerRightSidebarProps {
|
|
5
|
+
readonly children?: Array<React.ReactElement<CustomPanelIconProps>> | React.ReactElement<CustomPanelIconProps>;
|
|
6
|
+
}
|
|
7
|
+
export declare function VertexViewerRightSidebar({ children, }: VertexViewerRightSidebarProps): JSX.Element;
|
|
8
|
+
export declare namespace VertexViewerRightSidebar {
|
|
9
|
+
var CustomPanelIcon: (props: CustomPanelIconProps) => JSX.Element;
|
|
10
|
+
}
|
|
11
|
+
type CustomPanelIconProps = Omit<SidebarIconProps, 'name' | 'active' | 'content' | 'iconName' | 'onSelect' | 'onDeselect'> & {
|
|
12
|
+
panelName: string;
|
|
13
|
+
tooltipContent: string;
|
|
14
|
+
iconName?: IconName;
|
|
15
|
+
children?: React.ReactNode;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { Transform } from '@vertexvis/viewer';
|
|
1
2
|
export interface Props {
|
|
2
3
|
onToggleTransformsManipulator?: (enabled: boolean) => void;
|
|
4
|
+
onUpdateTransform?: (transform: Transform) => void;
|
|
3
5
|
}
|
|
4
|
-
export declare function VertexTransformControls({ onToggleTransformsManipulator, }: Props): JSX.Element;
|
|
6
|
+
export declare function VertexTransformControls({ onToggleTransformsManipulator, onUpdateTransform, }: Props): JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface Props {
|
|
3
|
+
bottomLabel?: string;
|
|
4
|
+
value?: number;
|
|
5
|
+
step?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
testId?: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
11
|
+
onInput?: (e: React.FormEvent<HTMLInputElement>) => void;
|
|
12
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const VertexTransformNumericField: ({ bottomLabel, value, step, min, max, disabled, testId, onBlur, onInput, onChange, }: Props) => JSX.Element;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { Transform } from '@vertexvis/viewer';
|
|
1
2
|
export interface Props {
|
|
2
3
|
onClearTransforms?: VoidFunction;
|
|
3
4
|
onClearAllTransforms?: VoidFunction;
|
|
4
5
|
onToggleTransformsManipulator?: (enabled: boolean) => void;
|
|
6
|
+
onUpdateTransform?: (transform: Transform) => void;
|
|
5
7
|
}
|
|
6
|
-
export declare function VertexTransformPanelSection({ onClearTransforms, onClearAllTransforms, onToggleTransformsManipulator, }: Props): JSX.Element;
|
|
8
|
+
export declare function VertexTransformPanelSection({ onClearTransforms, onClearAllTransforms, onToggleTransformsManipulator, onUpdateTransform, }: Props): JSX.Element;
|
package/dist/index.css
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! tailwindcss v4.0.14 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-neutral-100:oklch(0.97 0 0);--color-neutral-200:oklch(0.922 0 0);--color-neutral-300:oklch(0.87 0 0);--color-neutral-400:oklch(0.708 0 0);--color-neutral-500:oklch(0.556 0 0);--color-neutral-600:oklch(0.439 0 0);--color-neutral-700:oklch(0.371 0 0);--color-neutral-800:oklch(0.269 0 0);--color-neutral-900:oklch(0.205 0 0);--color-white:#fff;--spacing:0.25rem;--container-lg:32rem;--text-xs:0.75rem;--text-xs--line-height:1.33333;--text-sm:0.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--font-weight-medium:500;--radius-md:0.375rem;--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(
|
|
1
|
+
/*! tailwindcss v4.0.14 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(0.936 0.032 17.717);--color-orange-100:oklch(0.954 0.038 75.164);--color-green-700:oklch(0.527 0.154 150.069);--color-neutral-100:oklch(0.97 0 0);--color-neutral-200:oklch(0.922 0 0);--color-neutral-300:oklch(0.87 0 0);--color-neutral-400:oklch(0.708 0 0);--color-neutral-500:oklch(0.556 0 0);--color-neutral-600:oklch(0.439 0 0);--color-neutral-700:oklch(0.371 0 0);--color-neutral-800:oklch(0.269 0 0);--color-neutral-900:oklch(0.205 0 0);--color-white:#fff;--spacing:0.25rem;--container-lg:32rem;--text-xs:0.75rem;--text-xs--line-height:1.33333;--text-sm:0.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--font-weight-medium:500;--radius-md:0.375rem;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(
|
|
2
2
|
--font-sans--font-variation-settings
|
|
3
3
|
);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(
|
|
4
4
|
--font-mono--font-feature-settings
|
|
5
5
|
);--default-mono-font-variation-settings:var(
|
|
6
6
|
--font-mono--font-variation-settings
|
|
7
|
-
)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:var(--default-font-feature-settings,normal);-webkit-tap-highlight-color:transparent;font-family:var( --default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji" );font-variation-settings:var( --default-font-variation-settings,normal );line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:var( --default-mono-font-feature-settings,normal );font-family:var( --default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace );font-size:1em;font-variation-settings:var( --default-mono-font-variation-settings,normal )}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{font-feature-settings:inherit;background-color:transparent;border-radius:0;color:inherit;font:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{color:color-mix(in oklab,currentColor 50%,transparent);opacity:1}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-3{bottom:calc(var(--spacing)*3)}.z-\[16000\]{z-index:16000}.m-7{margin:calc(var(--spacing)*7)}.mx-0\.5{margin-inline:calc(var(--spacing)*.5)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-8{margin-top:calc(var(--spacing)*8)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.-ml-px{margin-left:-1px}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.table{display:table}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-6{height:calc(var(--spacing)*6)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-full{height:100%}.max-h-64{max-height:calc(var(--spacing)*64)}.min-h-12{min-height:calc(var(--spacing)*12)}.w-6{width:calc(var(--spacing)*6)}.w-12{width:calc(var(--spacing)*12)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-lg{max-width:var(--container-lg)}.min-w-12{min-width:calc(var(--spacing)*12)}.min-w-40{min-width:calc(var(--spacing)*40)}.min-w-75{min-width:calc(var(--spacing)*75)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.flex-grow-0{flex-grow:0}.transform{transform:var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y)}.cursor-crosshair{cursor:crosshair}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-evenly{justify-content:space-evenly}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.space-x-2{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}}.space-x-4{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}}.gap-y-1\.5{row-gap:calc(var(--spacing)*1.5)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap}.overflow-hidden,.truncate{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-300{border-color:var(--color-neutral-300)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-neutral-600{background-color:var(--color-neutral-600)}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-3{padding:calc(var(--spacing)*3)}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pl-0\.5{padding-left:calc(var(--spacing)*.5)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-right{text-align:right}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.875rem\]{font-size:.875rem}.text-\[0\.8125rem\]{font-size:.8125rem}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--vertex-ui-blue-700\)\]{color:var(--vertex-ui-blue-700)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-neutral-900{color:var(--color-neutral-900)}.opacity-70{opacity:70%}.opacity-95{opacity:95%}.opacity-100{opacity:100%}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color,currentColor)}.ring-0,.ring-1{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentColor)}.ring-neutral-200{--tw-ring-color:var(--color-neutral-200)}.blur{--tw-blur:blur(8px)}.blur,.invert{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.select-none{-webkit-user-select:none;user-select:none}.hover\:bg-neutral-200{&:hover{@media (hover:hover){background-color:var(--color-neutral-200)}}}.hover\:bg-neutral-300{&:hover{@media (hover:hover){background-color:var(--color-neutral-300)}}}.hover\:text-neutral-700{&:hover{@media (hover:hover){color:var(--color-neutral-700)}}}.hover\:text-neutral-800{&:hover{@media (hover:hover){color:var(--color-neutral-800)}}}.hover\:opacity-100{&:hover{@media (hover:hover){opacity:100%}}}.active\:bg-neutral-400{&:active{background-color:var(--color-neutral-400)}}.md\:hidden,.md\:p-3,.md\:pointer-events-auto{@media (width >= 48rem){padding:calc(var(--spacing)*3)}}}:root{--white:#fff;--black:#000;--neutral-050:#fafafa;--neutral-100:#f5f5f5;--neutral-200:#eee;--neutral-300:#e0e0e0;--neutral-400:#bdbdbd;--neutral-500:#9e9e9e;--neutral-600:#757575;--neutral-700:#616161;--neutral-800:#444;--neutral-900:#212121;--red-050:#fff7f7;--red-100:#ffefef;--red-200:#ffe0e0;--red-300:#ffb3b3;--red-400:#ff4d4d;--red-500:red;--red-600:#eb0000;--red-700:#d90000;--red-800:#c40000;--red-900:#900;--orange-050:#fffcf7;--orange-100:#fff9ef;--orange-200:#fff3e0;--orange-300:#ffe0b3;--orange-400:#ffb84d;--orange-500:#f90;--orange-600:#ff8400;--orange-700:#ff7300;--orange-800:#e05d00;--orange-900:#993b00;--yellow-050:#fffef7;--yellow-100:#fffdef;--yellow-200:#fffbe0;--yellow-300:#fff5b3;--yellow-400:#ffee6e;--yellow-500:#ffe600;--yellow-600:#ffd300;--yellow-700:#ffc500;--yellow-800:#cc8f00;--yellow-900:#995c00;--green-050:#f7fdf7;--green-100:#effcef;--green-200:#e0f9e0;--green-300:#b3f0b3;--green-400:#4ddb4d;--green-500:#0c0;--green-600:#00c000;--green-700:#00ad00;--green-800:green;--green-900:#004d00;--teal-050:#f8fdfc;--teal-100:#f1fbfa;--teal-200:#e4f7f5;--teal-300:#bcece7;--teal-400:#62d2c7;--teal-500:#1fbeaf;--teal-600:#17af9f;--teal-700:#0a9986;--teal-800:#07705f;--teal-900:#054d43;--blue-050:#f7fcfd;--blue-100:#eff9fc;--blue-200:#e0f3f9;--blue-300:#b3e0f0;--blue-400:#4db8db;--blue-500:#09c;--blue-600:#0086c0;--blue-700:#006bad;--blue-800:#004f80;--blue-900:#002f4d;--purple-050:#fdf9fc;--purple-100:#faf2f8;--purple-200:#f6e6f2;--purple-300:#e9c2e0;--purple-400:#cb70b6;--purple-500:#b43296;--purple-600:#a42683;--purple-700:#8c1368;--purple-800:#66124b;--purple-900:#4d0b39;--x-axis-color:#ea3324;--y-axis-color:#4faf32;--z-axis-color:#00f}vertex-viewer-dom-renderer{visibility:hidden}vertex-viewer-dom-renderer.hydrated{visibility:inherit}vertex-scene-tree-toolbar{visibility:hidden}vertex-scene-tree-toolbar.hydrated{visibility:inherit}vertex-viewer-toolbar{visibility:hidden}vertex-viewer-toolbar.hydrated{visibility:inherit}:root{--padding-1:0.25em;--padding-2:0.5em;--padding-3:0.75em;--padding-4:1em;--padding-5:1.25em;--padding-6:1.5em;--padding-7:1.75em;--padding-8:2em;--abs-padding-1:0.25rem;--abs-padding-2:0.5rem;--abs-padding-3:0.75rem;--abs-padding-4:1rem;--abs-padding-5:1.25rem;--abs-padding-6:1.5rem;--abs-padding-7:1.75rem;--abs-padding-8:2rem}.sc-vertex-textfield-h{display:block}.txt-wrapper{align-items:center;background:none;box-sizing:border-box;display:flex;font-family:var(--vertex-ui-font-family);line-height:1.4;width:100%}.txt-wrapper-border{border:1px solid transparent;border-radius:4px}.txt-slot{padding-bottom:1px}.txt{background:none;border:1px solid transparent;border-radius:4px;box-sizing:border-box;font-family:var(--vertex-ui-font-family);font-weight:var(--vertex-ui-font-weight-base);line-height:1.4;padding:6px .5em 7px;text-overflow:ellipsis;width:100%}.txt:focus{outline:none}.txt-textarea{box-shadow:none;outline:none;overflow:hidden;resize:none}.txt:-webkit-autofill{animation-name:onAutoFillStart}.txt:not(.txt:-webkit-autofill){animation-name:onAutoFillCancel}.txt-standard{border-color:var(--vertex-ui-neutral-400);color:var(--vertex-ui-neutral-800)}.txt-standard .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-standard:focus,.txt-standard:hover:not(.disabled){border-color:var(--vertex-ui-neutral-500)}.txt-standard.disabled{border-color:var(--vertex-ui-neutral-200)}.txt-standard.disabled,.txt-standard.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-blank{color:var(--vertex-ui-neutral-800)}.txt-blank:not(:hover) .txt:focus{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-blank .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-blank:hover:not(.disabled) .txt{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-filled{background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);color:var(--vertex-ui-neutral-800)}.txt-filled .txt::placeholder{color:var(--vertex-ui-neutral-700)}.txt-filled:focus,.txt-filled:hover:not(.disabled){border-bottom-color:var(--vertex-ui-blue-600)}.txt-filled.disabled{border-color:var(--vertex-ui-neutral-100)}.txt-filled.disabled,.txt-filled.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined{background-color:var(--vertex-ui-white);border-color:var(--vertex-ui-white) var(--vertex-ui-white) var(--vertex-ui-neutral-400) var(--vertex-ui-white);color:var(--vertex-ui-neutral-800)}.txt-underlined.disabled,.txt-underlined.disabled::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined::placeholder{color:var(--vertex-ui-neutral-700)}.txt-underlined:focus,.txt-underlined:hover:not(.disabled){background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);border-bottom-color:var(--vertex-ui-blue-600)}.txt-underlined.disabled{border-bottom-color:var(--vertex-ui-neutral-200)}.txt-underlined.disabled,.txt-underlined.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined.has-error{border-bottom-color:var(--vertex-ui-red-600)}.txt-blank.has-error,.txt-filled.has-error,.txt-standard.has-error{border-color:var(--vertex-ui-red-600)}.txt-size-standard{font-size:var(--vertex-ui-text-base)}.txt-size-sm{font-size:var(--vertex-ui-text-sm)}.txt-size-md{font-size:var(--vertex-ui-text-md)}.txt-size-lg{font-size:var(--vertex-ui-text-lg)}.txt-size-xl{font-size:var(--vertex-ui-text-xl)}.txt-size-xxl{font-size:var(--vertex-ui-text-xxl)}.click-to-edit{display:flex;flex-direction:row}.click-to-edit-text{width:100%}.icon-visibility{display:none}.click-to-edit:not(.disabled):hover .icon-visibility{display:block}.click-to-edit-icon-wrapper{align-items:center;display:flex;flex-shrink:0;margin-left:5px;vertical-align:middle}.hover-icon slot::slotted(*){height:1rem;padding-left:.5rem;width:1rem}.click-to-edit-button{background-color:var(--neutral-200);border-radius:4px;color:var(--green-700)}.click-to-edit-button:hover{background-color:var(--neutral-300);color:var(--green-800)}vertex-tooltip:not(.hydrated){display:none}.vertex-tooltip-popover{height:100%;width:100%}.vertex-tooltip-content{background-color:var(--vertex-ui-neutral-700);border-radius:4px;color:var(--vertex-ui-white);display:flex;font-family:var(--vertex-ui-font-family);font-size:var(--vertex-ui-text-xxs);justify-content:center;padding:.25rem .5rem;pointer-events:none;text-align:center;user-select:none;white-space:var(--tooltip-white-space);width:var(--tooltip-width)}:root{--vertex-ui-white:#fff;--vertex-ui-black:#000;--vertex-ui-neutral-050:#fafafa;--vertex-ui-neutral-100:#f5f5f5;--vertex-ui-neutral-200:#eee;--vertex-ui-neutral-300:#e0e0e0;--vertex-ui-neutral-400:#bdbdbd;--vertex-ui-neutral-500:#9e9e9e;--vertex-ui-neutral-600:#757575;--vertex-ui-neutral-700:#616161;--vertex-ui-neutral-800:#444;--vertex-ui-neutral-900:#212121;--vertex-ui-red-050:#fff7f7;--vertex-ui-red-100:#ffefef;--vertex-ui-red-200:#ffe0e0;--vertex-ui-red-300:#ffb3b3;--vertex-ui-red-400:#ff4d4d;--vertex-ui-red-500:red;--vertex-ui-red-600:#eb0000;--vertex-ui-red-700:#d90000;--vertex-ui-red-800:#c40000;--vertex-ui-red-900:#900;--vertex-ui-orange-050:#fffcf7;--vertex-ui-orange-100:#fff9ef;--vertex-ui-orange-200:#fff3e0;--vertex-ui-orange-300:#ffe0b3;--vertex-ui-orange-400:#ffb84d;--vertex-ui-orange-500:#f90;--vertex-ui-orange-600:#ff8400;--vertex-ui-orange-700:#ff7300;--vertex-ui-orange-800:#e05d00;--vertex-ui-orange-900:#993b00;--vertex-ui-yellow-050:#fffef7;--vertex-ui-yellow-100:#fffdef;--vertex-ui-yellow-200:#fffbe0;--vertex-ui-yellow-300:#fff5b3;--vertex-ui-yellow-400:#ffee6e;--vertex-ui-yellow-500:#ffe600;--vertex-ui-yellow-600:#ffd300;--vertex-ui-yellow-700:#ffc500;--vertex-ui-yellow-800:#cc8f00;--vertex-ui-yellow-900:#995c00;--vertex-ui-green-050:#f7fdf7;--vertex-ui-green-100:#effcef;--vertex-ui-green-200:#e0f9e0;--vertex-ui-green-300:#b3f0b3;--vertex-ui-green-400:#4ddb4d;--vertex-ui-green-500:#0c0;--vertex-ui-green-600:#00c000;--vertex-ui-green-700:#00ad00;--vertex-ui-green-800:green;--vertex-ui-green-900:#004d00;--vertex-ui-teal-050:#f8fdfc;--vertex-ui-teal-100:#f1fbfa;--vertex-ui-teal-200:#e4f7f5;--vertex-ui-teal-300:#bcece7;--vertex-ui-teal-400:#62d2c7;--vertex-ui-teal-500:#1fbeaf;--vertex-ui-teal-600:#17af9f;--vertex-ui-teal-700:#0a9986;--vertex-ui-teal-800:#07705f;--vertex-ui-teal-900:#054d43;--vertex-ui-blue-050:#f7fcfd;--vertex-ui-blue-100:#eff9fc;--vertex-ui-blue-200:#e0f3f9;--vertex-ui-blue-300:#b3e0f0;--vertex-ui-blue-400:#4db8db;--vertex-ui-blue-500:#09c;--vertex-ui-blue-600:#0086c0;--vertex-ui-blue-700:#006bad;--vertex-ui-blue-800:#004f80;--vertex-ui-blue-900:#002f4d;--vertex-ui-purple-050:#fdf9fc;--vertex-ui-purple-100:#faf2f8;--vertex-ui-purple-200:#f6e6f2;--vertex-ui-purple-300:#e9c2e0;--vertex-ui-purple-400:#cb70b6;--vertex-ui-purple-500:#b43296;--vertex-ui-purple-600:#a42683;--vertex-ui-purple-700:#8c1368;--vertex-ui-purple-800:#66124b;--vertex-ui-purple-900:#4d0b39;--vertex-ui-text-t:0.5625rem;--vertex-ui-text-xxs:0.625rem;--vertex-ui-text-xs:0.75rem;--vertex-ui-text-sm:0.8125rem;--vertex-ui-text-base:0.875rem;--vertex-ui-text-md:0.9375rem;--vertex-ui-text-lg:1rem;--vertex-ui-text-xl:1.125rem;--vertex-ui-text-xxl:1.25rem;--vertex-ui-font-weight-light:300;--vertex-ui-font-weight-base:400;--vertex-ui-font-weight-medium:500;--vertex-ui-font-weight-bold:700;--vertex-ui-font-family:"Roboto","Helvetica Neue",Helvetica,sans-serif;--vertex-ui-font-family-monospace:"Roboto Mono","Helvetica Monospaced",monospace;--vertex-ui-popover-layer:2000;--vertex-ui-context-menu-layer:11000;--vertex-ui-dialog-layer:15000;--vertex-ui-overlay-shadow:-1px 0 2px rgba(0,0,0,.12),1px 0 2px rgba(0,0,0,.13)}@media (min-width:812px){:root{--vertex-ui-min-dialog-width:700px;--vertex-ui-min-dialog-height:500px}}.filtered vertex-scene-tree-table-cell:not([is-filter-hit]){color:var(--color-neutral-500)}vertex-resizable.sheet{--hover-shadow-color:transparent;--vertical-handle-size:3rem;--vertical-handle-offset:0;--side-direction-handle-z-index:1;touch-action:none}vertex-resizable:not([dimensions-computed]){display:none}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}
|
|
7
|
+
)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:var(--default-font-feature-settings,normal);-webkit-tap-highlight-color:transparent;font-family:var( --default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji" );font-variation-settings:var( --default-font-variation-settings,normal );line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:var( --default-mono-font-feature-settings,normal );font-family:var( --default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace );font-size:1em;font-variation-settings:var( --default-mono-font-variation-settings,normal )}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{font-feature-settings:inherit;background-color:transparent;border-radius:0;color:inherit;font:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{color:color-mix(in oklab,currentColor 50%,transparent);opacity:1}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-3{bottom:calc(var(--spacing)*3)}.z-\[16000\]{z-index:16000}.m-7{margin:calc(var(--spacing)*7)}.mx-0\.5{margin-inline:calc(var(--spacing)*.5)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.-ml-px{margin-left:-1px}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.table{display:table}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1\/2{height:50%}.h-6{height:calc(var(--spacing)*6)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-fit{height:fit-content}.h-full{height:100%}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-full{max-height:100%}.min-h-12{min-height:calc(var(--spacing)*12)}.min-h-20{min-height:calc(var(--spacing)*20)}.min-h-32{min-height:calc(var(--spacing)*32)}.w-1\/2{width:50%}.w-6{width:calc(var(--spacing)*6)}.w-12{width:calc(var(--spacing)*12)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-26{width:calc(var(--spacing)*26)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.min-w-12{min-width:calc(var(--spacing)*12)}.min-w-24{min-width:calc(var(--spacing)*24)}.min-w-40{min-width:calc(var(--spacing)*40)}.min-w-75{min-width:calc(var(--spacing)*75)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.flex-grow-0,.grow-0{flex-grow:0}.transform{transform:var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-crosshair{cursor:crosshair}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-evenly{justify-content:space-evenly}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.space-x-2{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}}.space-x-4{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}}.gap-y-1\.5{row-gap:calc(var(--spacing)*1.5)}.self-center{align-self:center}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-300{border-color:var(--color-neutral-300)}.border-neutral-400{border-color:var(--color-neutral-400)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-neutral-600{background-color:var(--color-neutral-600)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-3{padding:calc(var(--spacing)*3)}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-0\.5{padding-left:calc(var(--spacing)*.5)}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.875rem\]{font-size:.875rem}.text-\[0\.8125rem\]{font-size:.8125rem}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--vertex-ui-blue-700\)\]{color:var(--vertex-ui-blue-700)}.text-green-700{color:var(--color-green-700)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-neutral-900{color:var(--color-neutral-900)}.opacity-70{opacity:70%}.opacity-95{opacity:95%}.opacity-100{opacity:100%}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color,currentColor)}.ring-0,.ring-1{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentColor)}.ring-neutral-200{--tw-ring-color:var(--color-neutral-200)}.blur{--tw-blur:blur(8px)}.blur,.invert{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.select-none{-webkit-user-select:none;user-select:none}.hover\:border-neutral-500{&:hover{@media (hover:hover){border-color:var(--color-neutral-500)}}}.hover\:bg-neutral-200{&:hover{@media (hover:hover){background-color:var(--color-neutral-200)}}}.hover\:bg-neutral-300{&:hover{@media (hover:hover){background-color:var(--color-neutral-300)}}}.hover\:text-neutral-700{&:hover{@media (hover:hover){color:var(--color-neutral-700)}}}.hover\:text-neutral-800{&:hover{@media (hover:hover){color:var(--color-neutral-800)}}}.hover\:opacity-100{&:hover{@media (hover:hover){opacity:100%}}}.focus\:border-neutral-500{&:focus{border-color:var(--color-neutral-500)}}.focus\:outline-none{&:focus{--tw-outline-style:none;outline-style:none}}.active\:bg-neutral-400{&:active{background-color:var(--color-neutral-400)}}.md\:hidden,.md\:p-3,.md\:pointer-events-auto{@media (width >= 48rem){padding:calc(var(--spacing)*3)}}}:root{--white:#fff;--black:#000;--neutral-050:#fafafa;--neutral-100:#f5f5f5;--neutral-200:#eee;--neutral-300:#e0e0e0;--neutral-400:#bdbdbd;--neutral-500:#9e9e9e;--neutral-600:#757575;--neutral-700:#616161;--neutral-800:#444;--neutral-900:#212121;--red-050:#fff7f7;--red-100:#ffefef;--red-200:#ffe0e0;--red-300:#ffb3b3;--red-400:#ff4d4d;--red-500:red;--red-600:#eb0000;--red-700:#d90000;--red-800:#c40000;--red-900:#900;--orange-050:#fffcf7;--orange-100:#fff9ef;--orange-200:#fff3e0;--orange-300:#ffe0b3;--orange-400:#ffb84d;--orange-500:#f90;--orange-600:#ff8400;--orange-700:#ff7300;--orange-800:#e05d00;--orange-900:#993b00;--yellow-050:#fffef7;--yellow-100:#fffdef;--yellow-200:#fffbe0;--yellow-300:#fff5b3;--yellow-400:#ffee6e;--yellow-500:#ffe600;--yellow-600:#ffd300;--yellow-700:#ffc500;--yellow-800:#cc8f00;--yellow-900:#995c00;--green-050:#f7fdf7;--green-100:#effcef;--green-200:#e0f9e0;--green-300:#b3f0b3;--green-400:#4ddb4d;--green-500:#0c0;--green-600:#00c000;--green-700:#00ad00;--green-800:green;--green-900:#004d00;--teal-050:#f8fdfc;--teal-100:#f1fbfa;--teal-200:#e4f7f5;--teal-300:#bcece7;--teal-400:#62d2c7;--teal-500:#1fbeaf;--teal-600:#17af9f;--teal-700:#0a9986;--teal-800:#07705f;--teal-900:#054d43;--blue-050:#f7fcfd;--blue-100:#eff9fc;--blue-200:#e0f3f9;--blue-300:#b3e0f0;--blue-400:#4db8db;--blue-500:#09c;--blue-600:#0086c0;--blue-700:#006bad;--blue-800:#004f80;--blue-900:#002f4d;--purple-050:#fdf9fc;--purple-100:#faf2f8;--purple-200:#f6e6f2;--purple-300:#e9c2e0;--purple-400:#cb70b6;--purple-500:#b43296;--purple-600:#a42683;--purple-700:#8c1368;--purple-800:#66124b;--purple-900:#4d0b39;--x-axis-color:#ea3324;--y-axis-color:#4faf32;--z-axis-color:#00f}vertex-viewer-dom-renderer{visibility:hidden}vertex-viewer-dom-renderer.hydrated{visibility:inherit}vertex-scene-tree-toolbar{visibility:hidden}vertex-scene-tree-toolbar.hydrated{visibility:inherit}vertex-viewer-toolbar{visibility:hidden}vertex-viewer-toolbar.hydrated{visibility:inherit}:root{--padding-1:0.25em;--padding-2:0.5em;--padding-3:0.75em;--padding-4:1em;--padding-5:1.25em;--padding-6:1.5em;--padding-7:1.75em;--padding-8:2em;--abs-padding-1:0.25rem;--abs-padding-2:0.5rem;--abs-padding-3:0.75rem;--abs-padding-4:1rem;--abs-padding-5:1.25rem;--abs-padding-6:1.5rem;--abs-padding-7:1.75rem;--abs-padding-8:2rem}.sc-vertex-textfield-h{display:block}.txt-wrapper{align-items:center;background:none;box-sizing:border-box;display:flex;font-family:var(--vertex-ui-font-family);line-height:1.4;width:100%}.txt-wrapper-border{border:1px solid transparent;border-radius:4px}.txt-slot{padding-bottom:1px}.txt{background:none;border:1px solid transparent;border-radius:4px;box-sizing:border-box;font-family:var(--vertex-ui-font-family);font-weight:var(--vertex-ui-font-weight-base);line-height:1.4;padding:6px .5em 7px;text-overflow:ellipsis;width:100%}.txt:focus{outline:none}.txt-textarea{box-shadow:none;outline:none;overflow:hidden;resize:none}.txt:-webkit-autofill{animation-name:onAutoFillStart}.txt:not(.txt:-webkit-autofill){animation-name:onAutoFillCancel}.txt-standard{border-color:var(--vertex-ui-neutral-400);color:var(--vertex-ui-neutral-800)}.txt-standard .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-standard:focus,.txt-standard:hover:not(.disabled){border-color:var(--vertex-ui-neutral-500)}.txt-standard.disabled{border-color:var(--vertex-ui-neutral-200)}.txt-standard.disabled,.txt-standard.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-blank{color:var(--vertex-ui-neutral-800)}.txt-blank:not(:hover) .txt:focus{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-blank .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-blank:hover:not(.disabled) .txt{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-filled{background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);color:var(--vertex-ui-neutral-800)}.txt-filled .txt::placeholder{color:var(--vertex-ui-neutral-700)}.txt-filled:focus,.txt-filled:hover:not(.disabled){border-bottom-color:var(--vertex-ui-blue-600)}.txt-filled.disabled{border-color:var(--vertex-ui-neutral-100)}.txt-filled.disabled,.txt-filled.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined{background-color:var(--vertex-ui-white);border-color:var(--vertex-ui-white) var(--vertex-ui-white) var(--vertex-ui-neutral-400) var(--vertex-ui-white);color:var(--vertex-ui-neutral-800)}.txt-underlined.disabled,.txt-underlined.disabled::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined::placeholder{color:var(--vertex-ui-neutral-700)}.txt-underlined:focus,.txt-underlined:hover:not(.disabled){background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);border-bottom-color:var(--vertex-ui-blue-600)}.txt-underlined.disabled{border-bottom-color:var(--vertex-ui-neutral-200)}.txt-underlined.disabled,.txt-underlined.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined.has-error{border-bottom-color:var(--vertex-ui-red-600)}.txt-blank.has-error,.txt-filled.has-error,.txt-standard.has-error{border-color:var(--vertex-ui-red-600)}.txt-size-standard{font-size:var(--vertex-ui-text-base)}.txt-size-sm{font-size:var(--vertex-ui-text-sm)}.txt-size-md{font-size:var(--vertex-ui-text-md)}.txt-size-lg{font-size:var(--vertex-ui-text-lg)}.txt-size-xl{font-size:var(--vertex-ui-text-xl)}.txt-size-xxl{font-size:var(--vertex-ui-text-xxl)}.click-to-edit{display:flex;flex-direction:row}.click-to-edit-text{width:100%}.icon-visibility{display:none}.click-to-edit:not(.disabled):hover .icon-visibility{display:block}.click-to-edit-icon-wrapper{align-items:center;display:flex;flex-shrink:0;margin-left:5px;vertical-align:middle}.hover-icon slot::slotted(*){height:1rem;padding-left:.5rem;width:1rem}.click-to-edit-button{background-color:var(--neutral-200);border-radius:4px;color:var(--green-700)}.click-to-edit-button:hover{background-color:var(--neutral-300);color:var(--green-800)}vertex-tooltip:not(.hydrated){display:none}.vertex-tooltip-popover{height:100%;width:100%}.vertex-tooltip-content{background-color:var(--vertex-ui-neutral-700);border-radius:4px;color:var(--vertex-ui-white);display:flex;font-family:var(--vertex-ui-font-family);font-size:var(--vertex-ui-text-xxs);justify-content:center;padding:.25rem .5rem;pointer-events:none;text-align:center;user-select:none;white-space:var(--tooltip-white-space);width:var(--tooltip-width)}:root{--vertex-ui-white:#fff;--vertex-ui-black:#000;--vertex-ui-neutral-050:#fafafa;--vertex-ui-neutral-100:#f5f5f5;--vertex-ui-neutral-200:#eee;--vertex-ui-neutral-300:#e0e0e0;--vertex-ui-neutral-400:#bdbdbd;--vertex-ui-neutral-500:#9e9e9e;--vertex-ui-neutral-600:#757575;--vertex-ui-neutral-700:#616161;--vertex-ui-neutral-800:#444;--vertex-ui-neutral-900:#212121;--vertex-ui-red-050:#fff7f7;--vertex-ui-red-100:#ffefef;--vertex-ui-red-200:#ffe0e0;--vertex-ui-red-300:#ffb3b3;--vertex-ui-red-400:#ff4d4d;--vertex-ui-red-500:red;--vertex-ui-red-600:#eb0000;--vertex-ui-red-700:#d90000;--vertex-ui-red-800:#c40000;--vertex-ui-red-900:#900;--vertex-ui-orange-050:#fffcf7;--vertex-ui-orange-100:#fff9ef;--vertex-ui-orange-200:#fff3e0;--vertex-ui-orange-300:#ffe0b3;--vertex-ui-orange-400:#ffb84d;--vertex-ui-orange-500:#f90;--vertex-ui-orange-600:#ff8400;--vertex-ui-orange-700:#ff7300;--vertex-ui-orange-800:#e05d00;--vertex-ui-orange-900:#993b00;--vertex-ui-yellow-050:#fffef7;--vertex-ui-yellow-100:#fffdef;--vertex-ui-yellow-200:#fffbe0;--vertex-ui-yellow-300:#fff5b3;--vertex-ui-yellow-400:#ffee6e;--vertex-ui-yellow-500:#ffe600;--vertex-ui-yellow-600:#ffd300;--vertex-ui-yellow-700:#ffc500;--vertex-ui-yellow-800:#cc8f00;--vertex-ui-yellow-900:#995c00;--vertex-ui-green-050:#f7fdf7;--vertex-ui-green-100:#effcef;--vertex-ui-green-200:#e0f9e0;--vertex-ui-green-300:#b3f0b3;--vertex-ui-green-400:#4ddb4d;--vertex-ui-green-500:#0c0;--vertex-ui-green-600:#00c000;--vertex-ui-green-700:#00ad00;--vertex-ui-green-800:green;--vertex-ui-green-900:#004d00;--vertex-ui-teal-050:#f8fdfc;--vertex-ui-teal-100:#f1fbfa;--vertex-ui-teal-200:#e4f7f5;--vertex-ui-teal-300:#bcece7;--vertex-ui-teal-400:#62d2c7;--vertex-ui-teal-500:#1fbeaf;--vertex-ui-teal-600:#17af9f;--vertex-ui-teal-700:#0a9986;--vertex-ui-teal-800:#07705f;--vertex-ui-teal-900:#054d43;--vertex-ui-blue-050:#f7fcfd;--vertex-ui-blue-100:#eff9fc;--vertex-ui-blue-200:#e0f3f9;--vertex-ui-blue-300:#b3e0f0;--vertex-ui-blue-400:#4db8db;--vertex-ui-blue-500:#09c;--vertex-ui-blue-600:#0086c0;--vertex-ui-blue-700:#006bad;--vertex-ui-blue-800:#004f80;--vertex-ui-blue-900:#002f4d;--vertex-ui-purple-050:#fdf9fc;--vertex-ui-purple-100:#faf2f8;--vertex-ui-purple-200:#f6e6f2;--vertex-ui-purple-300:#e9c2e0;--vertex-ui-purple-400:#cb70b6;--vertex-ui-purple-500:#b43296;--vertex-ui-purple-600:#a42683;--vertex-ui-purple-700:#8c1368;--vertex-ui-purple-800:#66124b;--vertex-ui-purple-900:#4d0b39;--vertex-ui-text-t:0.5625rem;--vertex-ui-text-xxs:0.625rem;--vertex-ui-text-xs:0.75rem;--vertex-ui-text-sm:0.8125rem;--vertex-ui-text-base:0.875rem;--vertex-ui-text-md:0.9375rem;--vertex-ui-text-lg:1rem;--vertex-ui-text-xl:1.125rem;--vertex-ui-text-xxl:1.25rem;--vertex-ui-font-weight-light:300;--vertex-ui-font-weight-base:400;--vertex-ui-font-weight-medium:500;--vertex-ui-font-weight-bold:700;--vertex-ui-font-family:"Roboto","Helvetica Neue",Helvetica,sans-serif;--vertex-ui-font-family-monospace:"Roboto Mono","Helvetica Monospaced",monospace;--vertex-ui-popover-layer:2000;--vertex-ui-context-menu-layer:11000;--vertex-ui-dialog-layer:15000;--vertex-ui-overlay-shadow:-1px 0 2px rgba(0,0,0,.12),1px 0 2px rgba(0,0,0,.13)}@media (min-width:812px){:root{--vertex-ui-min-dialog-width:700px;--vertex-ui-min-dialog-height:500px}}.filtered vertex-scene-tree-table-cell:not([is-filter-hit]){color:var(--color-neutral-500)}vertex-resizable.sheet{--hover-shadow-color:transparent;--vertical-handle-size:3rem;--vertical-handle-offset:0;--side-direction-handle-z-index:1;touch-action:none}vertex-resizable:not([dimensions-computed]){display:none}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ import { VertexHideSelectedMenuItem } from './components/context-menu/menu-items
|
|
|
34
34
|
import { VertexShowAllMenuItem } from './components/context-menu/menu-items/show-all-menu-item';
|
|
35
35
|
import { VertexShowOnlyMenuItem } from './components/context-menu/menu-items/show-only-menu-item';
|
|
36
36
|
import { VertexShowOnlySelectedMenuItem } from './components/context-menu/menu-items/show-only-selected-menu-item';
|
|
37
|
+
import { VertexShowPropertiesMenuItem } from './components/context-menu/menu-items/show-properties-menu-item';
|
|
37
38
|
import { VertexSceneTreeContextMenu } from './components/context-menu/scene-tree-context-menu';
|
|
38
39
|
import { VertexViewerContextMenu } from './components/context-menu/viewer-context-menu';
|
|
39
40
|
import { VertexGhostingControls } from './components/ghosting/ghosting-controls';
|
|
@@ -70,6 +71,7 @@ import { VertexToolbarDivider } from './components/toolbar/toolbar-divider';
|
|
|
70
71
|
import { VertexZoomButton } from './components/toolbar/zoom';
|
|
71
72
|
import { VertexTransformClear } from './components/transforms/transform-clear';
|
|
72
73
|
import { VertexTransformControls } from './components/transforms/transform-controls';
|
|
74
|
+
import { VertexTransformInputs } from './components/transforms/transform-inputs';
|
|
73
75
|
import { VertexTransformManipulatorToggle } from './components/transforms/transform-manipulator-toggle';
|
|
74
76
|
import { VertexTransformPanelSection } from './components/transforms/transform-panel-section';
|
|
75
77
|
import { VertexTransformWidget } from './components/transforms/transform-widget';
|
|
@@ -81,4 +83,4 @@ import * as CrossSection from './state/cross-section';
|
|
|
81
83
|
import * as Hits from './state/hits';
|
|
82
84
|
import * as SceneTree from './state/scene-tree';
|
|
83
85
|
import * as Selection from './state/selection';
|
|
84
|
-
export { CrossSection, Hits, SceneTree, Selection, VertexApplicationMessages, VertexBoxSelectionButton, VertexContextMenu, VertexCrossSectionAppearanceColorPicker, VertexCrossSectionAppearanceControls, VertexCrossSectionAppearanceLineThicknessSlider, VertexCrossSectionAppearancePanelSection, VertexCrossSectionAppearanceReset, VertexDecimalPlaceSelector, VertexFeatureEdgesColorPicker, VertexFeatureEdgesControls, VertexFeatureEdgesPanelSection, VertexFeatureEdgesReset, VertexFeatureEdgesThicknessSlider, VertexFitAllButton, VertexFitSelectedMenuItem, VertexFlyToMenuItem, VertexGhostingControls, VertexGhostingPanelSection, VertexHideAllMenuItem, VertexHidePartMenuItem, VertexHideSelectedMenuItem, VertexLengthUnitSelector, VertexMaterialControls, VertexMaterialPanelSection, VertexMeasurementContextMenu, VertexMeasurementDetails, VertexPanButton, VertexPointToPointMeasurement, VertexPointToPointMeasurementTool, VertexPreciseMeasurement, VertexPreciseMeasurementTool, VertexResizableContent, VertexRotateButton, VertexSceneItemGhostingClear, VertexSceneItemGhostingOpacitySlider, VertexSceneItemGhostingToggle, VertexSceneItemMaterialClear, VertexSceneItemMaterialColorPicker, VertexSceneItemMaterialOpacitySlider, VertexSceneTree, VertexSceneTreeColumnPopover, VertexSceneTreeContextMenu, VertexSceneTreeHeader, VertexSceneTreeSearchBar, VertexSceneTreeSearchInformationForToolbar, VertexSceneTreeSearchOptionsPopover, VertexSceneTreeTableLayout, VertexSelectionHighlightingColorPicker, VertexSelectionHighlightingControls, VertexSelectionHighlightingLineThicknessSlider, VertexSelectionHighlightingOpacitySlider, VertexSelectionHighlightingPanelSection, VertexSelectionHighlightingReset, VertexShowAllMenuItem, VertexShowOnlyMenuItem, VertexShowOnlySelectedMenuItem, VertexToolbar, VertexToolbarDivider, VertexTransformClear, VertexTransformControls, VertexTransformManipulatorToggle, VertexTransformPanelSection, VertexTransformWidget, VertexUnitsControls, VertexUnitsPanelSection, VertexViewer, VertexViewerBackgroundColorPicker, VertexViewerBackgroundControls, VertexViewerBackgroundPanelSection, VertexViewerBackgroundReset, VertexViewerContextMenu, VertexViewerCrossSectionButton, VertexViewerRightOpenedPanel, VertexViewerRightSidebar, VertexViewerSceneReset, VertexViewerToolkitRoot, VertexViewerViewCube, VertexZoomButton, };
|
|
86
|
+
export { CrossSection, Hits, SceneTree, Selection, VertexApplicationMessages, VertexBoxSelectionButton, VertexContextMenu, VertexCrossSectionAppearanceColorPicker, VertexCrossSectionAppearanceControls, VertexCrossSectionAppearanceLineThicknessSlider, VertexCrossSectionAppearancePanelSection, VertexCrossSectionAppearanceReset, VertexDecimalPlaceSelector, VertexFeatureEdgesColorPicker, VertexFeatureEdgesControls, VertexFeatureEdgesPanelSection, VertexFeatureEdgesReset, VertexFeatureEdgesThicknessSlider, VertexFitAllButton, VertexFitSelectedMenuItem, VertexFlyToMenuItem, VertexGhostingControls, VertexGhostingPanelSection, VertexHideAllMenuItem, VertexHidePartMenuItem, VertexHideSelectedMenuItem, VertexLengthUnitSelector, VertexMaterialControls, VertexMaterialPanelSection, VertexMeasurementContextMenu, VertexMeasurementDetails, VertexPanButton, VertexPointToPointMeasurement, VertexPointToPointMeasurementTool, VertexPreciseMeasurement, VertexPreciseMeasurementTool, VertexResizableContent, VertexRotateButton, VertexSceneItemGhostingClear, VertexSceneItemGhostingOpacitySlider, VertexSceneItemGhostingToggle, VertexSceneItemMaterialClear, VertexSceneItemMaterialColorPicker, VertexSceneItemMaterialOpacitySlider, VertexSceneTree, VertexSceneTreeColumnPopover, VertexSceneTreeContextMenu, VertexSceneTreeHeader, VertexSceneTreeSearchBar, VertexSceneTreeSearchInformationForToolbar, VertexSceneTreeSearchOptionsPopover, VertexSceneTreeTableLayout, VertexSelectionHighlightingColorPicker, VertexSelectionHighlightingControls, VertexSelectionHighlightingLineThicknessSlider, VertexSelectionHighlightingOpacitySlider, VertexSelectionHighlightingPanelSection, VertexSelectionHighlightingReset, VertexShowAllMenuItem, VertexShowOnlyMenuItem, VertexShowOnlySelectedMenuItem, VertexShowPropertiesMenuItem, VertexToolbar, VertexToolbarDivider, VertexTransformClear, VertexTransformControls, VertexTransformInputs, VertexTransformManipulatorToggle, VertexTransformPanelSection, VertexTransformWidget, VertexUnitsControls, VertexUnitsPanelSection, VertexViewer, VertexViewerBackgroundColorPicker, VertexViewerBackgroundControls, VertexViewerBackgroundPanelSection, VertexViewerBackgroundReset, VertexViewerContextMenu, VertexViewerCrossSectionButton, VertexViewerRightOpenedPanel, VertexViewerRightSidebar, VertexViewerSceneReset, VertexViewerToolkitRoot, VertexViewerViewCube, VertexZoomButton, };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { MetadataProperty } from '@state/metadata/types';
|
|
2
|
+
import { SceneItemMetadataResponse } from '@vertexvis/viewer/dist/types/lib/scene-items';
|
|
3
|
+
export declare const metadataSceneItem: import("recoil").RecoilValueReadOnly<SceneItemMetadataResponse | undefined>;
|
|
4
|
+
export declare const metadataSceneItemProperties: import("recoil").RecoilValueReadOnly<MetadataProperty[] | undefined>;
|
|
5
|
+
export declare const metadataSceneItemName: import("recoil").RecoilValueReadOnly<string | undefined>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DomainPropertyEntry, DomainPropertyValue } from '@vertexvis/viewer/dist/types/lib/scene-items';
|
|
2
|
+
export interface MetadataProperty {
|
|
3
|
+
key: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function fromApiProperty(property: DomainPropertyEntry): MetadataProperty;
|
|
7
|
+
export declare function apiMetadataPropertyDisplayValue(propertyValue?: DomainPropertyValue | null): string;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { PrimaryPanel } from '@state/panel/panel';
|
|
1
|
+
import { PrimaryPanel, SceneTreeSecondaryPanel } from '@state/panel/panel';
|
|
2
2
|
export type PanelSide = 'left' | 'right';
|
|
3
3
|
export interface UsePanelActions {
|
|
4
4
|
openPrimary(panel: PrimaryPanel, side: PanelSide): void;
|
|
5
5
|
closePrimary(side: PanelSide): void;
|
|
6
|
+
openSecondary(panel: SceneTreeSecondaryPanel): void;
|
|
7
|
+
closeSecondary(): void;
|
|
6
8
|
}
|
|
7
9
|
export declare function usePanelActions(): UsePanelActions;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export type PrimaryPanel = 'appearance' | 'settings' | 'transforms';
|
|
2
|
-
export
|
|
3
|
-
export declare const
|
|
1
|
+
export type PrimaryPanel = 'appearance' | 'settings' | 'transforms' | string;
|
|
2
|
+
export type SceneTreeSecondaryPanel = 'Properties';
|
|
3
|
+
export declare const openedPanelActivePrimaryLeft: import("recoil").RecoilState<string | undefined>;
|
|
4
|
+
export declare const openedPanelActivePrimaryRight: import("recoil").RecoilState<string | undefined>;
|
|
5
|
+
export declare const openedPanelActiveSceneTreeSecondary: import("recoil").RecoilState<"Properties" | undefined>;
|
|
@@ -9,6 +9,7 @@ interface DefaultColumn extends ActiveColumn {
|
|
|
9
9
|
metadataKeyName: string;
|
|
10
10
|
}
|
|
11
11
|
export declare function mapToColumn(label: string, width: number): ActiveColumn;
|
|
12
|
+
export declare const sceneTreeColumnsRefreshTrigger: import("recoil").RecoilState<number>;
|
|
12
13
|
export declare const sceneTreeColumnsAvailableColumns: import("recoil").RecoilValueReadOnly<string[]>;
|
|
13
14
|
export declare const sceneTreeColumnsAvailableSortedColumns: import("recoil").RecoilValueReadOnly<string[]>;
|
|
14
15
|
export declare const sceneTreeColumnsVisibleMetadataColumnNames: import("recoil").RecoilState<string[]>;
|
|
@@ -4,6 +4,7 @@ export interface UseSceneTreeActions {
|
|
|
4
4
|
toggleExpansion: SceneTreeOperationHandler;
|
|
5
5
|
toggleVisibility: SceneTreeOperationHandler;
|
|
6
6
|
flyToRow: (rowClientY: number) => Promise<void>;
|
|
7
|
+
flyToFirstSelectedItem: () => Promise<void>;
|
|
7
8
|
setContextMenuItem: (rowClientY: number) => Promise<void>;
|
|
8
9
|
}
|
|
9
10
|
export declare function useSceneTreeActions(): UseSceneTreeActions;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export interface SceneTreeSearchActions {
|
|
2
2
|
setMetadataSearchKeys(metadataSearchKeys: string[]): void;
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
updateMetadataSearchAfterSearchKeysChange(columnName: string, enableColumn: boolean, visibleColumns: string[], searchTerm?: string): Promise<void>;
|
|
4
|
+
updateMetadataSearchAfterColumnVisibilityChange(previousColumns: string[], updatedColumns: string[], searchTerm?: string): Promise<void>;
|
|
5
5
|
setMetadataSearchExactMatch(exactMatch: boolean): void;
|
|
6
|
+
setMetadataSearchRemoveHiddenItems(removeHiddenItems: boolean): void;
|
|
6
7
|
}
|
|
7
8
|
export declare const useSceneTreeSearchActions: () => SceneTreeSearchActions;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare const sceneTreeSearchActive: import("recoil").RecoilState<boolean>;
|
|
2
|
+
export declare const sceneTreeColumnsPartial: import("recoil").RecoilState<boolean>;
|
|
2
3
|
export declare const sceneTreeSearchValue: import("recoil").RecoilState<string | undefined>;
|
|
3
4
|
export declare const sceneTreeSearchExactMatch: import("recoil").RecoilState<boolean>;
|
|
5
|
+
export declare const sceneTreeSearchRemoveHiddenItems: import("recoil").RecoilState<boolean>;
|
|
4
6
|
export declare const sceneTreeSearchResultCount: import("recoil").RecoilState<number>;
|
|
5
7
|
export declare const sceneTreeSearchActiveColumns: import("recoil").RecoilState<string[]>;
|
|
6
8
|
export declare const sceneTreeSearchNameColumnActive: import("recoil").RecoilValueReadOnly<boolean>;
|
|
7
|
-
export interface SceneTreeState {
|
|
8
|
-
totalFilteredRows?: number;
|
|
9
|
-
}
|
|
10
9
|
export interface UseSceneTreeSearchProps {
|
|
11
10
|
sceneTreeElement: HTMLVertexSceneTreeElement | null;
|
|
12
11
|
}
|
|
13
12
|
export declare function useSceneTreeSearch({ sceneTreeElement, }: UseSceneTreeSearchProps): void;
|
|
13
|
+
export declare function useSceneTreePartialResults({ sceneTreeElement, }: UseSceneTreeSearchProps): void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface UseSceneViewItemActions {
|
|
2
|
+
/**
|
|
3
|
+
* Invalidates the `fetchedItems` cache of scene items. This should be
|
|
4
|
+
* used when resetting the scene to the original state.
|
|
5
|
+
*/
|
|
6
|
+
invalidateCachedItems(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function useSceneViewItemActions(): UseSceneViewItemActions;
|
|
@@ -11,9 +11,12 @@ export declare const selectionSelectedItemIds: import("recoil").RecoilState<stri
|
|
|
11
11
|
export declare const selectionLastSelected: import("recoil").RecoilState<SelectionItem | undefined>;
|
|
12
12
|
export declare const selectionLastSelectionFromViewer: import("recoil").RecoilState<boolean>;
|
|
13
13
|
export declare const selectionLastSelectWasMultiSelect: import("recoil").RecoilState<boolean>;
|
|
14
|
+
export declare const selectionHasMultipleSelected: import("recoil").RecoilValueReadOnly<boolean>;
|
|
15
|
+
export declare const selectionFirstSelectedItemInTreeId: import("recoil").RecoilState<string | undefined>;
|
|
14
16
|
export declare const selectionHighestSelectedAncestor: import("recoil").RecoilValueReadOnly<string | undefined>;
|
|
15
17
|
export declare const selectionPreviousVisibleSummary: import("recoil").RecoilState<SceneViewSummary.ItemSetSummary | undefined>;
|
|
16
18
|
export declare const selectionVisibleSummary: import("recoil").RecoilState<SceneViewSummary.ItemSetSummary | undefined>;
|
|
17
19
|
export declare const selectionVisibleCount: import("recoil").RecoilValueReadOnly<number>;
|
|
18
20
|
export declare const selectionBoundingBoxCenter: import("recoil").RecoilValueReadOnly<Vector3.Vector3>;
|
|
19
21
|
export declare const selectionIsActive: import("recoil").RecoilValueReadOnly<boolean>;
|
|
22
|
+
export declare const fetchedAndSelectedItems: import("recoil").RecoilValueReadOnly<(import("@vertexvis/viewer").SceneViewItem | undefined)[]>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Hit } from '@state/hits';
|
|
2
2
|
import { Euler, Vector3 } from '@vertexvis/geometry';
|
|
3
|
+
import { UUID } from '@vertexvis/utils';
|
|
3
4
|
export interface TransformActions {
|
|
4
5
|
enableTransformWidget: (position?: Vector3.Vector3, setPositionToSelection?: boolean) => Promise<void>;
|
|
5
6
|
disableTransformWidget: () => void;
|
|
@@ -7,7 +8,7 @@ export interface TransformActions {
|
|
|
7
8
|
clearTransformWidgetOrientation: () => void;
|
|
8
9
|
setTransformWidgetPosition: (position?: Vector3.Vector3, disableSync?: boolean) => Promise<void>;
|
|
9
10
|
clearTransformWidgetPosition: () => void;
|
|
10
|
-
invalidateTransforms: () => void
|
|
11
|
+
invalidateTransforms: () => Promise<void>;
|
|
11
12
|
setIsInteractivelyTransforming: (interacting: boolean) => void;
|
|
12
13
|
setDefaultWidgetPosition: () => Promise<void>;
|
|
13
14
|
setDefaultWidgetPositionToSelection: () => Promise<void>;
|
|
@@ -17,5 +18,6 @@ export interface TransformActions {
|
|
|
17
18
|
orientToHitResult: (hit?: Hit) => Promise<void>;
|
|
18
19
|
clearSelectedTransforms: () => Promise<void>;
|
|
19
20
|
clearAllTransforms: () => Promise<void>;
|
|
21
|
+
applyTransformToItem: (itemId: UUID.UUID) => Promise<void>;
|
|
20
22
|
}
|
|
21
23
|
export declare const useTransformActions: () => TransformActions;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ItemTransforms, TransformCoordinateSpace } from '@state/transforms/transforms';
|
|
2
|
+
import { DistanceUnitType } from '@util/numbers/distance-units';
|
|
3
|
+
import { Matrix4 } from '@vertexvis/geometry';
|
|
4
|
+
import { Transform } from '@vertexvis/viewer';
|
|
5
|
+
export declare function pickLocalOrWorldTransform(transform: ItemTransforms, coordinateSpace: TransformCoordinateSpace): Transform;
|
|
6
|
+
export declare function mapItemTransforms(transforms: ItemTransforms, map: (t: Transform) => Transform): ItemTransforms;
|
|
7
|
+
export declare function makeItemTransforms(transform: Transform, parentWM: Matrix4.Matrix4, coordinateSpace: TransformCoordinateSpace): ItemTransforms;
|
|
8
|
+
export declare function convertTransformToUnits(transform: Transform, units: DistanceUnitType): Transform;
|
|
9
|
+
export declare function convertTransformFromUnits(transform: Transform, units: DistanceUnitType): Transform;
|
|
10
|
+
export declare function toValidTransform(transform: Transform): Transform;
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export interface Transform {
|
|
6
|
-
position: Vector3.Vector3;
|
|
7
|
-
rotation: Vector3.Vector3;
|
|
8
|
-
scale: number;
|
|
9
|
-
}
|
|
1
|
+
import { DistanceUnitType } from '@util/numbers/distance-units';
|
|
2
|
+
import { Euler, Matrix4, Vector3 } from '@vertexvis/geometry';
|
|
3
|
+
import { UUID } from '@vertexvis/utils';
|
|
4
|
+
import { Transform } from '@vertexvis/viewer';
|
|
10
5
|
/**
|
|
11
6
|
* A type that wraps the local and world transforms for an item.
|
|
12
7
|
*/
|
|
@@ -14,7 +9,16 @@ export interface ItemTransforms {
|
|
|
14
9
|
local: Transform;
|
|
15
10
|
world: Transform;
|
|
16
11
|
}
|
|
12
|
+
interface EditedItemTransform {
|
|
13
|
+
transform: Transform;
|
|
14
|
+
coordinateSpace: TransformCoordinateSpace;
|
|
15
|
+
units: DistanceUnitType;
|
|
16
|
+
}
|
|
17
17
|
export type TransformCoordinateSpace = 'world' | 'local';
|
|
18
|
+
/**
|
|
19
|
+
* A transform that is equivalent to an identity matrix.
|
|
20
|
+
*/
|
|
21
|
+
export declare const identityTransform: Transform;
|
|
18
22
|
export declare const transformWidgetEnabled: import("recoil").RecoilState<boolean>;
|
|
19
23
|
export declare const transformWidgetPosition: import("recoil").RecoilState<Vector3.Vector3 | undefined>;
|
|
20
24
|
export declare const transformWidgetOrientationOverride: import("recoil").RecoilState<Euler.Euler | undefined>;
|
|
@@ -36,3 +40,45 @@ export declare const appliedItemTransformIds: import("recoil").RecoilState<strin
|
|
|
36
40
|
* The state of the chosen coordinate space, e.g. local or world coordinates.
|
|
37
41
|
*/
|
|
38
42
|
export declare const selectedCoordinateSpace: import("recoil").RecoilState<TransformCoordinateSpace>;
|
|
43
|
+
/**
|
|
44
|
+
* An atom that tracks the state of the transform that was edited through the
|
|
45
|
+
* UI.
|
|
46
|
+
*
|
|
47
|
+
* **Note:** The UI should use the `displayedItemTransform` selector for
|
|
48
|
+
* presentation and editing, as that selector contains the business logic for
|
|
49
|
+
* pulling the correct state of the transform.
|
|
50
|
+
*/
|
|
51
|
+
export declare const editedItemTransform: (param: string) => import("recoil").RecoilState<EditedItemTransform | undefined>;
|
|
52
|
+
/**
|
|
53
|
+
* A selector that returns the transform that can be displayed in the UI. This
|
|
54
|
+
* selector supports a setter than can be used by the UI to update the edited
|
|
55
|
+
* transform state, and apply the transform to the scene item.
|
|
56
|
+
*/
|
|
57
|
+
export declare const displayedItemTransform: (param: string | undefined) => import("recoil").RecoilState<Transform | undefined>;
|
|
58
|
+
/**
|
|
59
|
+
* An async selector that fetches the local and world transforms for an item.
|
|
60
|
+
*/
|
|
61
|
+
export declare const fetchedItemTransforms: (param: string) => import("recoil").RecoilValueReadOnly<ItemTransforms | undefined>;
|
|
62
|
+
/**
|
|
63
|
+
* An invalidator state to increment when we want the current transforms to be updated
|
|
64
|
+
*/
|
|
65
|
+
export declare const transformInvalidator: import("recoil").RecoilState<number>;
|
|
66
|
+
/**
|
|
67
|
+
* A selector that will return the world matrix of an item's parent. If an item
|
|
68
|
+
* doesn't have a parent, then an identity matrix will be returned.
|
|
69
|
+
*
|
|
70
|
+
* **Note:** if the parent item has not been loaded, then this will fetch the
|
|
71
|
+
* parent item.
|
|
72
|
+
*/
|
|
73
|
+
export declare const parentItemWorldMatrix: (param: string | undefined) => import("recoil").RecoilValueReadOnly<Matrix4.Matrix4 | undefined>;
|
|
74
|
+
interface UseEditItemTransform {
|
|
75
|
+
transform: Transform | undefined;
|
|
76
|
+
loading: boolean;
|
|
77
|
+
error: unknown;
|
|
78
|
+
update(newTransform: Transform): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Returns a hook that can be used to edit the transform of an item.
|
|
82
|
+
*/
|
|
83
|
+
export declare function useEditItemTransform(itemId?: UUID.UUID): UseEditItemTransform;
|
|
84
|
+
export {};
|
|
@@ -4,3 +4,4 @@ export declare const viewerElementId: import("recoil").RecoilState<string>;
|
|
|
4
4
|
export declare const viewerInitialSceneReady: import("recoil").RecoilState<boolean>;
|
|
5
5
|
export declare const viewerBaseInteractionHandlerProvider: import("recoil").RecoilState<Promise<BaseInteractionHandler | undefined>>;
|
|
6
6
|
export declare const viewerPrimaryInteractionType: import("recoil").RecoilState<InteractionType>;
|
|
7
|
+
export declare const viewerSceneViewId: import("recoil").RecoilState<string | undefined>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare function childrenAsArray<T>(children: T): T[];
|
|
3
|
+
export declare function filterChildElements<P>(children: React.ReactNode, element: (props: P) => React.ReactElement<P>): Array<React.ReactElement<P>>;
|
|
4
|
+
export declare function findChildElement<P>(children: React.ReactNode, element: (props: P) => React.ReactElement<P>): React.ReactElement<P> | undefined;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RecoilValue } from 'recoil';
|
|
2
|
+
type RecoilState = 'loading' | 'hasValue' | 'hasError';
|
|
3
|
+
interface CacheableLoadable<T> {
|
|
4
|
+
data: T | undefined;
|
|
5
|
+
state: RecoilState;
|
|
6
|
+
cached: boolean;
|
|
7
|
+
invalidate: VoidFunction;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Derived from: https://github.com/facebookexperimental/Recoil/issues/290
|
|
11
|
+
* This returns the value of type T with an optional `undefined` response. The `data` property
|
|
12
|
+
* This function will return the previous loadable value when the recoilLoadable is not in the `hasValue` state.
|
|
13
|
+
* The `state` is the RecoilLoadable state, propagagted to the consumer
|
|
14
|
+
* the `cached` value indicates if the cache was used, or if the value came straignt from the recoil loadable.
|
|
15
|
+
*
|
|
16
|
+
* expects a recoil loadable with type T
|
|
17
|
+
* @param recoilLoadable
|
|
18
|
+
*/
|
|
19
|
+
export declare function useCacheableLoadable<T>(recoilLoadable: RecoilValue<T | undefined>, onChange?: (previous: T | undefined, current: T) => void): CacheableLoadable<T>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { HTMLStencilElement } from '@vertexvis/viewer/dist/types/stencil-public-runtime';
|
|
2
|
-
export declare function whenComponentReady<T extends HTMLStencilElement, R>(component: T | undefined | null, execute: () => R): Promise<R | undefined>;
|
|
2
|
+
export declare function whenComponentReady<T extends HTMLStencilElement, R>(component: T | undefined | null, execute: () => R, providedCustomElements?: CustomElementRegistry, providedRequestAnimationFrame?: typeof requestAnimationFrame, providedSetTimeout?: typeof setTimeout): Promise<R | undefined>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Matrix4, Vector3 } from '@vertexvis/geometry';
|
|
2
|
+
import { Transform } from '@vertexvis/viewer';
|
|
3
|
+
export declare function scale(matrix4: number[]): number;
|
|
4
|
+
export declare function translation(matrix4: number[]): Vector3.Vector3;
|
|
5
|
+
export declare function rotation(matrix4: number[]): Vector3.Vector3;
|
|
6
|
+
export declare function toTransformFromApiMatrix(matrix: Matrix4.Matrix4 | undefined): Transform | undefined;
|