@vertexvis/viewer-toolkit-react 0.0.3-canary.8 → 0.0.3-testing.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.
Files changed (65) hide show
  1. package/dist/bundle.cjs.js +2 -2
  2. package/dist/bundle.cjs.js.map +1 -1
  3. package/dist/bundle.esm.js +2 -2
  4. package/dist/bundle.esm.js.map +1 -1
  5. package/dist/components/measurement/__tests__/measurement-context-menu.spec.d.ts +1 -0
  6. package/dist/components/measurement/__tests__/point-to-point-measurement-tool.spec.d.ts +1 -0
  7. package/dist/components/measurement/__tests__/point-to-point-measurement.spec.d.ts +1 -0
  8. package/dist/components/measurement/__tests__/precise-measurement-tool.spec.d.ts +1 -0
  9. package/dist/components/measurement/__tests__/precise-measurement.spec.d.ts +1 -0
  10. package/dist/components/measurement/measurement-context-menu.d.ts +5 -0
  11. package/dist/components/measurement/measurement-details.d.ts +5 -0
  12. package/dist/components/measurement/point-to-point-measurement-tool.d.ts +1 -0
  13. package/dist/components/measurement/point-to-point-measurement.d.ts +7 -0
  14. package/dist/components/measurement/precise-measurement-tool.d.ts +1 -0
  15. package/dist/components/measurement/precise-measurement.d.ts +8 -0
  16. package/dist/components/scene-tree/scene-tree-columns/__tests__/scene-tree-columns-popover.spec.d.ts +1 -0
  17. package/dist/components/scene-tree/scene-tree-columns/scene-tree-columns-popover.d.ts +4 -0
  18. package/dist/components/scene-tree/scene-tree-columns/scene-tree-metadata-check.d.ts +8 -0
  19. package/dist/components/scene-tree/scene-tree-search/__tests__/enter-scene-tree-search-mode-button.spec.d.ts +1 -0
  20. package/dist/components/scene-tree/scene-tree-search/__tests__/scene-tree-search-bar.spec.d.ts +1 -0
  21. package/dist/components/scene-tree/scene-tree-search/__tests__/scene-tree-search-information-for-toolbar.spec.d.ts +1 -0
  22. package/dist/components/scene-tree/scene-tree-search/__tests__/scene-tree-search-options-popover.spec.d.ts +1 -0
  23. package/dist/components/scene-tree/scene-tree-search/enter-scene-tree-search-mode-button.d.ts +4 -0
  24. package/dist/components/scene-tree/scene-tree-search/scene-tree-search-bar.d.ts +10 -0
  25. package/dist/components/scene-tree/scene-tree-search/scene-tree-search-information-for-toolbar.d.ts +1 -0
  26. package/dist/components/scene-tree/scene-tree-search/scene-tree-search-options-popover.d.ts +5 -0
  27. package/dist/components/scene-tree/scene-tree-search/scene-tree-search.d.ts +11 -0
  28. package/dist/components/scene-tree/scene-tree-toolbar/scene-tree-toolbar.d.ts +4 -1
  29. package/dist/components/scene-tree/vertex-scene-tree-header.d.ts +6 -1
  30. package/dist/components/settings/__tests__/units-panel-section.spec.d.ts +1 -0
  31. package/dist/components/settings/decimal-place-selector.d.ts +4 -0
  32. package/dist/components/settings/length-unit-selector.d.ts +4 -0
  33. package/dist/components/settings/units-controls.d.ts +5 -0
  34. package/dist/components/settings/units-panel-section.d.ts +5 -0
  35. package/dist/components/sidebar/viewer-right-sidebar/__tests__/viewer-right-sidebar.spec.d.ts +1 -0
  36. package/dist/components/sidebar/viewer-right-sidebar/settings-panel.d.ts +1 -0
  37. package/dist/components/sidebar/viewer-right-sidebar/viewer-right-panel-header.d.ts +1 -0
  38. package/dist/components/toolbar/cross-section/cross-section-offset-stepper.d.ts +1 -4
  39. package/dist/components/toolbar/cross-section/cross-section-popup-menu.d.ts +1 -6
  40. package/dist/components/toolbar/cross-section/cross-section.d.ts +1 -6
  41. package/dist/components/toolbar/toolbar-divider.d.ts +1 -1
  42. package/dist/components/transforms/transform-widget.d.ts +1 -4
  43. package/dist/index.css +2 -2
  44. package/dist/index.d.ts +16 -2
  45. package/dist/state/context-menu/context-menu.d.ts +1 -1
  46. package/dist/state/measurement/actions.d.ts +19 -0
  47. package/dist/state/measurement/index.d.ts +4 -0
  48. package/dist/state/measurement/measurement.d.ts +6 -0
  49. package/dist/state/measurement/point-to-point-measurement.d.ts +11 -0
  50. package/dist/state/measurement/precise-measurement.d.ts +8 -0
  51. package/dist/state/panel/panel.d.ts +1 -1
  52. package/dist/state/scene-tree/columns/actions.d.ts +4 -0
  53. package/dist/state/scene-tree/columns/columns.d.ts +4 -3
  54. package/dist/state/scene-tree/columns/index.d.ts +2 -0
  55. package/dist/state/scene-tree/columns/open-column-popover.d.ts +21 -0
  56. package/dist/state/scene-tree/core/core.d.ts +1 -2
  57. package/dist/state/scene-tree/search/actions.d.ts +7 -0
  58. package/dist/state/scene-tree/search/index.d.ts +2 -0
  59. package/dist/state/scene-tree/search/search.d.ts +13 -0
  60. package/dist/state/settings/index.d.ts +1 -0
  61. package/dist/state/settings/settings.d.ts +2 -0
  62. package/dist/state/viewer/core/core.d.ts +1 -0
  63. package/dist/util/logging/index.d.ts +1 -0
  64. package/dist/util/popover/popover.d.ts +3 -0
  65. package/package.json +6 -5
