angular-three-cannon 2.0.0-beta.24 → 2.0.0-beta.241
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/body/README.md +3 -0
- package/body/index.d.ts +2 -0
- package/body/lib/body.d.ts +18 -0
- package/body/lib/types.d.ts +54 -0
- package/body/lib/utils.d.ts +52 -0
- package/constraint/README.md +3 -0
- package/constraint/index.d.ts +1 -0
- package/constraint/lib/constraint.d.ts +38 -0
- package/debug/lib/debug.d.ts +22 -19
- package/esm2022/body/angular-three-cannon-body.mjs +5 -0
- package/esm2022/body/index.mjs +2 -0
- package/esm2022/body/lib/body.mjs +94 -0
- package/esm2022/body/lib/types.mjs +2 -0
- package/esm2022/body/lib/utils.mjs +197 -0
- package/esm2022/constraint/angular-three-cannon-constraint.mjs +5 -0
- package/esm2022/constraint/index.mjs +2 -0
- package/esm2022/constraint/lib/constraint.mjs +68 -0
- package/esm2022/debug/lib/debug.mjs +49 -62
- package/esm2022/lib/physics.mjs +106 -178
- package/fesm2022/angular-three-cannon-body.mjs +296 -0
- package/fesm2022/angular-three-cannon-body.mjs.map +1 -0
- package/fesm2022/angular-three-cannon-constraint.mjs +75 -0
- package/fesm2022/angular-three-cannon-constraint.mjs.map +1 -0
- package/fesm2022/angular-three-cannon-debug.mjs +48 -61
- package/fesm2022/angular-three-cannon-debug.mjs.map +1 -1
- package/fesm2022/angular-three-cannon.mjs +106 -178
- package/fesm2022/angular-three-cannon.mjs.map +1 -1
- package/lib/physics.d.ts +43 -48
- package/package.json +68 -61
- package/esm2022/services/angular-three-cannon-services.mjs +0 -5
- package/esm2022/services/index.mjs +0 -7
- package/esm2022/services/lib/body.mjs +0 -293
- package/esm2022/services/lib/constraints.mjs +0 -59
- package/esm2022/services/lib/contact-material.mjs +0 -20
- package/esm2022/services/lib/ray.mjs +0 -30
- package/esm2022/services/lib/raycast-vehicle.mjs +0 -68
- package/esm2022/services/lib/spring.mjs +0 -31
- package/fesm2022/angular-three-cannon-services.mjs +0 -490
- package/fesm2022/angular-three-cannon-services.mjs.map +0 -1
- package/services/README.md +0 -3
- package/services/index.d.ts +0 -6
- package/services/lib/body.d.ts +0 -60
- package/services/lib/constraints.d.ts +0 -31
- package/services/lib/contact-material.d.ts +0 -9
- package/services/lib/ray.d.ts +0 -12
- package/services/lib/raycast-vehicle.d.ts +0 -30
- package/services/lib/spring.d.ts +0 -19
package/body/README.md
ADDED
package/body/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ElementRef, Injector } from '@angular/core';
|
|
2
|
+
import { BodyShapeType } from '@pmndrs/cannon-worker-api';
|
|
3
|
+
import { Object3D } from 'three';
|
|
4
|
+
import { NgtcArgFn, NgtcBodyPropsMap, NgtcBodyReturn, NgtcGetByIndex } from './types';
|
|
5
|
+
export interface NgtcBodyOptions<TShape extends BodyShapeType> {
|
|
6
|
+
transformArgs?: NgtcArgFn<NgtcBodyPropsMap[TShape]>;
|
|
7
|
+
ref?: ElementRef<Object3D>;
|
|
8
|
+
injector?: Injector;
|
|
9
|
+
}
|
|
10
|
+
export declare const injectBox: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").BoxProps>, options?: NgtcBodyOptions<"Box"> | undefined) => NgtcBodyReturn<TObject>;
|
|
11
|
+
export declare const injectConvexPolyhedron: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").ConvexPolyhedronProps>, options?: NgtcBodyOptions<"ConvexPolyhedron"> | undefined) => NgtcBodyReturn<TObject>;
|
|
12
|
+
export declare const injectCylinder: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").CylinderProps>, options?: NgtcBodyOptions<"Cylinder"> | undefined) => NgtcBodyReturn<TObject>;
|
|
13
|
+
export declare const injectHeightfield: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").HeightfieldProps>, options?: NgtcBodyOptions<"Heightfield"> | undefined) => NgtcBodyReturn<TObject>;
|
|
14
|
+
export declare const injectParticle: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").ParticleProps>, options?: NgtcBodyOptions<"Particle"> | undefined) => NgtcBodyReturn<TObject>;
|
|
15
|
+
export declare const injectPlane: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").PlaneProps>, options?: NgtcBodyOptions<"Plane"> | undefined) => NgtcBodyReturn<TObject>;
|
|
16
|
+
export declare const injectSphere: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").SphereProps>, options?: NgtcBodyOptions<"Sphere"> | undefined) => NgtcBodyReturn<TObject>;
|
|
17
|
+
export declare const injectTrimesh: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").TrimeshProps>, options?: NgtcBodyOptions<"Trimesh"> | undefined) => NgtcBodyReturn<TObject>;
|
|
18
|
+
export declare const injectCompound: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").CompoundBodyProps>, options?: NgtcBodyOptions<"Compound"> | undefined) => NgtcBodyReturn<TObject>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { AtomicName, AtomicProps, BodyProps, BoxProps, CompoundBodyProps, ConvexPolyhedronProps, CylinderProps, HeightfieldProps, ParticleProps, PlaneProps, Quad, SphereProps, TrimeshProps, Triplet, VectorName } from '@pmndrs/cannon-worker-api';
|
|
2
|
+
import { NgtInjectedRef } from 'angular-three';
|
|
3
|
+
import { Euler, Object3D, Quaternion, Vector3 } from 'three';
|
|
4
|
+
export interface NgtcAtomicApi<K extends AtomicName> {
|
|
5
|
+
set: (value: AtomicProps[K]) => void;
|
|
6
|
+
subscribe: (callback: (value: AtomicProps[K]) => void) => () => void;
|
|
7
|
+
}
|
|
8
|
+
export interface NgtcQuaternionApi {
|
|
9
|
+
copy: ({ w, x, y, z }: Quaternion) => void;
|
|
10
|
+
set: (x: number, y: number, z: number, w: number) => void;
|
|
11
|
+
subscribe: (callback: (value: Quad) => void) => () => void;
|
|
12
|
+
}
|
|
13
|
+
export interface NgtcVectorApi {
|
|
14
|
+
copy: ({ x, y, z }: Vector3 | Euler) => void;
|
|
15
|
+
set: (x: number, y: number, z: number) => void;
|
|
16
|
+
subscribe: (callback: (value: Triplet) => void) => () => void;
|
|
17
|
+
}
|
|
18
|
+
export type NgtcWorkerApi = {
|
|
19
|
+
[K in AtomicName]: NgtcAtomicApi<K>;
|
|
20
|
+
} & {
|
|
21
|
+
[K in VectorName]: NgtcVectorApi;
|
|
22
|
+
} & {
|
|
23
|
+
applyForce: (force: Triplet, worldPoint: Triplet) => void;
|
|
24
|
+
applyImpulse: (impulse: Triplet, worldPoint: Triplet) => void;
|
|
25
|
+
applyLocalForce: (force: Triplet, localPoint: Triplet) => void;
|
|
26
|
+
applyLocalImpulse: (impulse: Triplet, localPoint: Triplet) => void;
|
|
27
|
+
applyTorque: (torque: Triplet) => void;
|
|
28
|
+
quaternion: NgtcQuaternionApi;
|
|
29
|
+
rotation: NgtcVectorApi;
|
|
30
|
+
scaleOverride: (scale: Triplet) => void;
|
|
31
|
+
sleep: () => void;
|
|
32
|
+
wakeUp: () => void;
|
|
33
|
+
remove: () => void;
|
|
34
|
+
};
|
|
35
|
+
export interface NgtcBodyPublicApi extends NgtcWorkerApi {
|
|
36
|
+
at: (index: number) => NgtcWorkerApi;
|
|
37
|
+
}
|
|
38
|
+
export interface NgtcBodyReturn<TObject extends Object3D> {
|
|
39
|
+
ref: NgtInjectedRef<TObject>;
|
|
40
|
+
api: NgtcBodyPublicApi;
|
|
41
|
+
}
|
|
42
|
+
export type NgtcBodyPropsMap = {
|
|
43
|
+
Plane: PlaneProps;
|
|
44
|
+
Box: BoxProps;
|
|
45
|
+
Particle: ParticleProps;
|
|
46
|
+
Cylinder: CylinderProps;
|
|
47
|
+
Sphere: SphereProps;
|
|
48
|
+
Trimesh: TrimeshProps;
|
|
49
|
+
Heightfield: HeightfieldProps;
|
|
50
|
+
ConvexPolyhedron: ConvexPolyhedronProps;
|
|
51
|
+
Compound: CompoundBodyProps;
|
|
52
|
+
};
|
|
53
|
+
export type NgtcGetByIndex<T extends BodyProps> = (index: number) => T;
|
|
54
|
+
export type NgtcArgFn<T extends BodyProps> = (args: NonNullable<T['args']>) => typeof args;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { BodyProps, BoxProps, CannonWorkerAPI, CompoundBodyProps, ConvexPolyhedronArgs, CylinderArgs, HeightfieldArgs, ParticleProps, PlaneProps, PropValue, SphereArgs, SubscriptionName, SubscriptionTarget, Subscriptions, TrimeshArgs, Triplet } from '@pmndrs/cannon-worker-api';
|
|
3
|
+
import { NgtInjectedRef } from 'angular-three';
|
|
4
|
+
import { NgtcCannonEvents, NgtcPhysicsApi } from 'angular-three-cannon';
|
|
5
|
+
import { Object3D } from 'three';
|
|
6
|
+
import { NgtcWorkerApi } from './types';
|
|
7
|
+
export declare function createSubscribe<T extends SubscriptionName>(ref: ElementRef<Object3D>, worker: CannonWorkerAPI, subscriptions: Subscriptions, type: T, index?: number, target?: SubscriptionTarget): (callback: (value: PropValue<T>) => void) => () => void;
|
|
8
|
+
export declare function prepare(object: Object3D, { position, rotation, userData }: BodyProps): void;
|
|
9
|
+
export declare function setupCollision(events: NgtcCannonEvents, { onCollide, onCollideBegin, onCollideEnd }: Partial<BodyProps>, uuid: string): void;
|
|
10
|
+
export declare function makeBodyApi(bodyRef: NgtInjectedRef<Object3D>, { subscriptions, bodies, scaleOverrides, worker }: NgtcPhysicsApi): {
|
|
11
|
+
at: (index: number) => NgtcWorkerApi;
|
|
12
|
+
allowSleep: import("./types").NgtcAtomicApi<"allowSleep">;
|
|
13
|
+
angularDamping: import("./types").NgtcAtomicApi<"angularDamping">;
|
|
14
|
+
collisionFilterGroup: import("./types").NgtcAtomicApi<"collisionFilterGroup">;
|
|
15
|
+
collisionFilterMask: import("./types").NgtcAtomicApi<"collisionFilterMask">;
|
|
16
|
+
collisionResponse: import("./types").NgtcAtomicApi<"collisionResponse">;
|
|
17
|
+
fixedRotation: import("./types").NgtcAtomicApi<"fixedRotation">;
|
|
18
|
+
isTrigger: import("./types").NgtcAtomicApi<"isTrigger">;
|
|
19
|
+
linearDamping: import("./types").NgtcAtomicApi<"linearDamping">;
|
|
20
|
+
mass: import("./types").NgtcAtomicApi<"mass">;
|
|
21
|
+
material: import("./types").NgtcAtomicApi<"material">;
|
|
22
|
+
sleepSpeedLimit: import("./types").NgtcAtomicApi<"sleepSpeedLimit">;
|
|
23
|
+
sleepTimeLimit: import("./types").NgtcAtomicApi<"sleepTimeLimit">;
|
|
24
|
+
userData: import("./types").NgtcAtomicApi<"userData">;
|
|
25
|
+
angularFactor: import("./types").NgtcVectorApi;
|
|
26
|
+
angularVelocity: import("./types").NgtcVectorApi;
|
|
27
|
+
linearFactor: import("./types").NgtcVectorApi;
|
|
28
|
+
position: import("./types").NgtcVectorApi;
|
|
29
|
+
velocity: import("./types").NgtcVectorApi;
|
|
30
|
+
applyForce: (force: Triplet, worldPoint: Triplet) => void;
|
|
31
|
+
applyImpulse: (impulse: Triplet, worldPoint: Triplet) => void;
|
|
32
|
+
applyLocalForce: (force: Triplet, localPoint: Triplet) => void;
|
|
33
|
+
applyLocalImpulse: (impulse: Triplet, localPoint: Triplet) => void;
|
|
34
|
+
applyTorque: (torque: Triplet) => void;
|
|
35
|
+
quaternion: import("./types").NgtcQuaternionApi;
|
|
36
|
+
rotation: import("./types").NgtcVectorApi;
|
|
37
|
+
scaleOverride: (scale: Triplet) => void;
|
|
38
|
+
sleep: () => void;
|
|
39
|
+
wakeUp: () => void;
|
|
40
|
+
remove: () => void;
|
|
41
|
+
};
|
|
42
|
+
export declare const defaultTransformArgs: {
|
|
43
|
+
Plane: (args: PlaneProps['args']) => never[];
|
|
44
|
+
Box: (args?: BoxProps['args']) => Triplet;
|
|
45
|
+
Trimesh: (args: TrimeshArgs) => TrimeshArgs;
|
|
46
|
+
Cylinder: (args?: CylinderArgs) => never[];
|
|
47
|
+
Heightfield: (args: HeightfieldArgs) => HeightfieldArgs;
|
|
48
|
+
ConvexPolyhedron: ([vertices, faces, normals, axes, boundingSphereRadius]?: ConvexPolyhedronArgs) => (number | number[][] | undefined)[];
|
|
49
|
+
Particle: (args: ParticleProps['args']) => never[];
|
|
50
|
+
Sphere: (args?: SphereArgs) => number[];
|
|
51
|
+
Compound: (args: CompoundBodyProps['args']) => unknown[] | undefined;
|
|
52
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/constraint';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ElementRef, Injector } from '@angular/core';
|
|
2
|
+
import { ConeTwistConstraintOpts, ConstraintTypes, DistanceConstraintOpts, HingeConstraintOpts, LockConstraintOpts, PointToPointConstraintOpts } from '@pmndrs/cannon-worker-api';
|
|
3
|
+
import { NgtInjectedRef } from 'angular-three';
|
|
4
|
+
import { Object3D } from 'three';
|
|
5
|
+
export interface NgtcConstraintApi {
|
|
6
|
+
disable: () => void;
|
|
7
|
+
enable: () => void;
|
|
8
|
+
remove: () => void;
|
|
9
|
+
}
|
|
10
|
+
export interface NgtcHingeConstraintApi extends NgtcConstraintApi {
|
|
11
|
+
disableMotor: () => void;
|
|
12
|
+
enableMotor: () => void;
|
|
13
|
+
setMotorMaxForce: (value: number) => void;
|
|
14
|
+
setMotorSpeed: (value: number) => void;
|
|
15
|
+
}
|
|
16
|
+
export type NgtcConstraintORHingeApi<T extends 'Hinge' | ConstraintTypes> = T extends ConstraintTypes ? NgtcConstraintApi : NgtcHingeConstraintApi;
|
|
17
|
+
export interface NgtcConstraintReturn<T extends 'Hinge' | ConstraintTypes, TObjectA extends Object3D = Object3D, TObjectB extends Object3D = Object3D> {
|
|
18
|
+
bodyA: NgtInjectedRef<TObjectA>;
|
|
19
|
+
bodyB: NgtInjectedRef<TObjectB>;
|
|
20
|
+
api: NgtcConstraintORHingeApi<T>;
|
|
21
|
+
}
|
|
22
|
+
export type NgtcConstraintOptionsMap = {
|
|
23
|
+
ConeTwist: ConeTwistConstraintOpts;
|
|
24
|
+
PointToPoint: PointToPointConstraintOpts;
|
|
25
|
+
Distance: DistanceConstraintOpts;
|
|
26
|
+
Lock: LockConstraintOpts;
|
|
27
|
+
Hinge: HingeConstraintOpts;
|
|
28
|
+
};
|
|
29
|
+
export type NgtcConstraintOptions<TConstraintType extends 'Hinge' | ConstraintTypes> = {
|
|
30
|
+
injector?: Injector;
|
|
31
|
+
disableOnStart?: boolean;
|
|
32
|
+
options?: NgtcConstraintOptionsMap[TConstraintType];
|
|
33
|
+
};
|
|
34
|
+
export declare const injectPointToPoint: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | ElementRef<A>, bodyB: B | ElementRef<B>, options?: NgtcConstraintOptions<"PointToPoint"> | undefined) => NgtcConstraintReturn<"PointToPoint", A, B>;
|
|
35
|
+
export declare const injectConeTwist: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | ElementRef<A>, bodyB: B | ElementRef<B>, options?: NgtcConstraintOptions<"ConeTwist"> | undefined) => NgtcConstraintReturn<"ConeTwist", A, B>;
|
|
36
|
+
export declare const injectDistance: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | ElementRef<A>, bodyB: B | ElementRef<B>, options?: NgtcConstraintOptions<"Distance"> | undefined) => NgtcConstraintReturn<"Distance", A, B>;
|
|
37
|
+
export declare const injectLock: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | ElementRef<A>, bodyB: B | ElementRef<B>, options?: NgtcConstraintOptions<"Lock"> | undefined) => NgtcConstraintReturn<"Lock", A, B>;
|
|
38
|
+
export declare const injectHinge: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | ElementRef<A>, bodyB: B | ElementRef<B>, options?: NgtcConstraintOptions<"Hinge"> | undefined) => NgtcConstraintReturn<"Hinge", A, B>;
|
package/debug/lib/debug.d.ts
CHANGED
|
@@ -1,43 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type BodyProps, type BodyShapeType } from '@pmndrs/cannon-worker-api';
|
|
1
|
+
import { BodyProps, BodyShapeType } from '@pmndrs/cannon-worker-api';
|
|
3
2
|
import CannonDebugger from 'cannon-es-debugger';
|
|
4
|
-
import * as THREE from 'three';
|
|
5
3
|
import * as i0 from "@angular/core";
|
|
6
4
|
export declare const injectNgtcDebugApi: {
|
|
7
5
|
(): {
|
|
8
6
|
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
9
|
-
remove: (
|
|
7
|
+
remove: (uuid: string) => void;
|
|
10
8
|
};
|
|
11
9
|
(injectOptions: import("@angular/core").InjectOptions & {
|
|
12
10
|
optional?: false | undefined;
|
|
11
|
+
} & {
|
|
12
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
13
13
|
}): {
|
|
14
14
|
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
15
|
-
remove: (
|
|
15
|
+
remove: (uuid: string) => void;
|
|
16
16
|
};
|
|
17
|
-
(injectOptions: import("@angular/core").InjectOptions
|
|
17
|
+
(injectOptions: import("@angular/core").InjectOptions & {
|
|
18
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
19
|
+
}): {
|
|
18
20
|
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
19
|
-
remove: (
|
|
21
|
+
remove: (uuid: string) => void;
|
|
20
22
|
} | null;
|
|
21
|
-
}, provideNgtcDebugApi: (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} | undefined) => import("@angular/core").Provider;
|
|
25
|
-
export declare class NgtcDebug implements OnInit {
|
|
23
|
+
}, provideNgtcDebugApi: () => import("@angular/core").Provider;
|
|
24
|
+
export interface NgtcDebugInputs {
|
|
25
|
+
enabled: boolean;
|
|
26
26
|
color: string;
|
|
27
|
-
scale: number;
|
|
28
27
|
impl: typeof CannonDebugger;
|
|
29
|
-
|
|
28
|
+
scale: number;
|
|
29
|
+
}
|
|
30
|
+
export declare class NgtcDebug {
|
|
31
|
+
private store;
|
|
32
|
+
private physicsApi;
|
|
33
|
+
debug: import("@angular/core").InputSignalWithTransform<NgtcDebugInputs, "" | Partial<NgtcDebugInputs>>;
|
|
34
|
+
private defaultScene;
|
|
35
|
+
private scene;
|
|
30
36
|
private bodies;
|
|
31
37
|
private bodyMap;
|
|
32
|
-
private physicsApi;
|
|
33
|
-
scene: THREE.Scene;
|
|
34
38
|
private cannonDebugger;
|
|
35
39
|
api: {
|
|
36
40
|
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
37
|
-
remove: (
|
|
41
|
+
remove: (uuid: string) => void;
|
|
38
42
|
};
|
|
39
43
|
constructor();
|
|
40
|
-
ngOnInit(): void;
|
|
41
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtcDebug, never>;
|
|
42
|
-
static
|
|
45
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgtcDebug, "ngtc-physics[debug]", never, { "debug": { "alias": "debug"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
43
46
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2FuZ3VsYXItdGhyZWUtY2Fubm9uLWJvZHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib/body';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9ib2R5L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2JvZHknO1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuL2xpYi90eXBlcyc7XG4iXX0=
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { afterNextRender } from '@angular/core';
|
|
2
|
+
import { injectNgtRef } from 'angular-three';
|
|
3
|
+
import { injectPhysicsApi } from 'angular-three-cannon';
|
|
4
|
+
import { injectNgtcDebugApi } from 'angular-three-cannon/debug';
|
|
5
|
+
import { assertInjector } from 'ngxtension/assert-injector';
|
|
6
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
7
|
+
import { DynamicDrawUsage, InstancedMesh, Object3D } from 'three';
|
|
8
|
+
import { defaultTransformArgs, makeBodyApi, prepare, setupCollision } from './utils';
|
|
9
|
+
function createInjectBody(type) {
|
|
10
|
+
return (getPropFn, options) => injectBody(type, getPropFn, options);
|
|
11
|
+
}
|
|
12
|
+
function injectBody(type, getPropFn, { transformArgs, ref, injector } = {}) {
|
|
13
|
+
return assertInjector(injectBody, injector, () => {
|
|
14
|
+
const physicsApi = injectPhysicsApi({ optional: true });
|
|
15
|
+
if (!physicsApi) {
|
|
16
|
+
throw new Error(`[NGT Cannon] injectBody was called outside of <ngtc-physics>`);
|
|
17
|
+
}
|
|
18
|
+
const autoEffect = injectAutoEffect();
|
|
19
|
+
const debugApi = injectNgtcDebugApi({ optional: true });
|
|
20
|
+
const { add: addToDebug, remove: removeFromDebug } = debugApi || {};
|
|
21
|
+
const transform = transformArgs ?? defaultTransformArgs[type];
|
|
22
|
+
const bodyRef = injectNgtRef(ref);
|
|
23
|
+
const bodyResult = { ref: bodyRef, api: makeBodyApi(bodyRef, physicsApi) };
|
|
24
|
+
afterNextRender(() => {
|
|
25
|
+
autoEffect(() => {
|
|
26
|
+
const currentWorker = physicsApi.worker();
|
|
27
|
+
if (!currentWorker)
|
|
28
|
+
return;
|
|
29
|
+
if (!bodyResult.ref.nativeElement) {
|
|
30
|
+
bodyResult.ref.nativeElement = new Object3D();
|
|
31
|
+
}
|
|
32
|
+
const object = bodyResult.ref.nativeElement;
|
|
33
|
+
const [uuid, props] = (() => {
|
|
34
|
+
let uuids = [];
|
|
35
|
+
let temp;
|
|
36
|
+
if (object instanceof InstancedMesh) {
|
|
37
|
+
object.instanceMatrix.setUsage(DynamicDrawUsage);
|
|
38
|
+
uuids = new Array(object.count).fill(0).map((_, i) => `${object.uuid}/${i}`);
|
|
39
|
+
temp = new Object3D();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
uuids = [object.uuid];
|
|
43
|
+
}
|
|
44
|
+
return [
|
|
45
|
+
uuids,
|
|
46
|
+
uuids.map((id, index) => {
|
|
47
|
+
const props = getPropFn(index);
|
|
48
|
+
if (temp) {
|
|
49
|
+
prepare(temp, props);
|
|
50
|
+
object.setMatrixAt(index, temp.matrix);
|
|
51
|
+
object.instanceMatrix.needsUpdate = true;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
prepare(object, props);
|
|
55
|
+
}
|
|
56
|
+
physicsApi.refs[id] = object;
|
|
57
|
+
addToDebug?.(id, props, type);
|
|
58
|
+
setupCollision(physicsApi.events, props, id);
|
|
59
|
+
// @ts-expect-error - if args is undefined, there's default
|
|
60
|
+
return { ...props, args: transform(props.args) };
|
|
61
|
+
}),
|
|
62
|
+
];
|
|
63
|
+
})();
|
|
64
|
+
// Register on mount, unregister on unmount
|
|
65
|
+
currentWorker.addBodies({
|
|
66
|
+
props: props.map(({ onCollide, onCollideBegin, onCollideEnd, ...serializableProps }) => {
|
|
67
|
+
return { onCollide: Boolean(onCollide), ...serializableProps };
|
|
68
|
+
}),
|
|
69
|
+
type,
|
|
70
|
+
uuid,
|
|
71
|
+
});
|
|
72
|
+
return () => {
|
|
73
|
+
uuid.forEach((id) => {
|
|
74
|
+
delete physicsApi.refs[id];
|
|
75
|
+
removeFromDebug?.(id);
|
|
76
|
+
delete physicsApi.events[id];
|
|
77
|
+
});
|
|
78
|
+
currentWorker.removeBodies({ uuid });
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
return bodyResult;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
export const injectBox = createInjectBody('Box');
|
|
86
|
+
export const injectConvexPolyhedron = createInjectBody('ConvexPolyhedron');
|
|
87
|
+
export const injectCylinder = createInjectBody('Cylinder');
|
|
88
|
+
export const injectHeightfield = createInjectBody('Heightfield');
|
|
89
|
+
export const injectParticle = createInjectBody('Particle');
|
|
90
|
+
export const injectPlane = createInjectBody('Plane');
|
|
91
|
+
export const injectSphere = createInjectBody('Sphere');
|
|
92
|
+
export const injectTrimesh = createInjectBody('Trimesh');
|
|
93
|
+
export const injectCompound = createInjectBody('Compound');
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQVFyRixTQUFTLGdCQUFnQixDQUErQixJQUFZO0lBQ25FLE9BQU8sQ0FDTixTQUFtRCxFQUNuRCxPQUFpQyxFQUNoQyxFQUFFLENBQUMsVUFBVSxDQUFrQixJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FDbEIsSUFBWSxFQUNaLFNBQW1ELEVBQ25ELEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFFOUQsT0FBTyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7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QyxDQUFDO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0b3IsIGFmdGVyTmV4dFJlbmRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9keVNoYXBlVHlwZSB9IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaW5qZWN0Tmd0UmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RQaHlzaWNzQXBpIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0IHsgaW5qZWN0Tmd0Y0RlYnVnQXBpIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24vZGVidWcnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBEeW5hbWljRHJhd1VzYWdlLCBJbnN0YW5jZWRNZXNoLCBPYmplY3QzRCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndGNBcmdGbiwgTmd0Y0JvZHlQcm9wc01hcCwgTmd0Y0JvZHlSZXR1cm4sIE5ndGNHZXRCeUluZGV4IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBkZWZhdWx0VHJhbnNmb3JtQXJncywgbWFrZUJvZHlBcGksIHByZXBhcmUsIHNldHVwQ29sbGlzaW9uIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0JvZHlPcHRpb25zPFRTaGFwZSBleHRlbmRzIEJvZHlTaGFwZVR5cGU+IHtcblx0dHJhbnNmb3JtQXJncz86IE5ndGNBcmdGbjxOZ3RjQm9keVByb3BzTWFwW1RTaGFwZV0+O1xuXHRyZWY/OiBFbGVtZW50UmVmPE9iamVjdDNEPjtcblx0aW5qZWN0b3I/OiBJbmplY3Rvcjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSW5qZWN0Qm9keTxUU2hhcGUgZXh0ZW5kcyBCb2R5U2hhcGVUeXBlPih0eXBlOiBUU2hhcGUpIHtcblx0cmV0dXJuIDxUT2JqZWN0IGV4dGVuZHMgT2JqZWN0M0Q+KFxuXHRcdGdldFByb3BGbjogTmd0Y0dldEJ5SW5kZXg8Tmd0Y0JvZHlQcm9wc01hcFtUU2hhcGVdPixcblx0XHRvcHRpb25zPzogTmd0Y0JvZHlPcHRpb25zPFRTaGFwZT4sXG5cdCkgPT4gaW5qZWN0Qm9keTxUU2hhcGUsIFRPYmplY3Q+KHR5cGUsIGdldFByb3BGbiwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGluamVjdEJvZHk8VFNoYXBlIGV4dGVuZHMgQm9keVNoYXBlVHlwZSwgVE9iamVjdCBleHRlbmRzIE9iamVjdDNEPihcblx0dHlwZTogVFNoYXBlLFxuXHRnZXRQcm9wRm46IE5ndGNHZXRCeUluZGV4PE5ndGNCb2R5UHJvcHNNYXBbVFNoYXBlXT4sXG5cdHsgdHJhbnNmb3JtQXJncywgcmVmLCBpbmplY3RvciB9OiBOZ3RjQm9keU9wdGlvbnM8VFNoYXBlPiA9IHt9LFxuKTogTmd0Y0JvZHlSZXR1cm48VE9iamVjdD4ge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0Qm9keSwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBwaHlzaWNzQXBpID0gaW5qZWN0UGh5c2ljc0FwaSh7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG5cdFx0aWYgKCFwaHlzaWNzQXBpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFtOR1QgQ2Fubm9uXSBpbmplY3RCb2R5IHdhcyBjYWxsZWQgb3V0c2lkZSBvZiA8bmd0Yy1waHlzaWNzPmApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdFx0Y29uc3QgZGVidWdBcGkgPSBpbmplY3ROZ3RjRGVidWdBcGkoeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuXHRcdGNvbnN0IHsgYWRkOiBhZGRUb0RlYnVnLCByZW1vdmU6IHJlbW92ZUZyb21EZWJ1ZyB9ID0gZGVidWdBcGkgfHwge307XG5cdFx0Y29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3JtQXJncyA/PyBkZWZhdWx0VHJhbnNmb3JtQXJnc1t0eXBlXTtcblx0XHRjb25zdCBib2R5UmVmID0gaW5qZWN0Tmd0UmVmKHJlZik7XG5cdFx0Y29uc3QgYm9keVJlc3VsdCA9IHsgcmVmOiBib2R5UmVmLCBhcGk6IG1ha2VCb2R5QXBpKGJvZHlSZWYsIHBoeXNpY3NBcGkpIH07XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRXb3JrZXIgPSBwaHlzaWNzQXBpLndvcmtlcigpO1xuXHRcdFx0XHRpZiAoIWN1cnJlbnRXb3JrZXIpIHJldHVybjtcblxuXHRcdFx0XHRpZiAoIWJvZHlSZXN1bHQucmVmLm5hdGl2ZUVsZW1lbnQpIHtcblx0XHRcdFx0XHRib2R5UmVzdWx0LnJlZi5uYXRpdmVFbGVtZW50ID0gbmV3IE9iamVjdDNEKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBvYmplY3QgPSBib2R5UmVzdWx0LnJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRjb25zdCBbdXVpZCwgcHJvcHNdID0gKCgpID0+IHtcblx0XHRcdFx0XHRsZXQgdXVpZHM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRcdFx0bGV0IHRlbXA6IE9iamVjdDNEO1xuXHRcdFx0XHRcdGlmIChvYmplY3QgaW5zdGFuY2VvZiBJbnN0YW5jZWRNZXNoKSB7XG5cdFx0XHRcdFx0XHRvYmplY3QuaW5zdGFuY2VNYXRyaXguc2V0VXNhZ2UoRHluYW1pY0RyYXdVc2FnZSk7XG5cdFx0XHRcdFx0XHR1dWlkcyA9IG5ldyBBcnJheShvYmplY3QuY291bnQpLmZpbGwoMCkubWFwKChfLCBpKSA9PiBgJHtvYmplY3QudXVpZH0vJHtpfWApO1xuXHRcdFx0XHRcdFx0dGVtcCA9IG5ldyBPYmplY3QzRCgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1dWlkcyA9IFtvYmplY3QudXVpZF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0XHR1dWlkcyxcblx0XHRcdFx0XHRcdHV1aWRzLm1hcCgoaWQsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHByb3BzID0gZ2V0UHJvcEZuKGluZGV4KTtcblx0XHRcdFx0XHRcdFx0aWYgKHRlbXApIHtcblx0XHRcdFx0XHRcdFx0XHRwcmVwYXJlKHRlbXAsIHByb3BzKTtcblx0XHRcdFx0XHRcdFx0XHQob2JqZWN0IGFzIEluc3RhbmNlZE1lc2gpLnNldE1hdHJpeEF0KGluZGV4LCB0ZW1wLm1hdHJpeCk7XG5cdFx0XHRcdFx0XHRcdFx0KG9iamVjdCBhcyBJbnN0YW5jZWRNZXNoKS5pbnN0YW5jZU1hdHJpeC5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJlcGFyZShvYmplY3QsIHByb3BzKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRwaHlzaWNzQXBpLnJlZnNbaWRdID0gb2JqZWN0O1xuXHRcdFx0XHRcdFx0XHRhZGRUb0RlYnVnPy4oaWQsIHByb3BzLCB0eXBlKTtcblx0XHRcdFx0XHRcdFx0c2V0dXBDb2xsaXNpb24ocGh5c2ljc0FwaS5ldmVudHMsIHByb3BzLCBpZCk7XG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBpZiBhcmdzIGlzIHVuZGVmaW5lZCwgdGhlcmUncyBkZWZhdWx0XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7IC4uLnByb3BzLCBhcmdzOiB0cmFuc2Zvcm0ocHJvcHMuYXJncykgfTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdH0pKCk7XG5cdFx0XHRcdC8vIFJlZ2lzdGVyIG9uIG1vdW50LCB1bnJlZ2lzdGVyIG9uIHVubW91bnRcblx0XHRcdFx0Y3VycmVudFdvcmtlci5hZGRCb2RpZXMoe1xuXHRcdFx0XHRcdHByb3BzOiBwcm9wcy5tYXAoKHsgb25Db2xsaWRlLCBvbkNvbGxpZGVCZWdpbiwgb25Db2xsaWRlRW5kLCAuLi5zZXJpYWxpemFibGVQcm9wcyB9KSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geyBvbkNvbGxpZGU6IEJvb2xlYW4ob25Db2xsaWRlKSwgLi4uc2VyaWFsaXphYmxlUHJvcHMgfTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRcdHV1aWQsXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0dXVpZC5mb3JFYWNoKChpZCkgPT4ge1xuXHRcdFx0XHRcdFx0ZGVsZXRlIHBoeXNpY3NBcGkucmVmc1tpZF07XG5cdFx0XHRcdFx0XHRyZW1vdmVGcm9tRGVidWc/LihpZCk7XG5cdFx0XHRcdFx0XHRkZWxldGUgcGh5c2ljc0FwaS5ldmVudHNbaWRdO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGN1cnJlbnRXb3JrZXIucmVtb3ZlQm9kaWVzKHsgdXVpZCB9KTtcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGJvZHlSZXN1bHQgYXMgTmd0Y0JvZHlSZXR1cm48VE9iamVjdD47XG5cdH0pO1xufVxuXG5leHBvcnQgY29uc3QgaW5qZWN0Qm94ID0gY3JlYXRlSW5qZWN0Qm9keSgnQm94Jyk7XG5leHBvcnQgY29uc3QgaW5qZWN0Q29udmV4UG9seWhlZHJvbiA9IGNyZWF0ZUluamVjdEJvZHkoJ0NvbnZleFBvbHloZWRyb24nKTtcbmV4cG9ydCBjb25zdCBpbmplY3RDeWxpbmRlciA9IGNyZWF0ZUluamVjdEJvZHkoJ0N5bGluZGVyJyk7XG5leHBvcnQgY29uc3QgaW5qZWN0SGVpZ2h0ZmllbGQgPSBjcmVhdGVJbmplY3RCb2R5KCdIZWlnaHRmaWVsZCcpO1xuZXhwb3J0IGNvbnN0IGluamVjdFBhcnRpY2xlID0gY3JlYXRlSW5qZWN0Qm9keSgnUGFydGljbGUnKTtcbmV4cG9ydCBjb25zdCBpbmplY3RQbGFuZSA9IGNyZWF0ZUluamVjdEJvZHkoJ1BsYW5lJyk7XG5leHBvcnQgY29uc3QgaW5qZWN0U3BoZXJlID0gY3JlYXRlSW5qZWN0Qm9keSgnU3BoZXJlJyk7XG5leHBvcnQgY29uc3QgaW5qZWN0VHJpbWVzaCA9IGNyZWF0ZUluamVjdEJvZHkoJ1RyaW1lc2gnKTtcbmV4cG9ydCBjb25zdCBpbmplY3RDb21wb3VuZCA9IGNyZWF0ZUluamVjdEJvZHkoJ0NvbXBvdW5kJyk7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9ib2R5L3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEF0b21pY05hbWUsXG5cdEF0b21pY1Byb3BzLFxuXHRCb2R5UHJvcHMsXG5cdEJveFByb3BzLFxuXHRDb21wb3VuZEJvZHlQcm9wcyxcblx0Q29udmV4UG9seWhlZHJvblByb3BzLFxuXHRDeWxpbmRlclByb3BzLFxuXHRIZWlnaHRmaWVsZFByb3BzLFxuXHRQYXJ0aWNsZVByb3BzLFxuXHRQbGFuZVByb3BzLFxuXHRRdWFkLFxuXHRTcGhlcmVQcm9wcyxcblx0VHJpbWVzaFByb3BzLFxuXHRUcmlwbGV0LFxuXHRWZWN0b3JOYW1lLFxufSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IE5ndEluamVjdGVkUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBFdWxlciwgT2JqZWN0M0QsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0F0b21pY0FwaTxLIGV4dGVuZHMgQXRvbWljTmFtZT4ge1xuXHRzZXQ6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+IHZvaWQ7XG5cdHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IEF0b21pY1Byb3BzW0tdKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNRdWF0ZXJuaW9uQXBpIHtcblx0Y29weTogKHsgdywgeCwgeSwgeiB9OiBRdWF0ZXJuaW9uKSA9PiB2b2lkO1xuXHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCB3OiBudW1iZXIpID0+IHZvaWQ7XG5cdHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IFF1YWQpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y1ZlY3RvckFwaSB7XG5cdGNvcHk6ICh7IHgsIHksIHogfTogVmVjdG9yMyB8IEV1bGVyKSA9PiB2b2lkO1xuXHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB2b2lkO1xuXHRzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBUcmlwbGV0KSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjV29ya2VyQXBpID0ge1xuXHRbSyBpbiBBdG9taWNOYW1lXTogTmd0Y0F0b21pY0FwaTxLPjtcbn0gJiB7XG5cdFtLIGluIFZlY3Rvck5hbWVdOiBOZ3RjVmVjdG9yQXBpO1xufSAmIHtcblx0YXBwbHlGb3JjZTogKGZvcmNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRhcHBseUltcHVsc2U6IChpbXB1bHNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRhcHBseUxvY2FsRm9yY2U6IChmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcblx0YXBwbHlMb2NhbEltcHVsc2U6IChpbXB1bHNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRhcHBseVRvcnF1ZTogKHRvcnF1ZTogVHJpcGxldCkgPT4gdm9pZDtcblx0cXVhdGVybmlvbjogTmd0Y1F1YXRlcm5pb25BcGk7XG5cdHJvdGF0aW9uOiBOZ3RjVmVjdG9yQXBpO1xuXHRzY2FsZU92ZXJyaWRlOiAoc2NhbGU6IFRyaXBsZXQpID0+IHZvaWQ7XG5cdHNsZWVwOiAoKSA9PiB2b2lkO1xuXHR3YWtlVXA6ICgpID0+IHZvaWQ7XG5cdHJlbW92ZTogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0JvZHlQdWJsaWNBcGkgZXh0ZW5kcyBOZ3RjV29ya2VyQXBpIHtcblx0YXQ6IChpbmRleDogbnVtYmVyKSA9PiBOZ3RjV29ya2VyQXBpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNCb2R5UmV0dXJuPFRPYmplY3QgZXh0ZW5kcyBPYmplY3QzRD4ge1xuXHRyZWY6IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+O1xuXHRhcGk6IE5ndGNCb2R5UHVibGljQXBpO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjQm9keVByb3BzTWFwID0ge1xuXHRQbGFuZTogUGxhbmVQcm9wcztcblx0Qm94OiBCb3hQcm9wcztcblx0UGFydGljbGU6IFBhcnRpY2xlUHJvcHM7XG5cdEN5bGluZGVyOiBDeWxpbmRlclByb3BzO1xuXHRTcGhlcmU6IFNwaGVyZVByb3BzO1xuXHRUcmltZXNoOiBUcmltZXNoUHJvcHM7XG5cdEhlaWdodGZpZWxkOiBIZWlnaHRmaWVsZFByb3BzO1xuXHRDb252ZXhQb2x5aGVkcm9uOiBDb252ZXhQb2x5aGVkcm9uUHJvcHM7XG5cdENvbXBvdW5kOiBDb21wb3VuZEJvZHlQcm9wcztcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNHZXRCeUluZGV4PFQgZXh0ZW5kcyBCb2R5UHJvcHM+ID0gKGluZGV4OiBudW1iZXIpID0+IFQ7XG5leHBvcnQgdHlwZSBOZ3RjQXJnRm48VCBleHRlbmRzIEJvZHlQcm9wcz4gPSAoYXJnczogTm9uTnVsbGFibGU8VFsnYXJncyddPikgPT4gdHlwZW9mIGFyZ3M7XG4iXX0=
|