@babylonjs/inspector 9.2.0 → 9.2.2
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/lib/components/debug/debugPane.d.ts +1 -1
- package/lib/components/properties/postProcesses/postProcessProperties.d.ts +1 -1
- package/lib/components/properties/propertiesPane.d.ts +1 -1
- package/lib/components/properties/textures/texturePreview.d.ts +38 -0
- package/lib/components/scene/sceneExplorer.d.ts +5 -0
- package/lib/components/stats/statsPane.d.ts +1 -1
- package/lib/components/tools/toolsPane.d.ts +1 -1
- package/lib/extensibility/defaultInspectorExtensionFeed.d.ts +1 -1
- package/lib/extensions/quickCreate/quickCreateToolsService.d.ts +2 -2
- package/lib/{extensionsListService-eRZtqcfj.js → extensionsListService-B_R2ChvJ.js} +2 -2
- package/lib/extensionsListService-B_R2ChvJ.js.map +1 -0
- package/lib/hooks/settingsHooks.d.ts +0 -8
- package/lib/{index-FWuITINA.js → index-DB_fpb1t.js} +550 -234
- package/lib/index-DB_fpb1t.js.map +1 -0
- package/lib/index.d.ts +25 -21
- package/lib/index.js +1 -1
- package/lib/inspectable.d.ts +6 -1
- package/lib/inspector.d.ts +1 -1
- package/lib/legacy/inspectableCustomPropertiesService.d.ts +1 -1
- package/lib/misc/textureTools.d.ts +2 -1
- package/lib/{quickCreateToolsService-MzZbVrvr.js → quickCreateToolsService-DaBqYmZw.js} +2 -2
- package/lib/{quickCreateToolsService-MzZbVrvr.js.map → quickCreateToolsService-DaBqYmZw.js.map} +1 -1
- package/lib/{reflectorService-DdPEZLjO.js → reflectorService-5IVRhqd-.js} +2 -2
- package/lib/reflectorService-5IVRhqd-.js.map +1 -0
- package/lib/services/cli/cliConnectionStatus.d.ts +10 -4
- package/lib/services/cli/entityQueryService.d.ts +1 -1
- package/lib/services/cli/inspectableBridgeService.d.ts +5 -1
- package/lib/services/cli/inspectableCommandRegistry.d.ts +1 -1
- package/lib/services/cli/perfTraceCommandService.d.ts +1 -1
- package/lib/services/cli/screenshotCommandService.d.ts +1 -1
- package/lib/services/cli/shaderCommandService.d.ts +1 -1
- package/lib/services/cli/statsCommandService.d.ts +1 -1
- package/lib/services/cliConnectionStatusService.d.ts +2 -2
- package/lib/services/gizmoService.d.ts +1 -1
- package/lib/services/gizmoToolbarService.d.ts +2 -2
- package/lib/services/globalSettings.d.ts +2 -3
- package/lib/services/highlightService.d.ts +3 -3
- package/lib/services/inspectorSettingsService.d.ts +3 -0
- package/lib/services/miniStatsService.d.ts +2 -2
- package/lib/services/panes/debugService.d.ts +3 -3
- package/lib/services/panes/properties/animationGroupPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/animationPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/atmospherePropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/audioPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/cameraPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/commonPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/effectLayerPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/frameGraphPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/lightPropertiesServices.d.ts +1 -1
- package/lib/services/panes/properties/materialPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/metadataPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/nodePropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/particleSystemPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/physicsPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/postProcessPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/propertiesService.d.ts +3 -3
- package/lib/services/panes/properties/renderingPipelinePropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/scenePropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/skeletonPropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/spritePropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/texturePropertiesService.d.ts +1 -1
- package/lib/services/panes/properties/transformPropertiesService.d.ts +1 -1
- package/lib/services/panes/scene/animationGroupExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/atmosphereExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/disposableCommandService.d.ts +1 -1
- package/lib/services/panes/scene/effectLayersExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/frameGraphExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/guiExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/materialExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/nodeExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/particleSystemExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/postProcessExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/renderingPipelinesExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/sceneExplorerService.d.ts +2 -2
- package/lib/services/panes/scene/skeletonExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/soundExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/spriteManagerExplorerService.d.ts +1 -1
- package/lib/services/panes/scene/texturesExplorerService.d.ts +1 -1
- package/lib/services/panes/statsService.d.ts +3 -3
- package/lib/services/panes/tools/captureService.d.ts +1 -1
- package/lib/services/panes/tools/exportService.d.ts +1 -1
- package/lib/services/panes/tools/import/gltfAnimationImportService.d.ts +1 -1
- package/lib/services/panes/tools/import/gltfLoaderOptionsService.d.ts +4 -2
- package/lib/services/panes/tools/import/gltfValidationService.d.ts +1 -1
- package/lib/services/panes/tools/reflectorService.d.ts +1 -1
- package/lib/services/panes/toolsService.d.ts +3 -3
- package/lib/services/pickingService.d.ts +3 -3
- package/lib/services/sceneContext.d.ts +1 -1
- package/lib/services/selectionService.d.ts +4 -4
- package/lib/services/textureEditor/textureEditorService.d.ts +1 -1
- package/lib/services/userFeedbackService.d.ts +2 -2
- package/lib/services/watcherService.d.ts +5 -5
- package/package.json +1 -1
- package/lib/components/errorBoundary.d.ts +0 -31
- package/lib/components/extensibleAccordion.d.ts +0 -67
- package/lib/components/pane.d.ts +0 -4
- package/lib/components/teachingMoment.d.ts +0 -20
- package/lib/components/theme.d.ts +0 -10
- package/lib/components/uxContextProvider.d.ts +0 -2
- package/lib/contexts/extensionManagerContext.d.ts +0 -6
- package/lib/contexts/settingsContext.d.ts +0 -3
- package/lib/extensibility/builtInsExtensionFeed.d.ts +0 -21
- package/lib/extensibility/extensionFeed.d.ts +0 -113
- package/lib/extensibility/extensionManager.d.ts +0 -111
- package/lib/extensionsListService-eRZtqcfj.js.map +0 -1
- package/lib/hooks/observableHooks.d.ts +0 -35
- package/lib/hooks/resourceHooks.d.ts +0 -20
- package/lib/hooks/teachingMomentHooks.d.ts +0 -34
- package/lib/hooks/themeHooks.d.ts +0 -17
- package/lib/hooks/useResizeHandle.d.ts +0 -35
- package/lib/index-FWuITINA.js.map +0 -1
- package/lib/misc/assert.d.ts +0 -5
- package/lib/misc/graphUtils.d.ts +0 -44
- package/lib/misc/observableCollection.d.ts +0 -23
- package/lib/modularTool.d.ts +0 -42
- package/lib/modularity/serviceContainer.d.ts +0 -64
- package/lib/modularity/serviceDefinition.d.ts +0 -64
- package/lib/reflectorService-DdPEZLjO.js.map +0 -1
- package/lib/services/extensionsListService.d.ts +0 -3
- package/lib/services/panes/settingsService.d.ts +0 -25
- package/lib/services/reactContextService.d.ts +0 -18
- package/lib/services/settingsStore.d.ts +0 -55
- package/lib/services/shellService.d.ts +0 -256
- package/lib/services/shellSettingsService.d.ts +0 -3
- package/lib/services/themeSelectorService.d.ts +0 -3
- package/lib/services/themeService.d.ts +0 -60
- package/lib/themes/babylonTheme.d.ts +0 -3
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type ServiceDefinition } from "
|
|
2
|
-
import { type IShellService } from "
|
|
1
|
+
import { type ServiceDefinition } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
2
|
+
import { type IShellService } from "@babylonjs/shared-ui-components/modularTool/services/shellService.js";
|
|
3
3
|
export declare const UserFeedbackServiceDefinition: ServiceDefinition<[], [IShellService]>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type IDisposable } from "@babylonjs/core/index.js";
|
|
2
|
-
import { type IService, type ServiceDefinition } from "
|
|
3
|
-
import { type ISettingsService } from "
|
|
4
|
-
import { type ISettingsStore } from "
|
|
5
|
-
import { type IShellService } from "
|
|
6
|
-
import { type IReactContextService } from "
|
|
2
|
+
import { type IService, type ServiceDefinition } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
3
|
+
import { type ISettingsService } from "@babylonjs/shared-ui-components/modularTool/services/settingsService.js";
|
|
4
|
+
import { type ISettingsStore } from "@babylonjs/shared-ui-components/modularTool/services/settingsStore.js";
|
|
5
|
+
import { type IShellService } from "@babylonjs/shared-ui-components/modularTool/services/shellService.js";
|
|
6
|
+
import { type IReactContextService } from "@babylonjs/shared-ui-components/modularTool/services/reactContextService.js";
|
|
7
7
|
/**
|
|
8
8
|
* The unique identity symbol for the watcher service.
|
|
9
9
|
*/
|
package/package.json
CHANGED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { type ErrorInfo, type ReactNode, Component } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Props for the {@link ErrorBoundary} component.
|
|
4
|
-
*/
|
|
5
|
-
type ErrorBoundaryProps = {
|
|
6
|
-
/** Child components to render */
|
|
7
|
-
children: ReactNode;
|
|
8
|
-
/** Optional fallback UI to show on error */
|
|
9
|
-
fallback?: ReactNode;
|
|
10
|
-
/** Optional callback when an error occurs */
|
|
11
|
-
onError?: (error: Error, errorInfo: ErrorInfo) => void;
|
|
12
|
-
/** Optional name for identifying this boundary in logs */
|
|
13
|
-
name?: string;
|
|
14
|
-
};
|
|
15
|
-
type ErrorBoundaryState = {
|
|
16
|
-
hasError: boolean;
|
|
17
|
-
error: Error | null;
|
|
18
|
-
errorInfo: ErrorInfo | null;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Error boundary component that catches JavaScript errors in child components
|
|
22
|
-
* and displays a fallback UI instead of crashing the entire application.
|
|
23
|
-
*/
|
|
24
|
-
export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
25
|
-
constructor(props: ErrorBoundaryProps);
|
|
26
|
-
static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
|
|
27
|
-
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
28
|
-
private _handleRetry;
|
|
29
|
-
render(): string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
30
|
-
}
|
|
31
|
-
export {};
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { type ComponentType, type PropsWithChildren, type Ref } from "react";
|
|
2
|
-
import { type AccordionProps } from "@babylonjs/shared-ui-components/fluent/primitives/accordion.js";
|
|
3
|
-
/**
|
|
4
|
-
* Describes a section within a dynamic accordion that can be added at runtime.
|
|
5
|
-
*/
|
|
6
|
-
export type DynamicAccordionSection = Readonly<{
|
|
7
|
-
/**
|
|
8
|
-
* A unique identity for the section, which can be referenced by section content.
|
|
9
|
-
*/
|
|
10
|
-
identity: string;
|
|
11
|
-
/**
|
|
12
|
-
* An optional order for the section, relative to other sections.
|
|
13
|
-
* Defaults to 0.
|
|
14
|
-
*/
|
|
15
|
-
order?: number;
|
|
16
|
-
/**
|
|
17
|
-
* An optional flag indicating whether the section should be collapsed by default.
|
|
18
|
-
* Defaults to false.
|
|
19
|
-
*/
|
|
20
|
-
collapseByDefault?: boolean;
|
|
21
|
-
}>;
|
|
22
|
-
/**
|
|
23
|
-
* Describes content that belongs to a section within a dynamic accordion.
|
|
24
|
-
*/
|
|
25
|
-
export type DynamicAccordionSectionContent<ContextT> = Readonly<{
|
|
26
|
-
/**
|
|
27
|
-
* A unique key for the the content.
|
|
28
|
-
*/
|
|
29
|
-
key: string;
|
|
30
|
-
/**
|
|
31
|
-
* The section this content belongs to.
|
|
32
|
-
*/
|
|
33
|
-
section: string;
|
|
34
|
-
/**
|
|
35
|
-
* An optional order for the content within the section.
|
|
36
|
-
* Defaults to 0.
|
|
37
|
-
*/
|
|
38
|
-
order?: number;
|
|
39
|
-
/**
|
|
40
|
-
* The React component that will be rendered for this content.
|
|
41
|
-
*/
|
|
42
|
-
component: ComponentType<{
|
|
43
|
-
context: ContextT;
|
|
44
|
-
}>;
|
|
45
|
-
}>;
|
|
46
|
-
/**
|
|
47
|
-
* Imperative handle for controlling section highlights on the extensible accordion.
|
|
48
|
-
*/
|
|
49
|
-
export type SectionsImperativeRef = {
|
|
50
|
-
/**
|
|
51
|
-
* Highlights the specified sections, collapsing all others until the context changes.
|
|
52
|
-
* @param sections The identity strings of the sections to highlight.
|
|
53
|
-
*/
|
|
54
|
-
highlightSections: (sections: readonly string[]) => void;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* An accordion component that supports dynamically adding sections and section content at runtime.
|
|
58
|
-
* Combines statically defined children sections with dynamically registered sections and content.
|
|
59
|
-
* @param props The accordion props including sections, section content, context, and an optional imperative ref.
|
|
60
|
-
* @returns The extensible accordion component.
|
|
61
|
-
*/
|
|
62
|
-
export declare function ExtensibleAccordion<ContextT = unknown>(props: PropsWithChildren<{
|
|
63
|
-
sections: readonly DynamicAccordionSection[];
|
|
64
|
-
sectionContent: readonly DynamicAccordionSectionContent<ContextT>[];
|
|
65
|
-
context: ContextT;
|
|
66
|
-
sectionsRef?: Ref<SectionsImperativeRef>;
|
|
67
|
-
} & AccordionProps>): import("react/jsx-runtime").JSX.Element;
|
package/lib/components/pane.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Used to apply common styles to panes.
|
|
3
|
-
*/
|
|
4
|
-
export declare const SidePaneContainer: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type FunctionComponent } from "react";
|
|
2
|
-
import { type MakePopoverTeachingMoment } from "../hooks/teachingMomentHooks";
|
|
3
|
-
/**
|
|
4
|
-
* The state returned by the teaching moment hook.
|
|
5
|
-
*/
|
|
6
|
-
type TeachingMomentState = ReturnType<ReturnType<typeof MakePopoverTeachingMoment>>;
|
|
7
|
-
/**
|
|
8
|
-
* Props for the {@link TeachingMoment} component.
|
|
9
|
-
*/
|
|
10
|
-
type TeachingMomentProps = Pick<TeachingMomentState, "shouldDisplay" | "positioningRef" | "onOpenChange"> & {
|
|
11
|
-
title: string;
|
|
12
|
-
description: string;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* A component that displays a teaching moment popover.
|
|
16
|
-
* @param props Props for the teaching moment popover.
|
|
17
|
-
* @returns The teaching moment popover.
|
|
18
|
-
*/
|
|
19
|
-
export declare const TeachingMoment: FunctionComponent<TeachingMomentProps>;
|
|
20
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type FluentProviderProps } from "@fluentui/react-components";
|
|
2
|
-
import { type FunctionComponent } from "react";
|
|
3
|
-
/**
|
|
4
|
-
* A themed Fluent UI provider that applies the current theme mode (light or dark).
|
|
5
|
-
* @param props Fluent provider props, plus an optional `invert` flag to swap the theme.
|
|
6
|
-
* @returns The themed Fluent UI provider component.
|
|
7
|
-
*/
|
|
8
|
-
export declare const Theme: FunctionComponent<FluentProviderProps & {
|
|
9
|
-
invert?: boolean;
|
|
10
|
-
}>;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type ExtensionManager } from "../extensibility/extensionManager";
|
|
2
|
-
export type ExtensionManagerContext = {
|
|
3
|
-
readonly extensionManager: ExtensionManager;
|
|
4
|
-
};
|
|
5
|
-
export declare const ExtensionManagerContext: import("react").Context<ExtensionManagerContext | undefined>;
|
|
6
|
-
export declare function useExtensionManager(): ExtensionManager | undefined;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type IExtensionFeed, type ExtensionMetadata, type IExtensionMetadataQuery, type ExtensionModule } from "./extensionFeed";
|
|
2
|
-
export type BuiltInExtension = ExtensionMetadata & {
|
|
3
|
-
/**
|
|
4
|
-
* Gets the extension module, typically dynamically importing the extension.
|
|
5
|
-
* @returns The extension module (e.g. a collection of ServiceDefinitions).
|
|
6
|
-
*/
|
|
7
|
-
getExtensionModuleAsync(): Promise<ExtensionModule>;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* A simple extension feed implementation that provides a fixed set of "built in" extensions.
|
|
11
|
-
* "Built in" in this context means extensions that are known at bundling time, and included
|
|
12
|
-
* in the bundle. Each extension can be dynamically imported so they are split into separate
|
|
13
|
-
* bundle chunks and downloaded only when first installed.
|
|
14
|
-
*/
|
|
15
|
-
export declare class BuiltInsExtensionFeed implements IExtensionFeed {
|
|
16
|
-
readonly name: string;
|
|
17
|
-
private readonly _extensions;
|
|
18
|
-
constructor(name: string, extensions: Iterable<BuiltInExtension>);
|
|
19
|
-
queryExtensionsAsync(filter?: string): Promise<IExtensionMetadataQuery>;
|
|
20
|
-
getExtensionModuleAsync(name: string): Promise<ExtensionModule | undefined>;
|
|
21
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { type WeaklyTypedServiceDefinition } from "../modularity/serviceContainer";
|
|
2
|
-
export type PersonMetadata = {
|
|
3
|
-
/**
|
|
4
|
-
* The name of the person.
|
|
5
|
-
*/
|
|
6
|
-
readonly name: string;
|
|
7
|
-
/**
|
|
8
|
-
* The email address of the person.
|
|
9
|
-
*/
|
|
10
|
-
readonly email?: string;
|
|
11
|
-
/**
|
|
12
|
-
* The URL to the person's website.
|
|
13
|
-
*/
|
|
14
|
-
readonly url?: string;
|
|
15
|
-
/**
|
|
16
|
-
* The Babylon forum username of the person.
|
|
17
|
-
*/
|
|
18
|
-
readonly forumUserName?: string;
|
|
19
|
-
/**
|
|
20
|
-
* A base64 encoded PNG image to use as the person's avatar.
|
|
21
|
-
*/
|
|
22
|
-
readonly avatar?: string;
|
|
23
|
-
};
|
|
24
|
-
export type ExtensionMetadata = {
|
|
25
|
-
/**
|
|
26
|
-
* The name of the extension.
|
|
27
|
-
*/
|
|
28
|
-
readonly name: string;
|
|
29
|
-
/**
|
|
30
|
-
* The version of the extension (as valid semver).
|
|
31
|
-
*/
|
|
32
|
-
readonly version?: string;
|
|
33
|
-
/**
|
|
34
|
-
* The description of the extension.
|
|
35
|
-
*/
|
|
36
|
-
readonly description: string;
|
|
37
|
-
/**
|
|
38
|
-
* The keywords of the extension.
|
|
39
|
-
*/
|
|
40
|
-
readonly keywords?: readonly string[];
|
|
41
|
-
/**
|
|
42
|
-
* The URL to the extension homepage.
|
|
43
|
-
*/
|
|
44
|
-
readonly homepage?: string;
|
|
45
|
-
/**
|
|
46
|
-
* Specify the place where your code lives. This is helpful for people who want to contribute.
|
|
47
|
-
*/
|
|
48
|
-
readonly repository?: string;
|
|
49
|
-
/**
|
|
50
|
-
* The URL to your extension's issue tracker and / or the email address to which issues should be reported. These are helpful for people who encounter issues with your extension.
|
|
51
|
-
*/
|
|
52
|
-
readonly bugs?: string;
|
|
53
|
-
/**
|
|
54
|
-
* A license for your package so that people know how they are permitted to use it, and any restrictions you're placing on it.
|
|
55
|
-
*/
|
|
56
|
-
readonly license?: string;
|
|
57
|
-
/**
|
|
58
|
-
* The primary author of the extension.
|
|
59
|
-
*/
|
|
60
|
-
readonly author?: string | PersonMetadata;
|
|
61
|
-
/**
|
|
62
|
-
* The contributors to the extension.
|
|
63
|
-
*/
|
|
64
|
-
readonly contributors?: readonly (string | PersonMetadata)[];
|
|
65
|
-
};
|
|
66
|
-
export type ExtensionModule = {
|
|
67
|
-
/**
|
|
68
|
-
* The default export of the module (e.g. export default).
|
|
69
|
-
*/
|
|
70
|
-
default: {
|
|
71
|
-
/**
|
|
72
|
-
* The services that are included with the extension.
|
|
73
|
-
*/
|
|
74
|
-
serviceDefinitions?: readonly WeaklyTypedServiceDefinition[];
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* Represents a query to fetch subset ranges of extension metadata from a feed.
|
|
79
|
-
*/
|
|
80
|
-
export interface IExtensionMetadataQuery {
|
|
81
|
-
/**
|
|
82
|
-
* The total number of extensions that satisfy the query.
|
|
83
|
-
*/
|
|
84
|
-
readonly totalCount: number;
|
|
85
|
-
/**
|
|
86
|
-
* Fetches a range of extension metadata from the feed.
|
|
87
|
-
* @param index The index of the first extension to fetch.
|
|
88
|
-
* @param count The number of extensions to fetch.
|
|
89
|
-
* @returns A promise that resolves to the extension metadata.
|
|
90
|
-
*/
|
|
91
|
-
getExtensionMetadataAsync(index: number, count: number): Promise<readonly ExtensionMetadata[]>;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Represents a feed/source of extensions.
|
|
95
|
-
*/
|
|
96
|
-
export interface IExtensionFeed {
|
|
97
|
-
/**
|
|
98
|
-
* The name of the feed.
|
|
99
|
-
*/
|
|
100
|
-
readonly name: string;
|
|
101
|
-
/**
|
|
102
|
-
* Creates an extension metadata query given a filter.
|
|
103
|
-
* @param filter The filter to apply to the query.
|
|
104
|
-
* @returns A promise that resolves to the extension metadata query.
|
|
105
|
-
*/
|
|
106
|
-
queryExtensionsAsync(filter?: string): Promise<IExtensionMetadataQuery>;
|
|
107
|
-
/**
|
|
108
|
-
* Gets the extension module for the specified extension.
|
|
109
|
-
* @param name The name of the extension.
|
|
110
|
-
* @returns A promise that resolves to the extension module.
|
|
111
|
-
*/
|
|
112
|
-
getExtensionModuleAsync(name: string): Promise<ExtensionModule | undefined>;
|
|
113
|
-
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { type IDisposable } from "@babylonjs/core/index.js";
|
|
2
|
-
import { type ServiceContainer } from "../modularity/serviceContainer";
|
|
3
|
-
import { type IExtensionFeed, type ExtensionMetadata } from "./extensionFeed";
|
|
4
|
-
/**
|
|
5
|
-
* Represents a loaded extension.
|
|
6
|
-
*/
|
|
7
|
-
export interface IExtension {
|
|
8
|
-
/**
|
|
9
|
-
* The metadata for the extension.
|
|
10
|
-
*/
|
|
11
|
-
readonly metadata: ExtensionMetadata;
|
|
12
|
-
/**
|
|
13
|
-
* Whether the extension is currently being installed, uninstalled, enabled, or disabled.
|
|
14
|
-
*/
|
|
15
|
-
readonly isStateChanging: boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Whether the extension is enabled.
|
|
18
|
-
*/
|
|
19
|
-
readonly isInstalled: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Installs the extension.
|
|
22
|
-
*/
|
|
23
|
-
installAsync(): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Uninstalls the extension.
|
|
26
|
-
*/
|
|
27
|
-
uninstallAsync(): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Adds a handler that is called when the state of the extension changes.
|
|
30
|
-
* @param handler The handler to add.
|
|
31
|
-
* @returns A disposable that removes the handler when disposed.
|
|
32
|
-
*/
|
|
33
|
-
addStateChangedHandler(handler: () => void): IDisposable;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Provides information about an extension installation failure.
|
|
37
|
-
*/
|
|
38
|
-
export type InstallFailedInfo = {
|
|
39
|
-
/**
|
|
40
|
-
* The metadata of the extension that failed to install.
|
|
41
|
-
*/
|
|
42
|
-
extension: ExtensionMetadata;
|
|
43
|
-
/**
|
|
44
|
-
* The error that occurred during the installation.
|
|
45
|
-
*/
|
|
46
|
-
error: unknown;
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Represents a query for loaded extensions.
|
|
50
|
-
*/
|
|
51
|
-
export interface IExtensionQuery {
|
|
52
|
-
/**
|
|
53
|
-
* The total number of extensions that satisfy the query.
|
|
54
|
-
*/
|
|
55
|
-
readonly totalCount: number;
|
|
56
|
-
/**
|
|
57
|
-
* Fetches a range of extensions from the query.
|
|
58
|
-
* @param index The index of the first extension to fetch.
|
|
59
|
-
* @param count The number of extensions to fetch.
|
|
60
|
-
* @returns A promise that resolves to the extensions.
|
|
61
|
-
*/
|
|
62
|
-
getExtensionsAsync(index: number, count: number): Promise<IExtension[]>;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Manages the installation, uninstallation, enabling, and disabling of extensions.
|
|
66
|
-
*/
|
|
67
|
-
export declare class ExtensionManager implements IDisposable {
|
|
68
|
-
private readonly _namespace;
|
|
69
|
-
private readonly _serviceContainer;
|
|
70
|
-
private readonly _feeds;
|
|
71
|
-
private readonly _onInstallFailed;
|
|
72
|
-
private readonly _installedExtensions;
|
|
73
|
-
private readonly _stateChangedHandlers;
|
|
74
|
-
private constructor();
|
|
75
|
-
/**
|
|
76
|
-
* Creates a new instance of the ExtensionManager.
|
|
77
|
-
* This will automatically rehydrate previously installed and enabled extensions.
|
|
78
|
-
* @param namespace The namespace to use for storing extension state in local storage.
|
|
79
|
-
* @param serviceContainer The service container to use.
|
|
80
|
-
* @param feeds The extension feeds to include.
|
|
81
|
-
* @param onInstallFailed A callback that is called when an extension installation fails.
|
|
82
|
-
* @returns A promise that resolves to the new instance of the ExtensionManager.
|
|
83
|
-
*/
|
|
84
|
-
static CreateAsync(namespace: string, serviceContainer: ServiceContainer, feeds: readonly IExtensionFeed[], onInstallFailed: (info: InstallFailedInfo) => void): Promise<ExtensionManager>;
|
|
85
|
-
/**
|
|
86
|
-
* Gets the names of the feeds that are included in the extension manager.
|
|
87
|
-
* @returns The names of the feeds.
|
|
88
|
-
*/
|
|
89
|
-
get feedNames(): string[];
|
|
90
|
-
/**
|
|
91
|
-
* Queries the extension manager for extensions.
|
|
92
|
-
* @param filter The filter to apply to the query.
|
|
93
|
-
* @param feeds The feeds to include in the query.
|
|
94
|
-
* @param installedOnly Whether to only include installed extensions.
|
|
95
|
-
* @returns A promise that resolves to the extension query.
|
|
96
|
-
*/
|
|
97
|
-
queryExtensionsAsync(filter?: string, feeds?: string[], installedOnly?: boolean): Promise<IExtensionQuery>;
|
|
98
|
-
/**
|
|
99
|
-
* Disposes the extension manager.
|
|
100
|
-
*/
|
|
101
|
-
dispose(): void;
|
|
102
|
-
private _getInstalledExtensionStorageKey;
|
|
103
|
-
private _updateInstalledExtensionsStorage;
|
|
104
|
-
private _installAsync;
|
|
105
|
-
private _uninstallAsync;
|
|
106
|
-
private _enableAsync;
|
|
107
|
-
private _disableAsync;
|
|
108
|
-
private _addStateChangedHandler;
|
|
109
|
-
private _createExtension;
|
|
110
|
-
private _createInstalledExtension;
|
|
111
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extensionsListService-eRZtqcfj.js","sources":["../../../../../../../../dev/inspector-v2/src/services/extensionsListService.tsx"],"sourcesContent":["import {\r\n type SelectTabData,\r\n type SelectTabEvent,\r\n Accordion,\r\n AccordionHeader,\r\n AccordionItem,\r\n AccordionPanel,\r\n AvatarGroup,\r\n AvatarGroupItem,\r\n Body1,\r\n Body1Strong,\r\n Button,\r\n Caption1,\r\n Card,\r\n CardFooter,\r\n CardHeader,\r\n CardPreview,\r\n Dialog,\r\n DialogBody,\r\n DialogContent,\r\n DialogSurface,\r\n DialogTitle,\r\n DialogTrigger,\r\n makeStyles,\r\n Persona,\r\n Popover,\r\n PopoverSurface,\r\n PopoverTrigger,\r\n PresenceBadge,\r\n Spinner,\r\n Tab,\r\n TabList,\r\n tokens,\r\n Tooltip,\r\n} from \"@fluentui/react-components\";\r\nimport { type TriggerProps } from \"@fluentui/react-utilities\";\r\nimport { type FunctionComponent, memo, useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { type PersonMetadata } from \"../extensibility/extensionFeed\";\r\nimport { type IExtension } from \"../extensibility/extensionManager\";\r\nimport { type ServiceDefinition } from \"../modularity/serviceDefinition\";\r\nimport { type IShellService, ShellServiceIdentity } from \"./shellService\";\r\n\r\nimport {\r\n AppsAddInRegular,\r\n ArrowDownloadRegular,\r\n BranchForkRegular,\r\n BugRegular,\r\n DeleteRegular,\r\n DismissRegular,\r\n LinkRegular,\r\n MailRegular,\r\n PeopleCommunityRegular,\r\n} from \"@fluentui/react-icons\";\r\nimport { Fade } from \"@fluentui/react-motion-components-preview\";\r\n\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\nimport { Link } from \"shared-ui-components/fluent/primitives/link\";\r\nimport { useExtensionManager } from \"../contexts/extensionManagerContext\";\r\n\r\nconst useStyles = makeStyles({\r\n extensionButton: {},\r\n extensionsDialogSurface: {\r\n height: \"auto\",\r\n width: \"70vw\",\r\n maxWidth: \"600px\",\r\n maxHeight: \"70vh\",\r\n backgroundColor: tokens.colorNeutralBackground2,\r\n },\r\n extensionDialogBody: {\r\n maxWidth: \"100%\",\r\n maxHeight: \"100%\",\r\n },\r\n extensionDialogContent: {\r\n marginLeft: `calc(-1 * ${tokens.spacingHorizontalM})`,\r\n marginRight: `calc(-1 * ${tokens.spacingHorizontalS})`,\r\n },\r\n extensionHeader: {},\r\n extensionItem: {},\r\n extensionCardPreview: {\r\n padding: `${tokens.spacingVerticalM} ${tokens.spacingHorizontalM}`,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n rowGap: tokens.spacingVerticalL,\r\n },\r\n extensionIntro: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n columnGap: tokens.spacingHorizontalM,\r\n },\r\n extensionDescription: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n columnGap: tokens.spacingHorizontalS,\r\n },\r\n extensionButtonContainer: {\r\n marginLeft: \"auto\",\r\n alignSelf: \"flex-start\",\r\n },\r\n spinner: {\r\n animationDuration: \"1s\",\r\n animationName: {\r\n from: { opacity: 0 },\r\n to: { opacity: 1 },\r\n },\r\n },\r\n webResourceDiv: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n webResourceLink: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n columnGap: tokens.spacingHorizontalS,\r\n alignItems: \"center\",\r\n },\r\n personPopoverSurfaceDiv: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n rowGap: tokens.spacingVerticalS,\r\n },\r\n accordionHeaderDiv: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n columnGap: tokens.spacingHorizontalS,\r\n alignItems: \"center\",\r\n },\r\n resourceDetailsDiv: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n rowGap: tokens.spacingVerticalS,\r\n },\r\n peopleDetailsDiv: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n columnGap: tokens.spacingHorizontalXL,\r\n },\r\n avatarGroupItem: {\r\n cursor: \"pointer\",\r\n },\r\n});\r\n\r\nfunction AsPersonMetadata(person: string | PersonMetadata): PersonMetadata {\r\n if (typeof person === \"string\") {\r\n return { name: person } satisfies PersonMetadata;\r\n }\r\n return person;\r\n}\r\n\r\nfunction GetAvatarImage(person: PersonMetadata): { src: string } | undefined {\r\n return person.avatar ? { src: `data:image/png;base64,${person.avatar}` } : undefined;\r\n}\r\n\r\nfunction usePeopleMetadata(people?: readonly (string | PersonMetadata | undefined)[]): PersonMetadata[] {\r\n const definedPeople = useMemo(() => (people ? people.filter((person): person is string | PersonMetadata => !!person) : []), [people]);\r\n return useMemo(() => definedPeople.map(AsPersonMetadata), [definedPeople]);\r\n}\r\n\r\nconst WebResource: FunctionComponent<{ url: string; urlDisplay?: string; icon: JSX.Element; label: string }> = (props) => {\r\n const { url, urlDisplay, icon, label } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n <div className={classes.webResourceDiv}>\r\n <Tooltip content={label} relationship=\"label\" positioning=\"before\" withArrow>\r\n <div className={classes.webResourceLink}>\r\n {icon}\r\n <Link url={url} value={urlDisplay || url} />\r\n </div>\r\n </Tooltip>\r\n </div>\r\n );\r\n};\r\n\r\nconst PersonDetailsPopover: FunctionComponent<TriggerProps & { person: PersonMetadata; title: string; disabled?: boolean }> = (props) => {\r\n const { person, title, disabled, children } = props;\r\n const classes = useStyles();\r\n\r\n if (disabled) {\r\n return <>{children}</>;\r\n }\r\n\r\n return (\r\n <Popover withArrow>\r\n <PopoverTrigger disableButtonEnhancement>{children}</PopoverTrigger>\r\n <PopoverSurface>\r\n <div className={classes.personPopoverSurfaceDiv}>\r\n <Persona name={person.name} secondaryText={title} avatar={{ image: GetAvatarImage(person) }} />\r\n {person.email && <WebResource url={`mailto:${person.email}`} urlDisplay={person.email} icon={<MailRegular />} label=\"Email\" />}\r\n {person.url && <WebResource url={person.url} urlDisplay={person.url} icon={<LinkRegular />} label=\"Website\" />}\r\n {person.forumUserName && (\r\n <WebResource\r\n url={`https://forum.babylonjs.com/u/${person.forumUserName}`}\r\n urlDisplay={person.forumUserName}\r\n icon={<PeopleCommunityRegular />}\r\n label=\"Forum\"\r\n />\r\n )}\r\n </div>\r\n </PopoverSurface>\r\n </Popover>\r\n );\r\n};\r\n\r\nconst ExtensionDetails: FunctionComponent<{ extension: IExtension }> = memo((props) => {\r\n const { extension } = props;\r\n const { metadata } = extension;\r\n\r\n const classes = useStyles();\r\n\r\n const [canInstall, setCanInstall] = useState(false);\r\n const [canUninstall, setCanUninstall] = useState(false);\r\n const [isStateChanging, setIsStateChanging] = useState(false);\r\n\r\n useEffect(() => {\r\n const updateState = () => {\r\n setCanInstall(!extension.isInstalled && !extension.isStateChanging);\r\n setCanUninstall(extension.isInstalled && !extension.isStateChanging);\r\n setIsStateChanging(extension.isStateChanging);\r\n };\r\n\r\n const stateChangedHandlerRegistration = extension.addStateChangedHandler(updateState);\r\n updateState();\r\n\r\n return stateChangedHandlerRegistration.dispose;\r\n }, [extension]);\r\n\r\n const [author] = usePeopleMetadata(useMemo(() => [metadata.author], [metadata.author]));\r\n const contributors = usePeopleMetadata(metadata.contributors);\r\n\r\n const hasResourceDetails = metadata.homepage || metadata.repository || metadata.bugs;\r\n const hasPeopleDetails = author || contributors.length > 0;\r\n const hasPreviewDetails = hasResourceDetails || hasPeopleDetails;\r\n const hasAuthorDetails = author?.email || author?.url || author?.forumUserName;\r\n const subHeader = [metadata.version ? `${metadata.version}` : null, metadata.license ? `${metadata.license}` : null].filter(Boolean).join(\" | \");\r\n\r\n const install = useCallback(async () => {\r\n try {\r\n await extension.installAsync();\r\n } catch {\r\n // Ignore errors. Other parts of the infrastructure handle them and communicate them to the user.\r\n }\r\n }, [extension]);\r\n\r\n const uninstall = useCallback(async () => {\r\n try {\r\n await extension.uninstallAsync();\r\n } catch {\r\n // Ignore errors. Other parts of the infrastructure handle them and communicate them to the user.\r\n }\r\n }, [extension]);\r\n\r\n return (\r\n <AccordionItem className={classes.extensionItem} value={extension.metadata.name}>\r\n <AccordionHeader className={classes.extensionHeader} expandIconPosition=\"end\">\r\n <div className={classes.accordionHeaderDiv}>\r\n <Body1Strong>{extension.metadata.name}</Body1Strong>\r\n <Fade visible={extension.isInstalled}>\r\n <PresenceBadge size=\"small\" />\r\n </Fade>\r\n </div>\r\n </AccordionHeader>\r\n <AccordionPanel>\r\n <Card>\r\n <CardHeader header={<Body1>{metadata.description}</Body1>} description={<Caption1 italic>{subHeader}</Caption1>} />\r\n {hasPreviewDetails && (\r\n <CardPreview className={classes.extensionCardPreview}>\r\n {hasResourceDetails && (\r\n <div className={classes.resourceDetailsDiv} style={{ display: \"flex\" }}>\r\n {metadata.homepage && <WebResource url={metadata.homepage} icon={<LinkRegular />} label=\"Website\" />}\r\n {metadata.repository && <WebResource url={metadata.repository} icon={<BranchForkRegular />} label=\"Repository\" />}\r\n {metadata.bugs && <WebResource url={metadata.bugs} icon={<BugRegular />} label=\"Report Issues\" />}\r\n </div>\r\n )}\r\n {hasPeopleDetails && (\r\n <div className={classes.peopleDetailsDiv} style={{ display: \"flex\" }}>\r\n {author && (\r\n <PersonDetailsPopover person={author} title=\"Author\" disabled={!hasAuthorDetails}>\r\n <Persona\r\n name={author.name}\r\n secondaryText=\"Author\"\r\n avatar={{ image: GetAvatarImage(author) }}\r\n style={{ cursor: hasAuthorDetails ? \"pointer\" : \"default\" }}\r\n />\r\n </PersonDetailsPopover>\r\n )}\r\n {contributors.length > 0 && (\r\n <AvatarGroup layout=\"stack\">\r\n {contributors.map((contributor) => {\r\n return (\r\n <PersonDetailsPopover key={contributor.name} person={contributor} title=\"Contributor\">\r\n <AvatarGroupItem name={contributor.name} className={classes.avatarGroupItem} image={GetAvatarImage(contributor)} />\r\n </PersonDetailsPopover>\r\n );\r\n })}\r\n </AvatarGroup>\r\n )}\r\n </div>\r\n )}\r\n </CardPreview>\r\n )}\r\n <CardFooter>\r\n {canInstall && (\r\n <Button appearance=\"primary\" size=\"small\" icon={<ArrowDownloadRegular />} onClick={install}>\r\n Get\r\n </Button>\r\n )}\r\n {canUninstall && (\r\n <Button appearance=\"secondary\" size=\"small\" icon={<DeleteRegular />} onClick={uninstall}>\r\n Remove\r\n </Button>\r\n )}\r\n {isStateChanging && <Spinner className={classes.spinner} size=\"extra-small\" />}\r\n </CardFooter>\r\n </Card>\r\n </AccordionPanel>\r\n </AccordionItem>\r\n );\r\n});\r\n\r\ntype TabValue = \"available\" | \"installed\";\r\n\r\nexport const ExtensionListServiceDefinition: ServiceDefinition<[], [IShellService]> = {\r\n friendlyName: \"ExtensionList\",\r\n consumes: [ShellServiceIdentity],\r\n factory: (shellService) => {\r\n const registration = shellService.addToolbarItem({\r\n key: \"ExtensionList\",\r\n horizontalLocation: \"right\",\r\n verticalLocation: \"top\",\r\n teachingMoment: {\r\n title: \"Extensions\",\r\n description: \"Extensions provide new optional features that can be useful to your specific task or workflow. Click this button to manage extensions.\",\r\n },\r\n order: -200,\r\n component: () => {\r\n const classes = useStyles();\r\n\r\n const [selectedTab, setSelectedTab] = useState<TabValue>(\"available\");\r\n const extensionManager = useExtensionManager();\r\n const [extensions, setExtensions] = useState<IExtension[]>([]);\r\n\r\n useEffect(() => {\r\n if (extensionManager) {\r\n const populateExtensionsAsync = async () => {\r\n const query = await extensionManager.queryExtensionsAsync(undefined, undefined, selectedTab === \"installed\");\r\n const extensions = await query.getExtensionsAsync(0, query.totalCount);\r\n setExtensions(extensions);\r\n };\r\n\r\n // eslint-disable-next-line github/no-then\r\n populateExtensionsAsync().catch((error) => {\r\n Logger.Warn(`Failed to populate extensions: ${error}`);\r\n });\r\n }\r\n }, [extensionManager, selectedTab]);\r\n\r\n return (\r\n <Dialog>\r\n <DialogTrigger disableButtonEnhancement>\r\n <Tooltip content=\"Manage Extensions\" relationship=\"label\">\r\n <Button className={classes.extensionButton} appearance=\"subtle\" icon={<AppsAddInRegular />} />\r\n </Tooltip>\r\n </DialogTrigger>\r\n <DialogSurface className={classes.extensionsDialogSurface}>\r\n <DialogBody className={classes.extensionDialogBody}>\r\n <DialogTitle\r\n action={\r\n <DialogTrigger action=\"close\">\r\n <Button appearance=\"subtle\" aria-label=\"close\" icon={<DismissRegular />} />\r\n </DialogTrigger>\r\n }\r\n >\r\n <>\r\n Extensions\r\n <TabList\r\n className={classes.extensionDialogContent}\r\n selectedValue={selectedTab}\r\n onTabSelect={(event: SelectTabEvent, data: SelectTabData) => {\r\n setSelectedTab(data.value as TabValue);\r\n }}\r\n >\r\n <Tab value={\"available\" satisfies TabValue}>Available</Tab>\r\n <Tab value={\"installed\" satisfies TabValue}>Installed</Tab>\r\n </TabList>\r\n </>\r\n </DialogTitle>\r\n <DialogContent className={classes.extensionDialogContent}>\r\n <Accordion collapsible>\r\n {extensions.map((extension) => (\r\n <ExtensionDetails key={extension.metadata.name} extension={extension} />\r\n ))}\r\n </Accordion>\r\n </DialogContent>\r\n </DialogBody>\r\n </DialogSurface>\r\n </Dialog>\r\n );\r\n },\r\n });\r\n\r\n return {\r\n dispose: () => registration.dispose(),\r\n };\r\n },\r\n};\r\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { type IReadonlyObservable } from "@babylonjs/core/index.js";
|
|
2
|
-
import { type ObservableCollection } from "../misc/observableCollection";
|
|
3
|
-
/**
|
|
4
|
-
* Returns the current value of the accessor and updates it when the specified event is fired on the specified element.
|
|
5
|
-
* @param accessor A function that returns the current value.
|
|
6
|
-
* @param element The element to listen for the event on.
|
|
7
|
-
* @param eventNames The names of the events to listen for.
|
|
8
|
-
* @returns The current value of the accessor.
|
|
9
|
-
* * @remarks If the accessor function is not idempotent (e.g. it returns a different array or object instance each time it is called),
|
|
10
|
-
* then there is a good chance it should be wrapped in a `useCallback` to prevent unnecessary re-renders or re-render infinite loops.
|
|
11
|
-
*/
|
|
12
|
-
export declare function useEventfulState<T>(accessor: () => T, element: HTMLElement | null | undefined, ...eventNames: string[]): T;
|
|
13
|
-
/**
|
|
14
|
-
* Returns the current value of the accessor and updates it when any of the specified observables change.
|
|
15
|
-
* @param accessor A function that returns the current value.
|
|
16
|
-
* @param observables The observables to listen for changes on.
|
|
17
|
-
* @returns The current value of the accessor.
|
|
18
|
-
* @remarks If the accessor function is not idempotent (e.g. it returns a different array or object instance each time it is called),
|
|
19
|
-
* then there is a good chance it should be wrapped in a `useCallback` to prevent unnecessary re-renders or re-render infinite loops.
|
|
20
|
-
*/
|
|
21
|
-
export declare function useObservableState<T>(accessor: () => T, ...observables: Array<IReadonlyObservable | null | undefined>): T;
|
|
22
|
-
/**
|
|
23
|
-
* Returns a copy of the items in the collection and updates it when the collection changes.
|
|
24
|
-
* @param collection The collection to observe.
|
|
25
|
-
* @returns A copy of the items in the collection.
|
|
26
|
-
*/
|
|
27
|
-
export declare function useObservableCollection<T>(collection: ObservableCollection<T>): T[];
|
|
28
|
-
/**
|
|
29
|
-
* Returns a copy of the items in the collection sorted by the order property and updates it when the collection changes.
|
|
30
|
-
* @param collection The collection to observe.
|
|
31
|
-
* @returns A copy of the items in the collection sorted by the order property.
|
|
32
|
-
*/
|
|
33
|
-
export declare function useOrderedObservableCollection<T extends Readonly<{
|
|
34
|
-
order?: number;
|
|
35
|
-
}>>(collection: ObservableCollection<T>): T[];
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type DependencyList } from "react";
|
|
2
|
-
import { type IDisposable } from "@babylonjs/core/index.js";
|
|
3
|
-
/**
|
|
4
|
-
* Custom hook to manage a resource with automatic disposal. The resource is created once initially, and recreated
|
|
5
|
-
* if the factory function or any dependency changes. Whenever the resource is recreated, the previous instance is
|
|
6
|
-
* disposed. The final instance is disposed when the component using this hook unmounts.
|
|
7
|
-
* @param factory A function that creates the resource.
|
|
8
|
-
* @param deps An optional dependency list. When any dependency changes, the resource is disposed and recreated.
|
|
9
|
-
* @returns The created resource.
|
|
10
|
-
*/
|
|
11
|
-
export declare function useResource<T extends IDisposable | null | undefined>(factory: () => T, deps?: DependencyList): T;
|
|
12
|
-
/**
|
|
13
|
-
* Custom hook to manage an asynchronous resource with automatic disposal. The resource is created once initially, and recreated
|
|
14
|
-
* if the factory function or any dependency changes. Whenever the resource is recreated, the previous instance is
|
|
15
|
-
* disposed. The final instance is disposed when the component using this hook unmounts.
|
|
16
|
-
* @param factory A function that creates the resource.
|
|
17
|
-
* @param deps An optional dependency list. When any dependency changes, the resource is disposed and recreated.
|
|
18
|
-
* @returns The created resource.
|
|
19
|
-
*/
|
|
20
|
-
export declare function useAsyncResource<T extends IDisposable | null | undefined>(factory: (abortSignal: AbortSignal) => Promise<T>, deps?: DependencyList): T | undefined;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type Nullable } from "@babylonjs/core/index.js";
|
|
2
|
-
import { type OnOpenChangeData, type PositioningImperativeRef } from "@fluentui/react-components";
|
|
3
|
-
/**
|
|
4
|
-
* Creates a hook for managing teaching moment state.
|
|
5
|
-
* @param name The unique name of the teaching moment.
|
|
6
|
-
* @returns A hook that returns the teaching moment state.
|
|
7
|
-
*/
|
|
8
|
-
export declare function MakeTeachingMoment(name: string): (suppress?: boolean) => {
|
|
9
|
-
readonly shouldDisplay: boolean;
|
|
10
|
-
readonly onDismissed: () => void;
|
|
11
|
-
readonly reset: () => void;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Creates a hook for managing teaching moment state for a dialog.
|
|
15
|
-
* @param name The unique name of the teaching moment.
|
|
16
|
-
* @returns A hook that returns the teaching moment state for a dialog.
|
|
17
|
-
*/
|
|
18
|
-
export declare function MakeDialogTeachingMoment(name: string): (suppress?: boolean) => {
|
|
19
|
-
readonly shouldDisplay: boolean;
|
|
20
|
-
readonly onOpenChange: (e: unknown, data: OnOpenChangeData) => void;
|
|
21
|
-
readonly reset: () => void;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Creates a hook for managing teaching moment state for a popover.
|
|
25
|
-
* @param name The unique name of the teaching moment.
|
|
26
|
-
* @returns A hook that returns the teaching moment state for a popover.
|
|
27
|
-
*/
|
|
28
|
-
export declare function MakePopoverTeachingMoment(name: string): (suppress?: boolean) => {
|
|
29
|
-
readonly shouldDisplay: boolean;
|
|
30
|
-
readonly positioningRef: import("react").Dispatch<import("react").SetStateAction<Nullable<PositioningImperativeRef>>>;
|
|
31
|
-
readonly targetRef: import("react").Dispatch<import("react").SetStateAction<Nullable<HTMLElement>>>;
|
|
32
|
-
readonly onOpenChange: (e: unknown, data: OnOpenChangeData) => void;
|
|
33
|
-
readonly reset: () => void;
|
|
34
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type ThemeMode } from "../services/themeService";
|
|
2
|
-
/**
|
|
3
|
-
* Hook that provides the current theme mode state and controls for changing it.
|
|
4
|
-
* @returns An object with the current dark mode state, theme mode, and functions to set or toggle the theme.
|
|
5
|
-
*/
|
|
6
|
-
export declare function useThemeMode(): {
|
|
7
|
-
readonly isDarkMode: boolean;
|
|
8
|
-
readonly themeMode: ThemeMode;
|
|
9
|
-
readonly setThemeMode: (mode: ThemeMode) => void;
|
|
10
|
-
readonly toggleThemeMode: () => void | undefined;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Hook that returns the current Fluent UI theme based on the active theme mode.
|
|
14
|
-
* @param invert If true, inverts the theme (returns light theme in dark mode and vice versa). Defaults to false.
|
|
15
|
-
* @returns The current Fluent UI theme object.
|
|
16
|
-
*/
|
|
17
|
-
export declare function useTheme(invert?: boolean): import("@fluentui/tokens").Theme;
|