@@ -0,0 +1,5 @@
1
+ interface Props {
2
+ onDelete: (id: string) => void;
3
+ }
4
+ export declare function VertexMeasurementContextMenu({ onDelete }: Props): JSX.Element;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ import { DraggablePopoverPlacement } from '@util/popover/popover';
2
+ export interface MeasurementDetailsProps {
3
+ placement: DraggablePopoverPlacement;
4
+ }
5
+ export declare function VertexMeasurementDetails({ placement, }: MeasurementDetailsProps): JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function VertexPointToPointMeasurementTool(): JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { EditedPointToPointMeasurement } from '@state/measurement';
2
+ import { DraggablePopoverPlacement } from '@util/popover/popover';
3
+ export interface PointToPointMeasurementProps {
4
+ detailsPlacement: DraggablePopoverPlacement;
5
+ onPointToPointMeasurementChange?: (measurement: EditedPointToPointMeasurement) => void;
6
+ }
7
+ export declare function VertexPointToPointMeasurement({ detailsPlacement, onPointToPointMeasurementChange, }: PointToPointMeasurementProps): JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function VertexPreciseMeasurementTool(): JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { DraggablePopoverPlacement } from '@util/popover/popover';
2
+ import type { MeasurementEntity, MeasurementOutcome } from '@vertexvis/viewer';
3
+ export interface Props {
4
+ detailsPlacement: DraggablePopoverPlacement;
5
+ onEntitiesChanged?: (measurement: MeasurementEntity[]) => void;
6
+ onOutcomeChanged?: (measurement: MeasurementOutcome | undefined) => void;
7
+ }
8
+ export declare const VertexPreciseMeasurement: ({ detailsPlacement, onEntitiesChanged, onOutcomeChanged, }: Props) => JSX.Element;
@@ -0,0 +1,4 @@
1
+ export interface Props {
2
+ onVisibleSceneTreeColumnsChange?: (visibleColumns: string[]) => void;
3
+ }
4
+ export declare const VertexSceneTreeColumnPopover: ({ onVisibleSceneTreeColumnsChange, }: Props) => JSX.Element;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ export interface Props {
3
+ checked?: boolean;
4
+ disabled?: boolean;
5
+ onChange?: (checked: boolean) => void;
6
+ children: React.ReactNode;
7
+ }
8
+ export declare const VertexSceneTreeMetadataCheck: ({ checked, disabled, onChange, children, }: Props) => JSX.Element;
@@ -0,0 +1,4 @@
1
+ export interface Props {
2
+ onEnterSearchMode?: () => void;
3
+ }
4
+ export declare const VertexEnterSceneTreeSearchModeButton: ({ onEnterSearchMode, }: Props) => JSX.Element;
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ export interface Props {
3
+ onSearch?: (search?: string) => void;
4
+ onClearSearch?: () => void;
5
+ onExitSearchMode?: () => void;
6
+ onSearchedSceneTreeColumnsChange?: () => void;
7
+ onSearchForExactMatchChange?: () => void;
8
+ children?: React.ReactNode | React.ReactNode[];
9
+ }
10
+ export declare const VertexSceneTreeSearchBar: ({ onSearch, onClearSearch, onExitSearchMode, onSearchedSceneTreeColumnsChange, onSearchForExactMatchChange, children, }: Props) => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const VertexSceneTreeSearchInformationForToolbar: () => JSX.Element;
@@ -0,0 +1,5 @@
1
+ export interface Props {
2
+ onSearchedSceneTreeColumnsChange?: () => void;
3
+ onSearchForExactMatchChange?: () => void;
4
+ }
5
+ export declare const VertexSceneTreeSearchOptionsPopover: ({ onSearchedSceneTreeColumnsChange, onSearchForExactMatchChange, }: Props) => JSX.Element;
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ export interface Props {
3
+ onEnterSearchMode?: () => void;
4
+ onExitSearchMode?: () => void;
5
+ onSearch?: (search?: string) => void;
6
+ onClearSearch?: () => void;
7
+ onSearchedSceneTreeColumnsChange?: () => void;
8
+ onSearchForExactMatchChange?: () => void;
9
+ children?: React.ReactNode | React.ReactNode[];
10
+ }
11
+ export declare const VertexSceneTreeSearch: ({ onEnterSearchMode, onExitSearchMode, onSearch, onClearSearch, onSearchedSceneTreeColumnsChange, onSearchForExactMatchChange, children, }: Props) => JSX.Element;
@@ -1 +1,4 @@
1
- export declare function VertexSceneTreeToolbar(): JSX.Element;
1
+ export interface Props {
2
+ onVisibleSceneTreeColumnsChange?: (visibleColumns: string[]) => void;
3
+ }
4
+ export declare const VertexSceneTreeToolbar: ({ onVisibleSceneTreeColumnsChange, }: Props) => JSX.Element;
@@ -1,5 +1,10 @@
1
1
  import React from 'react';
