UNPKG

@pmndrs/uikit

Version:

Build performant 3D user interfaces with Three.js and yoga.

59 lines (58 loc) 3.93 kB
import { YogaProperties } from '../flex/node.js'; import { ScrollbarProperties } from '../scroll.js'; import { WithAllAliases } from '../properties/alias.js'; import { PanelProperties } from '../panel/instanced-panel.js'; import { TransformProperties } from '../transform.js'; import { AllOptionalProperties, WithClasses, WithReactive } from '../properties/default.js'; import { OrderInfo, ZIndexProperties } from '../order.js'; import { Signal } from '@preact/signals-core'; import { VisibilityProperties, WithConditionals } from './utils.js'; import { alignmentZMap } from '../utils.js'; import { Listeners } from '../listeners.js'; import { ParentContext, RootContext } from '../context.js'; import { PanelGroupProperties } from '../panel/instanced-panel-group.js'; import { Material, Mesh, Object3D, Vector3 } from 'three'; import { PointerEventsProperties } from '../panel/index.js'; import { MergedProperties } from '../properties/index.js'; import { KeepAspectRatioProperties } from './image.js'; import { EventHandlers, ThreeEventMap } from '../events.js'; export type InheritableContentProperties = WithClasses<WithConditionals<WithAllAliases<WithReactive<YogaProperties & PanelProperties & ZIndexProperties & TransformProperties & ScrollbarProperties & Omit<PanelGroupProperties, 'renderOrder'> & DepthAlignProperties & KeepAspectRatioProperties & VisibilityProperties & PointerEventsProperties>>>>; export type DepthAlignProperties = { depthAlign?: keyof typeof alignmentZMap; renderOrder?: null | number; }; export type ContentProperties<EM extends ThreeEventMap = ThreeEventMap> = InheritableContentProperties & Listeners & EventHandlers<EM>; export declare function createContentState<EM extends ThreeEventMap = ThreeEventMap>(parentCtx: ParentContext, style: Signal<ContentProperties<EM> | undefined>, properties: Signal<ContentProperties<EM> | undefined>, defaultProperties: Signal<AllOptionalProperties | undefined>, contentContainerRef: { current?: Object3D | null; }): { node: Signal<import("../internals.js").FlexNode | undefined>; size: Signal<import("three").Vector2Tuple | undefined>; relativeCenter: Signal<import("three").Vector2Tuple | undefined>; borderInset: Signal<import("../internals.js").Inset | undefined>; overflow: Signal<import("yoga-layout/load").Overflow>; displayed: Signal<boolean>; scrollable: Signal<[boolean, boolean]>; paddingInset: Signal<import("../internals.js").Inset | undefined>; maxScrollPosition: Signal<[(number | undefined)?, (number | undefined)?]>; } & { measuredSize: Vector3; measuredCenter: Vector3; globalMatrix: Signal<import("three").Matrix4 | undefined>; isClipped: Signal<boolean>; isVisible: import("@preact/signals-core").ReadonlySignal<boolean>; mergedProperties: import("@preact/signals-core").ReadonlySignal<MergedProperties>; hoveredSignal: Signal<number[]>; sizeSignal: Signal<Vector3>; orderInfo: Signal<OrderInfo | undefined>; backgroundOrderInfo: Signal<OrderInfo | undefined>; groupDeps: import("@preact/signals-core").ReadonlySignal<Required<PanelGroupProperties>>; handlers: import("@preact/signals-core").ReadonlySignal<EventHandlers>; ancestorsHaveListeners: import("@preact/signals-core").ReadonlySignal<boolean>; transformMatrix: Signal<import("three").Matrix4 | undefined>; root: RootContext; interactionPanel: Mesh<import("three").PlaneGeometry, Material | Material[], import("three").Object3DEventMap> & { boundingSphere: import("three").Sphere; }; remeasureContent: () => void; }; export declare function setupContent<EM extends ThreeEventMap = ThreeEventMap>(state: ReturnType<typeof createContentState>, parentCtx: ParentContext, style: Signal<ContentProperties<EM> | undefined>, properties: Signal<ContentProperties<EM> | undefined>, object: Object3D, contentContainer: Object3D, abortSignal: AbortSignal): void;