2
2
  export interface Props {
3
+ onEnterSearchMode?: () => void;
4
+ onExitSearchMode?: () => void;
5
+ onSearch?: (search?: string) => void;
6
+ onClearSearch?: () => void;
7
+ onVisibleSceneTreeColumnsChange?: (visibleColumns: string[]) => void;
3
8
  readonly children?: React.ReactNode;
4
9
  }
5
- export declare const VertexSceneTreeHeader: ({ children }: Props) => JSX.Element;
10
+ export declare const VertexSceneTreeHeader: ({ onEnterSearchMode, onExitSearchMode, onSearch, onClearSearch, onVisibleSceneTreeColumnsChange, children, }: Props) => JSX.Element;
@@ -0,0 +1,4 @@
1
+ export interface Props {
2
+ onApply?: (decimalPlace: string) => void;
3
+ }
4
+ export declare const VertexDecimalPlaceSelector: ({ onApply }: Props) => JSX.Element;
@@ -0,0 +1,4 @@
1
+ export interface Props {
2
+ onApply?: (unit: string) => void;
3
+ }
4
+ export declare const VertexLengthUnitSelector: ({ onApply }: Props) => JSX.Element;
@@ -0,0 +1,5 @@
1
+ export interface Props {
2
+ onUnitChange?: (unit: string) => void;
3
+ onDecimalPlaceChange?: (decimalPlace: string) => void;
4
+ }
5
+ export declare function VertexUnitsControls({ onUnitChange, onDecimalPlaceChange, }: Props): JSX.Element;
@@ -0,0 +1,5 @@
1
+ export interface Props {
2
+ onUnitChange?: (unit: string) => void;
3
+ onDecimalPlaceChange?: (decimalPlace: string) => void;
4
+ }
5
+ export declare function VertexUnitsPanelSection({ onUnitChange, onDecimalPlaceChange, }: Props): JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function DefaultSettingsPanel(): JSX.Element;
@@ -1,3 +1,4 @@
1
1
  export declare const APPEARANCE_HEADING = "Appearance";
2
+ export declare const SETTINGS_HEADING = "Settings";
2
3
  export declare const TRANSFORMS_HEADING = "Transforms";
3
4
  export declare const ViewerRightPanelHeader: () => JSX.Element;
@@ -1,9 +1,6 @@
1
- import { DistanceUnitType } from '@util/measurement/units';
2
1
  interface Props {
3
2
  offset: number;
4
- measurementUnit: DistanceUnitType;
5
- decimalPlaces: number;
6
3
  onOffsetChange: (offset: number) => void;
7
4
  }
8
- export declare function VertexViewerCrossSectionOffsetStepper({ offset, measurementUnit, decimalPlaces, onOffsetChange, }: Props): JSX.Element;
5
+ export declare function VertexViewerCrossSectionOffsetStepper({ offset, onOffsetChange, }: Props): JSX.Element;
9
6
  export {};
@@ -1,6 +1 @@
1
- import { DistanceUnitType } from '@util/measurement/units';
2
- export interface Props {
3
- decimalPlaces: number;
4
- measurementUnit: DistanceUnitType;
5
- }
6
- export declare function VertexViewerCrossSectionPopupMenu({ decimalPlaces, measurementUnit, }: Props): JSX.Element;
1
+ export declare function VertexViewerCrossSectionPopupMenu(): JSX.Element;
@@ -1,6 +1 @@
1
- import { DistanceUnitType } from '@util/measurement/units';
2
- export interface Props {
3
- readonly decimalPlaces?: number;
4
- readonly measurementUnit?: DistanceUnitType;
5
- }
6
- export declare const VertexViewerCrossSectionButton: ({ decimalPlaces, measurementUnit, }: Props) => JSX.Element;
1
+ export declare const VertexViewerCrossSectionButton: () => JSX.Element;
@@ -1 +1 @@
1
- export declare function VertexViewerToolbarDivider(): JSX.Element;
1
+ export declare function VertexToolbarDivider(): JSX.Element;
@@ -1,13 +1,10 @@
1
1
  import { Euler, Vector3 } from '@vertexvis/geometry';
2
- import { DistanceUnitType } from '@vertexvis/viewer';
3
2
  import React from 'react';
4
3
  interface Props {
5
4
  transformWidgetElement?: React.Ref<HTMLVertexViewerTransformWidgetElement>;
6
5
  supportUndo?: boolean;
7
- decimalPlaces?: number;
8
- distanceUnit?: DistanceUnitType;
9
6
  onPositionChange?: (position: Vector3.Vector3 | undefined) => void;
10
7
  onRotationChange?: (orientation: Euler.Euler | undefined) => void;
11
8
  }
12
- export declare function VertexTransformWidget({ transformWidgetElement, supportUndo, decimalPlaces, distanceUnit, onPositionChange, onRotationChange, }: Props): JSX.Element;
9
+ export declare function VertexTransformWidget({ transformWidgetElement, supportUndo, onPositionChange, onRotationChange, }: Props): JSX.Element;
13
10
  export {};
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-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-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(
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-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-8{margin-top:calc(var(--spacing)*8)}.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}.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-full{height:100%}.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-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.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-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}.items-center{align-items:center}.items-stretch{align-items:stretch}.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)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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-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-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-4{padding-top:calc(var(--spacing)*4)}.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))}.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)}.invert{--tw-invert:invert(100%);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}}@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-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-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}
package/dist/index.d.ts CHANGED
@@ -41,10 +41,24 @@ import { VertexGhostingPanelSection } from './components/ghosting/ghosting-panel
41
41
  import { VertexSceneItemGhostingClear } from './components/ghosting/scene-item-ghosting-clear';
42
42
  import { VertexSceneItemGhostingOpacitySlider } from './components/ghosting/scene-item-ghosting-opacity-slider';
43
43
  import { VertexSceneItemGhostingToggle } from './components/ghosting/scene-item-ghosting-toggle';
44
+ import { VertexMeasurementContextMenu } from './components/measurement/measurement-context-menu';
45
+ import { VertexMeasurementDetails } from './components/measurement/measurement-details';
46
+ import { VertexPointToPointMeasurement } from './components/measurement/point-to-point-measurement';
47
+ import { VertexPointToPointMeasurementTool } from './components/measurement/point-to-point-measurement-tool';
48
+ import { VertexPreciseMeasurement } from './components/measurement/precise-measurement';
49
+ import { VertexPreciseMeasurementTool } from './components/measurement/precise-measurement-tool';
44
50
  import { VertexApplicationMessages } from './components/messages/application-messages';
51
+ import { VertexSceneTreeColumnPopover } from './components/scene-tree/scene-tree-columns/scene-tree-columns-popover';
52
+ import { VertexSceneTreeSearchBar } from './components/scene-tree/scene-tree-search/scene-tree-search-bar';
53
+ import { VertexSceneTreeSearchInformationForToolbar } from './components/scene-tree/scene-tree-search/scene-tree-search-information-for-toolbar';
54
+ import { VertexSceneTreeSearchOptionsPopover } from './components/scene-tree/scene-tree-search/scene-tree-search-options-popover';
45
55
  import { VertexSceneTree } from './components/scene-tree/vertex-scene-tree';
46
56
  import { VertexSceneTreeHeader } from './components/scene-tree/vertex-scene-tree-header';
47
57
  import { VertexSceneTreeTableLayout } from './components/scene-tree/vertex-scene-tree-table-layout';
58
+ import { VertexDecimalPlaceSelector } from './components/settings/decimal-place-selector';
59
+ import { VertexLengthUnitSelector } from './components/settings/length-unit-selector';
60
+ import { VertexUnitsControls } from './components/settings/units-controls';
61
+ import { VertexUnitsPanelSection } from './components/settings/units-panel-section';
48
62
  import { VertexViewerRightOpenedPanel } from './components/sidebar/viewer-right-sidebar/viewer-right-open-panel';
49
63
  import { VertexViewerRightSidebar } from './components/sidebar/viewer-right-sidebar/viewer-right-sidebar';
50
64
  import { VertexViewerCrossSectionButton } from './components/toolbar/cross-section/cross-section';
@@ -52,7 +66,7 @@ import { VertexFitAllButton } from './components/toolbar/fit-all';
52
66
  import { VertexPanButton } from './components/toolbar/pan';
53
67
  import { VertexRotateButton } from './components/toolbar/rotate';
54
68
  import { VertexToolbar } from './components/toolbar/toolbar';
55
- import { VertexViewerToolbarDivider } from './components/toolbar/toolbar-divider';
69
+ import { VertexToolbarDivider } from './components/toolbar/toolbar-divider';
56
70
  import { VertexZoomButton } from './components/toolbar/zoom';
57
71
  import { VertexTransformClear } from './components/transforms/transform-clear';
58
72
  import { VertexTransformControls } from './components/transforms/transform-controls';
@@ -67,4 +81,4 @@ import * as CrossSection from './state/cross-section';
67
81
  import * as Hits from './state/hits';
68
82
  import * as SceneTree from './state/scene-tree';
69
83
  import * as Selection from './state/selection';
70
- export { CrossSection, Hits, SceneTree, Selection, VertexApplicationMessages, VertexBoxSelectionButton, VertexContextMenu, VertexCrossSectionAppearanceColorPicker, VertexCrossSectionAppearanceControls, VertexCrossSectionAppearanceLineThicknessSlider, VertexCrossSectionAppearancePanelSection, VertexCrossSectionAppearanceReset, VertexFeatureEdgesColorPicker, VertexFeatureEdgesControls, VertexFeatureEdgesPanelSection, VertexFeatureEdgesReset, VertexFeatureEdgesThicknessSlider, VertexFitAllButton, VertexFitSelectedMenuItem, VertexFlyToMenuItem, VertexGhostingControls, VertexGhostingPanelSection, VertexHideAllMenuItem, VertexHidePartMenuItem, VertexHideSelectedMenuItem, VertexMaterialControls, VertexMaterialPanelSection, VertexPanButton, VertexResizableContent, VertexRotateButton, VertexSceneItemGhostingClear, VertexSceneItemGhostingOpacitySlider, VertexSceneItemGhostingToggle, VertexSceneItemMaterialClear, VertexSceneItemMaterialColorPicker, VertexSceneItemMaterialOpacitySlider, VertexSceneTree, VertexSceneTreeContextMenu, VertexSceneTreeHeader, VertexSceneTreeTableLayout, VertexSelectionHighlightingColorPicker, VertexSelectionHighlightingControls, VertexSelectionHighlightingLineThicknessSlider, VertexSelectionHighlightingOpacitySlider, VertexSelectionHighlightingPanelSection, VertexSelectionHighlightingReset, VertexShowAllMenuItem, VertexShowOnlyMenuItem, VertexShowOnlySelectedMenuItem, VertexToolbar, VertexTransformClear, VertexTransformControls, VertexTransformManipulatorToggle, VertexTransformPanelSection, VertexTransformWidget, VertexViewer, VertexViewerBackgroundColorPicker, VertexViewerBackgroundControls, VertexViewerBackgroundPanelSection, VertexViewerBackgroundReset, VertexViewerContextMenu, VertexViewerCrossSectionButton, VertexViewerRightOpenedPanel, VertexViewerRightSidebar, VertexViewerSceneReset, VertexViewerToolbarDivider, VertexViewerToolkitRoot, VertexViewerViewCube, VertexZoomButton, };
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, };
@@ -1,7 +1,7 @@
1
1
  import { Hit } from '@state/hits';
2
2
  import { Point } from '@vertexvis/geometry';
3
3
  import { Row } from '@vertexvis/viewer/dist/types/components/scene-tree/lib/row';
4
- export type ContextMenuType = 'scene-tree' | 'viewer' | 'color-swatch';
4
+ export type ContextMenuType = 'color-swatch' | 'measurement' | 'scene-tree' | 'viewer';
5
5
  export type ContextMenuItem = Row | Hit | HTMLElement;
6
6
  export type ContextMenuAction = (item: ContextMenuItem) => void | Promise<void> | boolean | Promise<boolean>;
7
7
  export declare function contextMenuItemIsRow(item?: ContextMenuItem): item is Row;
@@ -0,0 +1,19 @@
1
+ import { EditedPointToPointMeasurement } from '@state/measurement/point-to-point-measurement';
2
+ type MeasurementMode = 'point-to-point' | 'precise';
3
+ export interface ToggleMeasurementOptions {
4
+ keepExistingMeasurement?: boolean;
5
+ }
6
+ export interface UseMeasurementActions {
7
+ disableEditMeasurement(options?: ToggleMeasurementOptions): Promise<void>;
8
+ enableEditMeasurement(mode: MeasurementMode): Promise<void>;
9
+ toggleEditPreciseMeasurement(): Promise<void>;
10
+ toggleEditPointToPointMeasurement(): Promise<void>;
11
+ resetMeasurement(): Promise<void>;
12
+ clearEditedPointToPointMeasurement(): void;
13
+ setEditedPointToPointMeasurement(measurement: EditedPointToPointMeasurement): void;
14
+ }
15
+ export declare function useMeasurementActions(): UseMeasurementActions;
16
+ export declare function useEnablePointToPointMeasurement(): (options?: ToggleMeasurementOptions) => void;
17
+ export declare function useDisablePointToPointMeasurement(): (options?: ToggleMeasurementOptions) => void;
18
+ export declare function useDisablePreciseMeasurement(): () => void;
19
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from './actions';
2
+ export * from './measurement';
3
+ export * from './point-to-point-measurement';
4
+ export * from './precise-measurement';
@@ -0,0 +1,6 @@
1
+ import type { MeasurementOutcome, MeasurementOverlayManager } from '@vertexvis/viewer';
2
+ export declare const isEditingMeasurement: import("recoil").RecoilValueReadOnly<boolean>;
3
+ export declare const measurementPanelOutcome: import("recoil").RecoilValueReadOnly<MeasurementOutcome | undefined>;
4
+ export declare const measurementPanelOverlays: import("recoil").RecoilValueReadOnly<MeasurementOverlayManager | undefined>;
5
+ export declare const measurementPanelMessage: import("recoil").RecoilValueReadOnly<string | undefined>;
6
+ export declare const measurementPanelIsResettable: import("recoil").RecoilValueReadOnly<boolean>;
@@ -0,0 +1,11 @@
1
+ import { Vector3 } from '@vertexvis/geometry';
2
+ import type { MeasurementOutcome } from '@vertexvis/viewer';
3
+ export interface EditedPointToPointMeasurement {
4
+ start: Vector3.Vector3;
5
+ end: Vector3.Vector3;
6
+ invalid: boolean;
7
+ }
8
+ export declare const isEditingPointToPointMeasurement: import("recoil").RecoilState<boolean>;
9
+ export declare const pointToPointMeasurementOutcome: import("recoil").RecoilState<MeasurementOutcome | undefined>;
10
+ export declare const editedPointToPointMeasurement: import("recoil").RecoilState<EditedPointToPointMeasurement | undefined>;
11
+ export declare function usePointToPointMeasurement(element: HTMLVertexViewerMeasurementDistanceElement | null): void;
@@ -0,0 +1,8 @@
1
+ import type { MeasurementController, MeasurementEntity, MeasurementOutcome, MeasurementOverlayManager } from '@vertexvis/viewer';
2
+ export declare const isEditingPreciseMeasurement: import("recoil").RecoilState<boolean>;
3
+ export declare const preciseMeasurementOutcome: import("recoil").RecoilState<MeasurementOutcome | undefined>;
4
+ export declare const preciseMeasurementController: import("recoil").RecoilState<MeasurementController | undefined>;
5
+ export declare const preciseMeasurementOverlays: import("recoil").RecoilState<MeasurementOverlayManager | undefined>;
6
+ export declare const preciseMeasurementEntities: import("recoil").RecoilState<MeasurementEntity[]>;
7
+ export declare const preciseMeasurementMessage: import("recoil").RecoilValueReadOnly<string | undefined>;
8
+ export declare function usePreciseMeasurementModel(element: HTMLVertexViewerMeasurementPreciseElement | null, onEntitiesChanged?: (measurement: MeasurementEntity[]) => void, onOutcomeChanged?: (measurement: MeasurementOutcome | undefined) => void): void;
@@ -1,3 +1,3 @@
1
- export type PrimaryPanel = 'appearance' | 'transforms';
1
+ export type PrimaryPanel = 'appearance' | 'settings' | 'transforms';
2
2
  export declare const openedPanelActivePrimaryLeft: import("recoil").RecoilState<PrimaryPanel | undefined>;
3
3
  export declare const openedPanelActivePrimaryRight: import("recoil").RecoilState<PrimaryPanel | undefined>;
@@ -0,0 +1,4 @@
1
+ export interface UseSceneTreeColumnActions {
2
+ setActive: (columns: string[]) => Promise<void>;
3
+ }
4
+ export declare function useSceneTreeColumnActions(): UseSceneTreeColumnActions;
@@ -8,9 +8,10 @@ interface ActiveColumn {
8
8
  interface DefaultColumn extends ActiveColumn {
9
9
  metadataKeyName: string;
10
10
  }
11
- export interface UseSceneTreeColumnsProps {
12
- sceneTreeElement: HTMLVertexSceneTreeElement | null;
13
- }
11
+ export declare function mapToColumn(label: string, width: number): ActiveColumn;
12
+ export declare const sceneTreeColumnsAvailableColumns: import("recoil").RecoilValueReadOnly<string[]>;
13
+ export declare const sceneTreeColumnsAvailableSortedColumns: import("recoil").RecoilValueReadOnly<string[]>;
14
+ export declare const sceneTreeColumnsVisibleMetadataColumnNames: import("recoil").RecoilState<string[]>;
14
15
  export declare const sceneTreeColumnsActiveColumns: import("recoil").RecoilValueReadOnly<Record<string, ActiveColumn>>;
15
16
  export declare const sceneTreeColumnsActiveColumnNames: import("recoil").RecoilValueReadOnly<string[]>;
16
17
  export {};
@@ -1 +1,3 @@
1
+ export * from './actions';
1
2
  export * from './columns';
3
+ export * from './open-column-popover';
@@ -0,0 +1,21 @@
1
+ import { Point } from '@vertexvis/geometry';
2
+ import * as React from 'react';
3
+ export declare const DEFAULT_HORIZONTAL_POSITION_OFFSET = 16;
4
+ export declare const DEFAULT_VERTICAL_POSITION_OFFSET = -8;
5
+ export declare enum PlacementDirection {
6
+ LEFT = "left",
7
+ RIGHT = "right"
8
+ }
9
+ export interface UseOpenColumnPopoverProps {
10
+ buttonElement: HTMLVertexIconButtonElement | null;
11
+ horizontalOffset?: number;
12
+ verticalOffset?: number;
13
+ }
14
+ export interface UseOpenColumnPopover {
15
+ open: boolean;
16
+ position?: Point.Point;
17
+ direction?: PlacementDirection;
18
+ handleOpen: React.EffectCallback;
19
+ handleClose: React.EffectCallback;
20
+ }
21
+ export declare function useOpenColumnPopover({ buttonElement, horizontalOffset, verticalOffset, }: UseOpenColumnPopoverProps): UseOpenColumnPopover;
@@ -1,5 +1,4 @@
1
1
  import type { SceneTreeController } from '@vertexvis/viewer';
2
2
  export declare const sceneTreeLoaderVisible: import("recoil").RecoilState<boolean>;
3
3
  export declare const sceneTreeElement: import("recoil").RecoilState<HTMLVertexSceneTreeElement | null | undefined>;
4
- export declare const sceneTreeWidth: import("recoil").RecoilState<number | undefined>;
5
- export declare const sceneTreeController: import("recoil").RecoilValueReadOnly<SceneTreeController | undefined>;
4
+ export declare const sceneTreeController: import("recoil").RecoilState<SceneTreeController | undefined>;
@@ -0,0 +1,7 @@
1
+ export interface SceneTreeSearchActions {
2
+ setMetadataSearchKeys(metadataSearchKeys: string[]): void;
3
+ updateSearchForActiveColumns(searchTerm: string): Promise<void>;
4
+ updateMetadataSearchAfterSearchKeysChange(columnName: string, enableColumn: boolean): Promise<void>;
5
+ setMetadataSearchExactMatch(exactMatch: boolean): void;
6
+ }
7
+ export declare const useSceneTreeSearchActions: () => SceneTreeSearchActions;
@@ -0,0 +1,2 @@
1
+ export * from './actions';
2
+ export * from './search';
@@ -0,0 +1,13 @@
1
+ export declare const sceneTreeSearchActive: import("recoil").RecoilState<boolean>;
2
+ export declare const sceneTreeSearchValue: import("recoil").RecoilState<string | undefined>;
3
+ export declare const sceneTreeSearchExactMatch: import("recoil").RecoilState<boolean>;
4
+ export declare const sceneTreeSearchResultCount: import("recoil").RecoilState<number>;
5
+ export declare const sceneTreeSearchActiveColumns: import("recoil").RecoilState<string[]>;
6
+ export declare const sceneTreeSearchNameColumnActive: import("recoil").RecoilValueReadOnly<boolean>;
7
+ export interface SceneTreeState {
8
+ totalFilteredRows?: number;
9
+ }
10
+ export interface UseSceneTreeSearchProps {
11
+ sceneTreeElement: HTMLVertexSceneTreeElement | null;
12
+ }
13
+ export declare function useSceneTreeSearch({ sceneTreeElement, }: UseSceneTreeSearchProps): void;
@@ -0,0 +1 @@
1
+ export * from './settings';
@@ -0,0 +1,2 @@
1
+ export declare const lengthUnit: import("recoil").RecoilState<"mm" | "cm" | "m" | "in" | "ft">;
2
+ export declare const decimalPlace: import("recoil").RecoilState<string>;
@@ -1,5 +1,6 @@
1
1
  import { BaseInteractionHandler, InteractionType } from '@vertexvis/viewer/dist/types/lib/interactions/baseInteractionHandler';
2
2
  export declare const viewerElement: import("recoil").RecoilState<HTMLVertexViewerElement | null | undefined>;
3
+ export declare const viewerElementId: import("recoil").RecoilState<string>;
3
4
  export declare const viewerInitialSceneReady: import("recoil").RecoilState<boolean>;
4
5
  export declare const viewerBaseInteractionHandlerProvider: import("recoil").RecoilState<Promise<BaseInteractionHandler | undefined>>;
5
6
  export declare const viewerPrimaryInteractionType: import("recoil").RecoilState<InteractionType>;
@@ -0,0 +1 @@
1
+ export * from './logger';
@@ -0,0 +1,3 @@
1
+ import { Point } from '@vertexvis/geometry';
2
+ export type DraggablePopoverPlacement = 'left' | 'right';
3
+ export declare function useDockedPlacement(parent: HTMLElement | null, placement: DraggablePopoverPlacement): Point.Point;