next-flow-interface 0.27.8 → 0.27.13
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/index.d.ts +681 -332
- package/package.json +2 -2
package/index.d.ts
CHANGED
|
@@ -42,14 +42,12 @@ import { Material } from '@babylonjs/core';
|
|
|
42
42
|
import { Mesh } from '@babylonjs/core';
|
|
43
43
|
import { MouseEvent as MouseEvent_2 } from 'react';
|
|
44
44
|
import { MouseEventHandler } from 'react';
|
|
45
|
-
import { MultipartUploadResult } from 'ali-oss';
|
|
46
45
|
import { NavigateOptions } from 'next/dist/shared/lib/app-router-context.shared-runtime';
|
|
47
46
|
import { Node as Node_2 } from '@babylonjs/core';
|
|
48
47
|
import { NodeMaterial } from '@babylonjs/core';
|
|
49
48
|
import { NodeMaterialBlock } from '@babylonjs/core';
|
|
50
49
|
import { NodeMaterialBlockConnectionPointTypes } from '@babylonjs/core';
|
|
51
50
|
import { Observable } from '@babylonjs/core/Misc/observable';
|
|
52
|
-
import OSS from 'ali-oss';
|
|
53
51
|
import { PBRMaterial } from '@babylonjs/core';
|
|
54
52
|
import { PointerEventHandler } from 'react';
|
|
55
53
|
import { PrefetchOptions } from 'next/dist/shared/lib/app-router-context.shared-runtime';
|
|
@@ -66,6 +64,8 @@ import { RecursiveObject } from 'rhine-var';
|
|
|
66
64
|
import { RedirectType } from 'next/navigation';
|
|
67
65
|
import { Ref } from 'react';
|
|
68
66
|
import { RefAttributes } from 'react';
|
|
67
|
+
import type { Resource } from 'rhine-base/network';
|
|
68
|
+
import type { ResourceFileInfo } from 'rhine-base/network';
|
|
69
69
|
import { RhineVarArray } from 'rhine-var';
|
|
70
70
|
import { RhineVarMap } from 'rhine-var';
|
|
71
71
|
import { Root } from 'react-dom/client';
|
|
@@ -230,11 +230,10 @@ declare function approximatelyEqual(n1: number, n2: number, bias?: number): bool
|
|
|
230
230
|
|
|
231
231
|
|
|
232
232
|
|
|
233
|
-
|
|
234
233
|
/**
|
|
235
234
|
* @public
|
|
236
235
|
*/
|
|
237
|
-
export declare type Attribute<T extends object =
|
|
236
|
+
export declare type Attribute<T extends object = object> = NodeAttribute<T> | StepAttribute<T> | GlobalAttribute<T>;
|
|
238
237
|
|
|
239
238
|
/**
|
|
240
239
|
* @public
|
|
@@ -252,15 +251,15 @@ export declare class AttributeService {
|
|
|
252
251
|
stepAttributes: StepAttribute[];
|
|
253
252
|
globalAttributes: GlobalAttribute[];
|
|
254
253
|
/** 注册属性 */
|
|
255
|
-
register<T extends object =
|
|
254
|
+
register<T extends object = object>(attribute: Attribute<T>): void;
|
|
256
255
|
/** 通过路径精确匹配获取属性 */
|
|
257
|
-
get<T extends object =
|
|
256
|
+
get<T extends object = object>(type: AttributeType, path: RvPath | string): Attribute<T> | undefined;
|
|
258
257
|
/** 通过路径获取 NodeAttribute */
|
|
259
|
-
getNodeAttribute<T extends object =
|
|
258
|
+
getNodeAttribute<T extends object = object>(path: RvPath | string): NodeAttribute<T> | undefined;
|
|
260
259
|
/** 通过路径获取 StepAttribute */
|
|
261
|
-
getStepAttribute<T extends object =
|
|
260
|
+
getStepAttribute<T extends object = object>(path: RvPath | string): StepAttribute<T> | undefined;
|
|
262
261
|
/** 通过路径获取 GlobalAttribute */
|
|
263
|
-
getGlobalAttribute<T extends object =
|
|
262
|
+
getGlobalAttribute<T extends object = object>(path: RvPath | string): GlobalAttribute<T> | undefined;
|
|
264
263
|
/** 根据类型获取属性列表,不传入类型的时候返回所有 */
|
|
265
264
|
getList(type?: AttributeType): Attribute[];
|
|
266
265
|
isPathConflict(type: AttributeType, path: RvPath): boolean;
|
|
@@ -424,7 +423,7 @@ export declare class AwarenessService {
|
|
|
424
423
|
/**
|
|
425
424
|
* @public
|
|
426
425
|
*/
|
|
427
|
-
export declare abstract class BaseAttribute<T extends object =
|
|
426
|
+
export declare abstract class BaseAttribute<T extends object = object> {
|
|
428
427
|
abstract type: AttributeType;
|
|
429
428
|
abstract path: RvPath;
|
|
430
429
|
defaultValue: T;
|
|
@@ -826,6 +825,7 @@ export declare const ClipboardUtils: {
|
|
|
826
825
|
declare function computeSHA256(buffer: BufferSource): Promise<string>;
|
|
827
826
|
|
|
828
827
|
|
|
828
|
+
|
|
829
829
|
/**
|
|
830
830
|
* @public
|
|
831
831
|
*/
|
|
@@ -1786,7 +1786,7 @@ export declare class FirstLoadService {
|
|
|
1786
1786
|
* 开始加载所有文件
|
|
1787
1787
|
*
|
|
1788
1788
|
* @remarks
|
|
1789
|
-
* 启动首次加载流程,会遍历
|
|
1789
|
+
* 启动首次加载流程,会遍历 RvResourceService 缓存中的所有文件并开始下载。
|
|
1790
1790
|
* 该方法会:
|
|
1791
1791
|
* 1. 检查是否有需要加载的文件
|
|
1792
1792
|
* 2. 跳过正在上传中的文件(uploading = true)
|
|
@@ -2232,7 +2232,7 @@ declare function isAttach(mime?: string): boolean;
|
|
|
2232
2232
|
|
|
2233
2233
|
declare function isBabylon(mime?: string): boolean;
|
|
2234
2234
|
|
|
2235
|
-
declare function isChangeEventType(type: EventType | string):
|
|
2235
|
+
declare function isChangeEventType(type: EventType | string): boolean;
|
|
2236
2236
|
|
|
2237
2237
|
/**
|
|
2238
2238
|
* @public
|
|
@@ -2492,17 +2492,15 @@ export declare class LocalDataService {
|
|
|
2492
2492
|
/**
|
|
2493
2493
|
* 加载一个文件到本地
|
|
2494
2494
|
*
|
|
2495
|
-
*
|
|
2495
|
+
* 通过 fileId 从后端获取签名下载 URL,然后下载文件到本地。
|
|
2496
2496
|
* 支持下载进度跟踪,下载完成后会自动处理文件内容(JSON、文本等)。
|
|
2497
|
-
* 如果文件已存在且已加载完成,则直接返回已存在的本地数据。
|
|
2498
2497
|
*
|
|
2499
|
-
* @param
|
|
2500
|
-
* @param url - 文件的直接下载链接、Blob URL 或 OSS 链接
|
|
2498
|
+
* @param fileId - 后端文件 ID
|
|
2501
2499
|
* @param mime - 文件 MIME 类型,默认为 UNKNOWN
|
|
2502
2500
|
* @returns Promise<LocalData> - 返回本地数据对象的 Promise
|
|
2503
2501
|
* @public
|
|
2504
2502
|
*/
|
|
2505
|
-
load(
|
|
2503
|
+
load(fileId: string, mime?: string): Promise<LocalData>;
|
|
2506
2504
|
/**
|
|
2507
2505
|
* 通过 File 对象加载文件到本地
|
|
2508
2506
|
*
|
|
@@ -2539,35 +2537,6 @@ export declare class LocalDataService {
|
|
|
2539
2537
|
*/
|
|
2540
2538
|
remove(fid: string): boolean;
|
|
2541
2539
|
/**
|
|
2542
|
-
* 暂停文件下载
|
|
2543
|
-
*
|
|
2544
|
-
* @param fid - 文件ID
|
|
2545
|
-
* @returns 是否成功暂停
|
|
2546
|
-
* @public
|
|
2547
|
-
* @throws 该方法尚未实现
|
|
2548
|
-
*/
|
|
2549
|
-
pause(fid: string): boolean;
|
|
2550
|
-
/**
|
|
2551
|
-
* 恢复文件下载
|
|
2552
|
-
*
|
|
2553
|
-
* @param fid - 文件ID
|
|
2554
|
-
* @returns 是否成功恢复
|
|
2555
|
-
* @public
|
|
2556
|
-
* @throws 该方法尚未实现
|
|
2557
|
-
*/
|
|
2558
|
-
resume(fid: string): boolean;
|
|
2559
|
-
/**
|
|
2560
|
-
* 取消文件下载
|
|
2561
|
-
*
|
|
2562
|
-
* @param fid - 文件ID
|
|
2563
|
-
* @returns 是否成功取消
|
|
2564
|
-
* @public
|
|
2565
|
-
* @throws 该方法尚未实现
|
|
2566
|
-
*/
|
|
2567
|
-
cancel(fid: string): boolean;
|
|
2568
|
-
/**
|
|
2569
|
-
* 获取本地文件的 Blob URL
|
|
2570
|
-
*
|
|
2571
2540
|
* 将本地数据转换为浏览器可用的 Blob URL,用于在浏览器中显示或下载文件。
|
|
2572
2541
|
* 如果数据类型是 BLOB,则创建 Blob URL;如果是 OBJECT,则创建 MediaSource URL。
|
|
2573
2542
|
*
|
|
@@ -2644,9 +2613,33 @@ export declare class LocalDataService {
|
|
|
2644
2613
|
* @public
|
|
2645
2614
|
*/
|
|
2646
2615
|
unsubscribeSingle(fid: string, subscriber: LocalDataServiceSubscriber): void;
|
|
2647
|
-
|
|
2616
|
+
/**
|
|
2617
|
+
* 文件加载完成后执行回调
|
|
2618
|
+
*
|
|
2619
|
+
* 如果文件已加载完成,立即执行回调;否则订阅 LOADED 事件,触发后自动取消订阅。
|
|
2620
|
+
*
|
|
2621
|
+
* @param fid - 文件 ID
|
|
2622
|
+
* @param subscriber - 加载完成后的回调函数
|
|
2623
|
+
* @public
|
|
2624
|
+
*/
|
|
2648
2625
|
afterLoaded(fid: string, subscriber: (localData: LocalData) => void): void;
|
|
2626
|
+
/**
|
|
2627
|
+
* 等待文件加载完成
|
|
2628
|
+
*
|
|
2629
|
+
* 返回一个 Promise,在文件加载完成时 resolve。
|
|
2630
|
+
*
|
|
2631
|
+
* @param fid - 文件 ID
|
|
2632
|
+
* @returns 加载完成的本地数据对象
|
|
2633
|
+
* @public
|
|
2634
|
+
*/
|
|
2649
2635
|
waitLoaded(fid: string): Promise<LocalData>;
|
|
2636
|
+
/**
|
|
2637
|
+
* 检查文件是否已加载完成
|
|
2638
|
+
*
|
|
2639
|
+
* @param fid - 文件 ID
|
|
2640
|
+
* @returns true 已加载,false 未加载,undefined 文件不存在
|
|
2641
|
+
* @public
|
|
2642
|
+
*/
|
|
2650
2643
|
isLoaded(fid: string): boolean | undefined;
|
|
2651
2644
|
}
|
|
2652
2645
|
|
|
@@ -3259,8 +3252,6 @@ export declare const NumberUtils: {
|
|
|
3259
3252
|
isValidNumber: typeof isValidNumber;
|
|
3260
3253
|
};
|
|
3261
3254
|
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
3255
|
/**
|
|
3265
3256
|
* @public
|
|
3266
3257
|
*/
|
|
@@ -3285,245 +3276,78 @@ export declare enum OssUploadInstanceStatus {
|
|
|
3285
3276
|
}
|
|
3286
3277
|
|
|
3287
3278
|
/**
|
|
3288
|
-
*
|
|
3289
|
-
*
|
|
3290
|
-
* @remarks
|
|
3291
|
-
* 该服务负责管理所有 OSS 上传任务队列,提供文件上传、取消、状态监听等功能。
|
|
3292
|
-
* 所有上传任务都会创建对应的 RvFile 记录,并在协同数据中标记 `uploading: true`。
|
|
3293
|
-
* 上传完成后会自动更新 RvFile 的 URL 并移除上传标记。
|
|
3294
|
-
*
|
|
3295
|
-
* @example
|
|
3296
|
-
* ```typescript
|
|
3297
|
-
* // 上传文件
|
|
3298
|
-
* const fid = await OssUploadService.instance.upload(file)
|
|
3279
|
+
* 上传服务
|
|
3299
3280
|
*
|
|
3300
|
-
*
|
|
3301
|
-
*
|
|
3302
|
-
* if (type === OssUploadServiceEventType.PROGRESS) {
|
|
3303
|
-
* console.log(`上传进度: ${instance.progress}%`)
|
|
3304
|
-
* }
|
|
3305
|
-
* })
|
|
3306
|
-
* ```
|
|
3281
|
+
* 委托 rhine-base UploadService 完成文件上传,
|
|
3282
|
+
* 上传完成后将 fileId / resourceId 写入协同数据。
|
|
3307
3283
|
*
|
|
3308
3284
|
* @public
|
|
3309
3285
|
*/
|
|
3310
3286
|
export declare class OssUploadService {
|
|
3311
|
-
|
|
3312
|
-
* 获取 OssUploadService 单例实例
|
|
3313
|
-
*
|
|
3314
|
-
* @returns OssUploadService 单例实例
|
|
3315
|
-
*
|
|
3316
|
-
* @public
|
|
3317
|
-
*/
|
|
3287
|
+
private static _instance;
|
|
3318
3288
|
static get instance(): OssUploadService;
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
* @remarks
|
|
3323
|
-
* 使用 Map 结构存储,key 为文件 ID (fid),value 为上传实例对象。
|
|
3324
|
-
* 上传完成后,实例会从集合中自动移除。
|
|
3325
|
-
*
|
|
3326
|
-
* @public
|
|
3327
|
-
*/
|
|
3289
|
+
private constructor();
|
|
3290
|
+
private initialize;
|
|
3291
|
+
/** 正在上传的实例 Map(fid -> OssUploadInstance) */
|
|
3328
3292
|
instances: Map<string, OssUploadInstance>;
|
|
3329
3293
|
/**
|
|
3330
|
-
*
|
|
3294
|
+
* 根据 fid 获取上传实例
|
|
3331
3295
|
*
|
|
3332
3296
|
* @param fid - 文件 ID
|
|
3333
|
-
* @returns
|
|
3334
|
-
*
|
|
3335
|
-
* @public
|
|
3297
|
+
* @returns 上传实例,不存在则返回 undefined
|
|
3336
3298
|
*/
|
|
3337
3299
|
get(fid: string): OssUploadInstance | undefined;
|
|
3338
3300
|
/**
|
|
3339
|
-
* 检查是否存在指定
|
|
3301
|
+
* 检查是否存在指定 fid 的上传实例
|
|
3340
3302
|
*
|
|
3341
3303
|
* @param fid - 文件 ID
|
|
3342
|
-
* @returns 如果存在返回 true,否则返回 false
|
|
3343
|
-
*
|
|
3344
|
-
* @public
|
|
3345
3304
|
*/
|
|
3346
3305
|
has(fid: string): boolean;
|
|
3347
3306
|
/**
|
|
3348
|
-
*
|
|
3307
|
+
* 检查指定 File 对象是否正在上传中
|
|
3349
3308
|
*
|
|
3350
|
-
* @param file -
|
|
3351
|
-
* @returns 如果该文件已在上传队列中返回 true,否则返回 false
|
|
3352
|
-
*
|
|
3353
|
-
* @remarks
|
|
3354
|
-
* 该方法通过遍历所有上传实例来比较 File 对象引用
|
|
3355
|
-
*
|
|
3356
|
-
* @public
|
|
3309
|
+
* @param file - 浏览器 File 对象
|
|
3357
3310
|
*/
|
|
3358
3311
|
hasFile(file: File): boolean;
|
|
3359
3312
|
/**
|
|
3360
|
-
*
|
|
3361
|
-
*
|
|
3362
|
-
* @defaultValue 100
|
|
3363
|
-
*
|
|
3364
|
-
* @public
|
|
3365
|
-
*/
|
|
3366
|
-
REMOVE_INTERVAL_AFTER_COMPLETED: number;
|
|
3367
|
-
/**
|
|
3368
|
-
* 上传文件到 OSS
|
|
3369
|
-
*
|
|
3370
|
-
* @param file - 要上传的文件对象
|
|
3371
|
-
* @param fid - 文件 ID,如果不提供则自动生成
|
|
3372
|
-
* @param mime - 文件 MIME 类型,如果不提供则自动检测
|
|
3373
|
-
* @param hash - 文件哈希值(可选)
|
|
3374
|
-
* @returns Promise,上传任务启动后返回
|
|
3375
|
-
*
|
|
3376
|
-
* @remarks
|
|
3377
|
-
* 该方法会执行以下操作:
|
|
3378
|
-
* 1. 创建 RvFile 记录,标记 `uploading: true`
|
|
3379
|
-
* 2. 创建上传实例并加入队列
|
|
3380
|
-
* 3. 开始上传并触发相关事件(START、PROGRESS、UPLOADED/FAILED)
|
|
3381
|
-
* 4. 上传成功后更新 RvFile 的 URL 并移除 uploading 标记
|
|
3382
|
-
* 5. 上传失败后自动删除 RvFile 记录
|
|
3383
|
-
* 6. 将文件添加到本地数据服务
|
|
3384
|
-
*
|
|
3385
|
-
* @throws 如果创建 RvFile 失败,抛出 Error
|
|
3386
|
-
*
|
|
3387
|
-
* @example
|
|
3388
|
-
* ```typescript
|
|
3389
|
-
* // 基本用法
|
|
3390
|
-
* await OssUploadService.instance.upload(file)
|
|
3391
|
-
*
|
|
3392
|
-
* // 指定文件 ID
|
|
3393
|
-
* await OssUploadService.instance.upload(file, 'custom-fid')
|
|
3394
|
-
*
|
|
3395
|
-
* // 指定 MIME 类型和哈希值
|
|
3396
|
-
* await OssUploadService.instance.upload(file, 'custom-fid', 'image/png', 'sha256-hash')
|
|
3397
|
-
* ```
|
|
3398
|
-
*
|
|
3399
|
-
* @public
|
|
3400
|
-
*/
|
|
3401
|
-
upload(file: File, fid?: string, mime?: string, hash?: string): Promise<void>;
|
|
3402
|
-
/**
|
|
3403
|
-
* 暂停指定的上传任务
|
|
3404
|
-
*
|
|
3405
|
-
* @param fid - 文件 ID
|
|
3406
|
-
* @returns 暂停操作是否成功
|
|
3407
|
-
*
|
|
3408
|
-
* @remarks
|
|
3409
|
-
* 该方法尚未实现,调用会抛出异常
|
|
3410
|
-
*
|
|
3411
|
-
* @throws 方法未实现错误
|
|
3412
|
-
*
|
|
3413
|
-
* @public
|
|
3414
|
-
*/
|
|
3415
|
-
pause(fid: string): boolean;
|
|
3416
|
-
/**
|
|
3417
|
-
* 恢复指定的上传任务
|
|
3313
|
+
* 上传文件
|
|
3418
3314
|
*
|
|
3419
|
-
*
|
|
3420
|
-
*
|
|
3421
|
-
*
|
|
3422
|
-
* @remarks
|
|
3423
|
-
* 该方法尚未实现,调用会抛出异常
|
|
3424
|
-
*
|
|
3425
|
-
* @throws 方法未实现错误
|
|
3426
|
-
*
|
|
3427
|
-
* @public
|
|
3315
|
+
* 委托 rhine-base UploadService 完成完整上传流程。
|
|
3316
|
+
* 上传完成后自动将 fileId 和 resourceId 写入协同数据。
|
|
3428
3317
|
*/
|
|
3429
|
-
|
|
3318
|
+
upload(file: File, fid?: string, mime?: string): Promise<void>;
|
|
3430
3319
|
/**
|
|
3431
|
-
*
|
|
3320
|
+
* 取消指定文件的上传
|
|
3432
3321
|
*
|
|
3433
3322
|
* @param fid - 文件 ID
|
|
3434
|
-
* @returns
|
|
3435
|
-
*
|
|
3436
|
-
* @remarks
|
|
3437
|
-
* 取消上传后会发布 CANCELED 事件,无论取消是否成功都会发布该事件。
|
|
3438
|
-
* 取消后上传实例仍会保留在队列中,直到超时或手动移除。
|
|
3439
|
-
*
|
|
3440
|
-
* @example
|
|
3441
|
-
* ```typescript
|
|
3442
|
-
* const fid = 'file-id'
|
|
3443
|
-
* if (OssUploadService.instance.cancel(fid)) {
|
|
3444
|
-
* console.log('上传已取消')
|
|
3445
|
-
* }
|
|
3446
|
-
* ```
|
|
3447
|
-
*
|
|
3448
|
-
* @public
|
|
3323
|
+
* @returns 是否成功取消
|
|
3449
3324
|
*/
|
|
3450
3325
|
cancel(fid: string): boolean;
|
|
3326
|
+
private subscribers;
|
|
3327
|
+
private singleSubscribers;
|
|
3451
3328
|
/**
|
|
3452
|
-
*
|
|
3329
|
+
* 订阅所有上传事件
|
|
3453
3330
|
*
|
|
3454
|
-
* @param subscriber -
|
|
3331
|
+
* @param subscriber - 事件回调函数
|
|
3455
3332
|
* @returns 取消订阅的函数
|
|
3456
|
-
*
|
|
3457
|
-
* @remarks
|
|
3458
|
-
* 该方法会监听所有文件的上传事件,包括:
|
|
3459
|
-
* - START: 上传开始
|
|
3460
|
-
* - PROGRESS: 上传进度更新
|
|
3461
|
-
* - UPLOADED: 上传成功
|
|
3462
|
-
* - FAILED: 上传失败
|
|
3463
|
-
* - CANCELED: 上传取消
|
|
3464
|
-
*
|
|
3465
|
-
* @example
|
|
3466
|
-
* ```typescript
|
|
3467
|
-
* const unsubscribe = OssUploadService.instance.subscribe((type, instance) => {
|
|
3468
|
-
* console.log(`文件 ${instance.fid} 状态: ${type}, 进度: ${instance.progress}%`)
|
|
3469
|
-
* })
|
|
3470
|
-
*
|
|
3471
|
-
* // 取消订阅
|
|
3472
|
-
* unsubscribe()
|
|
3473
|
-
* ```
|
|
3474
|
-
*
|
|
3475
|
-
* @public
|
|
3476
3333
|
*/
|
|
3477
3334
|
subscribe(subscriber: OssUploadServiceSubscriber): () => void;
|
|
3478
3335
|
/**
|
|
3479
|
-
*
|
|
3480
|
-
*
|
|
3481
|
-
* @param subscriber - 要取消的订阅回调函数
|
|
3336
|
+
* 取消订阅所有上传事件
|
|
3482
3337
|
*
|
|
3483
|
-
* @
|
|
3484
|
-
* 从订阅列表中移除指定的订阅者
|
|
3485
|
-
*
|
|
3486
|
-
* @public
|
|
3338
|
+
* @param subscriber - 要取消的回调函数
|
|
3487
3339
|
*/
|
|
3488
3340
|
unsubscribe(subscriber: OssUploadServiceSubscriber): void;
|
|
3489
3341
|
/**
|
|
3490
|
-
*
|
|
3342
|
+
* 订阅单个文件的上传事件
|
|
3491
3343
|
*
|
|
3492
|
-
* @param fid -
|
|
3493
|
-
* @param subscriber -
|
|
3344
|
+
* @param fid - 文件 ID
|
|
3345
|
+
* @param subscriber - 事件回调函数
|
|
3494
3346
|
* @returns 取消订阅的函数
|
|
3495
|
-
*
|
|
3496
|
-
* @remarks
|
|
3497
|
-
* 该方法只监听指定文件的上传事件。相比 {@link subscribe},这个方法更适合只关注单个文件的场景。
|
|
3498
|
-
* 事件类型包括:START、PROGRESS、UPLOADED、FAILED、CANCELED
|
|
3499
|
-
*
|
|
3500
|
-
* @example
|
|
3501
|
-
* ```typescript
|
|
3502
|
-
* const unsubscribe = OssUploadService.instance.subscribeSingle('file-id', (type, instance) => {
|
|
3503
|
-
* if (type === OssUploadServiceEventType.UPLOADED) {
|
|
3504
|
-
* console.log('文件上传完成')
|
|
3505
|
-
* }
|
|
3506
|
-
* })
|
|
3507
|
-
*
|
|
3508
|
-
* // 取消订阅
|
|
3509
|
-
* unsubscribe()
|
|
3510
|
-
* ```
|
|
3511
|
-
*
|
|
3512
|
-
* @public
|
|
3513
3347
|
*/
|
|
3514
3348
|
subscribeSingle(fid: string, subscriber: OssUploadServiceSubscriber): () => void;
|
|
3515
|
-
/**
|
|
3516
|
-
* 取消订阅指定文件的上传事件
|
|
3517
|
-
*
|
|
3518
|
-
* @param fid - 文件 ID
|
|
3519
|
-
* @param subscriber - 要取消的订阅回调函数
|
|
3520
|
-
*
|
|
3521
|
-
* @remarks
|
|
3522
|
-
* 从指定文件的订阅列表中移除订阅者
|
|
3523
|
-
*
|
|
3524
|
-
* @public
|
|
3525
|
-
*/
|
|
3526
3349
|
unsubscribeSingle(fid: string, subscriber: OssUploadServiceSubscriber): void;
|
|
3350
|
+
publish(fid: string, type: OssUploadServiceEventType, uploadInstance: OssUploadInstance): void;
|
|
3527
3351
|
}
|
|
3528
3352
|
|
|
3529
3353
|
/**
|
|
@@ -3715,38 +3539,479 @@ export declare interface PluginInformation {
|
|
|
3715
3539
|
|
|
3716
3540
|
|
|
3717
3541
|
/**
|
|
3542
|
+
* 插件系统核心服务
|
|
3543
|
+
*
|
|
3544
|
+
* 本服务是整个插件系统的核心入口,负责插件的完整生命周期管理,包括添加、安装、启用、禁用、卸载等操作。
|
|
3545
|
+
* 插件系统采用插件化架构设计,所有侧边栏、弹窗、功能按钮等都以插件形式存在,可按需装配。
|
|
3546
|
+
*
|
|
3547
|
+
* ## 插件系统架构概览
|
|
3548
|
+
*
|
|
3549
|
+
* 插件系统由以下核心模块组成:
|
|
3550
|
+
*
|
|
3551
|
+
* 1. PluginService (本文件) - 插件生命周期管理核心
|
|
3552
|
+
* 2. PluginConnector - 插件与主项目的桥接器,向window注入全局API
|
|
3553
|
+
* 3. PluginApiProvider - 向插件暴露的主项目服务和组件集合
|
|
3554
|
+
* 4. PluginContainerService - 插件UI容器管理,处理插件的DOM渲染
|
|
3555
|
+
* 5. RvPluginService - 插件协同数据管理,存储插件配置到RhineVar
|
|
3556
|
+
*
|
|
3557
|
+
* ## 插件分类
|
|
3558
|
+
*
|
|
3559
|
+
* 插件按类型(PluginType)分为以下几类:
|
|
3560
|
+
*
|
|
3561
|
+
* - BUTTON: 按钮插件,点击触发动作,无展开内容
|
|
3562
|
+
* - SWITCH: 开关插件,点击切换状态
|
|
3563
|
+
* - DRAWER: 抽屉插件,点击展开侧边栏面板
|
|
3564
|
+
* - DIALOG: 对话框插件,点击弹出模态框
|
|
3565
|
+
* - CONTENT: 内容插件,固定显示在内容区域
|
|
3566
|
+
* - WINDOW: 窗口插件,浮动显示在画布上层
|
|
3567
|
+
* - SERVICE: 服务插件,无UI,仅提供后台服务
|
|
3568
|
+
*
|
|
3569
|
+
* ## 插件来源
|
|
3570
|
+
*
|
|
3571
|
+
* 插件按来源分为两类:
|
|
3572
|
+
*
|
|
3573
|
+
* - 内置插件(BuiltIn): URL以`nfp://`开头,代码打包在主项目中,通过builtInPluginFactory创建实例
|
|
3574
|
+
* - 外部插件(External): URL为http(s)地址,运行时动态加载JS/CSS文件
|
|
3575
|
+
*
|
|
3576
|
+
* ## 插件生命周期
|
|
3577
|
+
*
|
|
3578
|
+
* 插件的完整生命周期如下:
|
|
3579
|
+
*
|
|
3580
|
+
* ```
|
|
3581
|
+
* add -> install -> enable -> open/close -> disable -> uninstall
|
|
3582
|
+
* ```
|
|
3583
|
+
*
|
|
3584
|
+
* 各阶段说明:
|
|
3585
|
+
*
|
|
3586
|
+
* - add: 添加插件配置,创建PluginState,加载外部资源(JS/CSS/国际化文件)
|
|
3587
|
+
* - install: 执行插件的onInstall回调,标记installed=true
|
|
3588
|
+
* - enable: 将插件添加到UI容器,执行onEnable回调,标记enabled=true
|
|
3589
|
+
* - open: 打开可展开的插件(DRAWER/DIALOG/SWITCH)
|
|
3590
|
+
* - close: 关闭已打开的插件
|
|
3591
|
+
* - disable: 从UI容器移除,执行onDisable回调,标记enabled=false
|
|
3592
|
+
* - uninstall: 执行onUninstall回调,移除DOM元素,从plugins Map中删除
|
|
3593
|
+
*
|
|
3594
|
+
* ## 启用级别(EnableLevel)
|
|
3595
|
+
*
|
|
3596
|
+
* 协同数据中定义了插件的启用级别,决定插件在页面加载时的初始状态:
|
|
3597
|
+
*
|
|
3598
|
+
* - NONE: 不加载
|
|
3599
|
+
* - INSTALL: 仅安装,不启用
|
|
3600
|
+
* - ENABLE: 安装并启用,但不打开
|
|
3601
|
+
* - OPEN: 安装、启用并打开
|
|
3602
|
+
*
|
|
3603
|
+
* ## 调试模式
|
|
3604
|
+
*
|
|
3605
|
+
* 支持插件热更新调试:
|
|
3606
|
+
*
|
|
3607
|
+
* - 通过URL参数`?plugin=id:urlPort:hmrPort`快速启动调试
|
|
3608
|
+
* - 通过协同数据`plugin.debug`配置调试插件
|
|
3609
|
+
* - WebSocket监听HMR消息,自动重载插件
|
|
3610
|
+
*
|
|
3611
|
+
* ## 初始化流程
|
|
3612
|
+
*
|
|
3613
|
+
* 1. 等待SyncInitialized状态
|
|
3614
|
+
* 2. 解析URL中的调试插件参数
|
|
3615
|
+
* 3. 并行处理所有配置中的插件(根据EnableLevel执行add/install/enable/open)
|
|
3616
|
+
* 4. 并行启动所有调试插件
|
|
3617
|
+
* 5. 设置PluginEnabled状态
|
|
3618
|
+
* 6. 订阅调试插件配置变化
|
|
3619
|
+
* 7. 检查PreLoaded和PreRendered钩子
|
|
3620
|
+
*
|
|
3621
|
+
* ## 事件订阅
|
|
3622
|
+
*
|
|
3623
|
+
* 通过subscribe/unsubscribe方法订阅插件事件:
|
|
3624
|
+
*
|
|
3625
|
+
* - ADD: 插件添加完成
|
|
3626
|
+
* - INSTALL: 插件安装完成
|
|
3627
|
+
* - ENABLE: 插件启用完成
|
|
3628
|
+
* - DISABLE: 插件禁用完成
|
|
3629
|
+
* - UNINSTALL: 插件卸载完成
|
|
3630
|
+
*
|
|
3631
|
+
* ## 相关文件索引
|
|
3632
|
+
*
|
|
3633
|
+
* 核心服务:
|
|
3634
|
+
* - ./plugin-connector.ts - 插件桥接器,向window注入全局对象供外部插件访问
|
|
3635
|
+
* - ./plugin-api-provider.ts - API提供器,汇总所有向插件暴露的服务、组件、工具函数
|
|
3636
|
+
* - ./plugin-list.tsx - 插件列表,定义所有可用插件的配置信息和内置插件工厂
|
|
3637
|
+
*
|
|
3638
|
+
* 类型定义:
|
|
3639
|
+
* - ./dto/plugin-config.type.ts - 插件配置类型,定义插件的基本信息结构
|
|
3640
|
+
* - ./dto/plugin-state.interface.ts - 插件状态接口,记录插件运行时状态
|
|
3641
|
+
* - ./dto/plugin-event-type.enum.ts - 插件事件类型枚举
|
|
3642
|
+
* - ./dto/plugin-service-subscriber.type.ts - 事件订阅者类型定义
|
|
3643
|
+
*
|
|
3644
|
+
* 插件实例接口:
|
|
3645
|
+
* - ./instance/base-plugin.ts - 插件基础接口,所有插件类型的公共属性
|
|
3646
|
+
* - ./instance/icon-plugin.ts - 图标插件接口,带侧边栏按钮的插件基类
|
|
3647
|
+
* - ./instance/drawer-plugin.ts - 抽屉插件接口,可展开侧边栏面板
|
|
3648
|
+
* - ./instance/dialog-plugin.ts - 对话框插件接口,点击弹出模态框
|
|
3649
|
+
* - ./instance/view-plugin.ts - 视图插件接口,CONTENT和WINDOW类型的基类
|
|
3650
|
+
* - ./instance/dto/plugin-type.enum.ts - 插件类型枚举
|
|
3651
|
+
* - ./instance/dto/icon-plugin-position.enum.ts - 图标插件位置枚举
|
|
3652
|
+
* - ./instance/dto/icon-view-props.interface.ts - 图标视图Props接口
|
|
3653
|
+
* - ./instance/dto/plugin-view-props.interface.ts - 插件视图Props接口
|
|
3654
|
+
*
|
|
3655
|
+
* UI容器管理:
|
|
3656
|
+
* - ./view/plugin-container/plugin-container-service.ts - 容器服务,管理插件的DOM渲染和布局
|
|
3657
|
+
* - ./view/plugin-container/dynamic/icon-button-manager.ts - 图标按钮管理器,创建和管理侧边栏按钮
|
|
3658
|
+
* - ./view/plugin-container/dynamic/plugin-ordering-manager.ts - 排序管理器,处理按钮排序和分割线
|
|
3659
|
+
* - ./view/plugin-container/dynamic/hover-manager.ts - 悬停管理器,处理按钮容器的悬停效果
|
|
3660
|
+
*
|
|
3661
|
+
* 协同数据:
|
|
3662
|
+
* - ../sync/plugin/rv-plugin-service.ts - 插件协同数据服务,管理plugin配置的CRUD
|
|
3663
|
+
* - ../sync/plugin/default-plugin-config.ts - 默认插件配置,定义初始插件列表和启用级别
|
|
3664
|
+
* - ../sync/interface/plugin/rv-plugin.ts - 插件协同数据结构
|
|
3665
|
+
* - ../sync/interface/plugin/rv-plugin-config.interface.ts - 插件配置接口,含EnableLevel和VersionPoint
|
|
3666
|
+
* - ../sync/interface/plugin/rv-plugin-debug.ts - 调试插件配置接口
|
|
3667
|
+
*
|
|
3668
|
+
* 内置插件示例:
|
|
3669
|
+
* - ../nfp/drawer/debug/debug-drawer-plugin.tsx - 调试抽屉插件,DrawerPlugin实现示例
|
|
3670
|
+
* - ../nfp/button/home-button/home-button-plugin.tsx - 主页按钮插件,IconPlugin(BUTTON)实现示例
|
|
3671
|
+
* - ../nfp/switch/select-switch/select-switch-plugin.tsx - 选择开关插件,IconPlugin(SWITCH)实现示例
|
|
3672
|
+
* - ../nfp/dialog/plugin-manage-dialog/plugin-manage-dialog-plugin.tsx - 插件管理对话框,DialogPlugin实现示例
|
|
3673
|
+
* - ../nfp/content/message-display/message-display-plugin.tsx - 消息显示插件,ViewPlugin(CONTENT)实现示例
|
|
3674
|
+
* - ../nfp/window/context-menu-display/context-menu-display-plugin.tsx - 右键菜单插件,ViewPlugin(WINDOW)实现示例
|
|
3675
|
+
*
|
|
3676
|
+
* 工具函数:
|
|
3677
|
+
* - ../../utils/render-mix-view.tsx - 混合视图渲染,支持字符串HTML或React组件
|
|
3678
|
+
* - ../../types/view/mix-view.ts - MixView类型定义
|
|
3679
|
+
*
|
|
3718
3680
|
* @public
|
|
3719
3681
|
*/
|
|
3720
3682
|
export declare class PluginService {
|
|
3683
|
+
/**
|
|
3684
|
+
* 获取 PluginService 单例实例
|
|
3685
|
+
*
|
|
3686
|
+
* 首次访问时会自动创建实例并触发初始化流程。
|
|
3687
|
+
*
|
|
3688
|
+
* @returns PluginService 单例实例
|
|
3689
|
+
*
|
|
3690
|
+
* @example
|
|
3691
|
+
* ```typescript
|
|
3692
|
+
* const pluginService = PluginService.instance
|
|
3693
|
+
* await pluginService.add(config)
|
|
3694
|
+
* ```
|
|
3695
|
+
*/
|
|
3721
3696
|
static get instance(): PluginService;
|
|
3697
|
+
/**
|
|
3698
|
+
* 私有构造函数,确保单例模式
|
|
3699
|
+
*
|
|
3700
|
+
* 构造时自动触发异步初始化流程。
|
|
3701
|
+
*/
|
|
3722
3702
|
private constructor();
|
|
3703
|
+
/**
|
|
3704
|
+
* 已注册插件的状态映射表
|
|
3705
|
+
*
|
|
3706
|
+
* 以插件 ID 为键,存储每个插件的运行时状态信息。
|
|
3707
|
+
* 包含插件实例、DOM 元素引用、安装/启用状态等。
|
|
3708
|
+
*
|
|
3709
|
+
* @see PluginState
|
|
3710
|
+
*/
|
|
3723
3711
|
plugins: Map<string, PluginState>;
|
|
3712
|
+
/**
|
|
3713
|
+
* 详细日志模式开关
|
|
3714
|
+
*
|
|
3715
|
+
* 开启后会在控制台输出更多插件操作的调试信息。
|
|
3716
|
+
* 默认关闭,仅在开发调试时启用。
|
|
3717
|
+
*/
|
|
3724
3718
|
DETAILED_LOG_MODE: boolean;
|
|
3719
|
+
/**
|
|
3720
|
+
* 普通插件安装超时时间(毫秒)
|
|
3721
|
+
*
|
|
3722
|
+
* 等待插件安装完成的最大时间,超时后会抛出错误。
|
|
3723
|
+
* @default 3000
|
|
3724
|
+
*/
|
|
3725
3725
|
INSTALL_TIMEOUT: number;
|
|
3726
|
+
/**
|
|
3727
|
+
* 调试插件安装超时时间(毫秒)
|
|
3728
|
+
*
|
|
3729
|
+
* 等待调试插件安装完成的最大时间,超时后会抛出错误。
|
|
3730
|
+
* @default 3000
|
|
3731
|
+
*/
|
|
3726
3732
|
DEBUG_INSTALL_TIMEOUT: number;
|
|
3733
|
+
/**
|
|
3734
|
+
* 创建预加载钩子
|
|
3735
|
+
*
|
|
3736
|
+
* 插件可在启用时调用此方法注册预加载任务。
|
|
3737
|
+
* 注册后需调用 {@link completePreLoadedHook} 标记完成。
|
|
3738
|
+
*
|
|
3739
|
+
* @param id - 插件 ID
|
|
3740
|
+
*
|
|
3741
|
+
* @example
|
|
3742
|
+
* ```typescript
|
|
3743
|
+
* // 在插件 onEnable 中
|
|
3744
|
+
* PluginService.instance.createPreLoadedHook(this.id)
|
|
3745
|
+
* // 异步任务完成后
|
|
3746
|
+
* PluginService.instance.completePreLoadedHook(this.id)
|
|
3747
|
+
* ```
|
|
3748
|
+
*/
|
|
3727
3749
|
createPreLoadedHook(id: string): void;
|
|
3750
|
+
/**
|
|
3751
|
+
* 完成预加载钩子
|
|
3752
|
+
*
|
|
3753
|
+
* 标记指定插件的预加载任务已完成。
|
|
3754
|
+
* 所有预加载任务完成后会触发 PluginPreLoaded 状态。
|
|
3755
|
+
*
|
|
3756
|
+
* @param id - 插件 ID
|
|
3757
|
+
*/
|
|
3728
3758
|
completePreLoadedHook(id: string): void;
|
|
3759
|
+
/**
|
|
3760
|
+
* 创建预渲染钩子
|
|
3761
|
+
*
|
|
3762
|
+
* 插件可在启用时调用此方法注册预渲染任务。
|
|
3763
|
+
* 注册后需调用 {@link completePreRenderedHook} 标记完成。
|
|
3764
|
+
*
|
|
3765
|
+
* @param id - 插件 ID
|
|
3766
|
+
*
|
|
3767
|
+
* @example
|
|
3768
|
+
* ```typescript
|
|
3769
|
+
* // 在插件 onEnable 中
|
|
3770
|
+
* PluginService.instance.createPreRenderedHook(this.id)
|
|
3771
|
+
* // 渲染准备完成后
|
|
3772
|
+
* PluginService.instance.completePreRenderedHook(this.id)
|
|
3773
|
+
* ```
|
|
3774
|
+
*/
|
|
3729
3775
|
createPreRenderedHook(id: string): void;
|
|
3776
|
+
/**
|
|
3777
|
+
* 完成预渲染钩子
|
|
3778
|
+
*
|
|
3779
|
+
* 标记指定插件的预渲染任务已完成。
|
|
3780
|
+
* 所有预渲染任务完成后会触发 PluginPreRendered 状态。
|
|
3781
|
+
*
|
|
3782
|
+
* @param id - 插件 ID
|
|
3783
|
+
*/
|
|
3730
3784
|
completePreRenderedHook(id: string): void;
|
|
3731
|
-
|
|
3732
|
-
|
|
3785
|
+
/**
|
|
3786
|
+
* 订阅插件事件
|
|
3787
|
+
*
|
|
3788
|
+
* 注册一个回调函数,在插件生命周期事件发生时被调用。
|
|
3789
|
+
*
|
|
3790
|
+
* @param subscriber - 事件订阅回调函数
|
|
3791
|
+
* @returns 取消订阅的函数
|
|
3792
|
+
*
|
|
3793
|
+
* @example
|
|
3794
|
+
* ```typescript
|
|
3795
|
+
* const unsubscribe = PluginService.instance.subscribe((id, type) => {
|
|
3796
|
+
* console.log(`Plugin ${id} event: ${type}`)
|
|
3797
|
+
* })
|
|
3798
|
+
* // 取消订阅
|
|
3799
|
+
* unsubscribe()
|
|
3800
|
+
* ```
|
|
3801
|
+
*/
|
|
3733
3802
|
subscribe(subscriber: PluginServiceSubscriber): () => void;
|
|
3803
|
+
/**
|
|
3804
|
+
* 取消订阅插件事件
|
|
3805
|
+
*
|
|
3806
|
+
* @param subscriber - 要取消的订阅回调函数
|
|
3807
|
+
*/
|
|
3734
3808
|
unsubscribe(subscriber: PluginServiceSubscriber): void;
|
|
3809
|
+
/**
|
|
3810
|
+
* 获取插件状态
|
|
3811
|
+
*
|
|
3812
|
+
* 根据插件 ID 获取其运行时状态信息。
|
|
3813
|
+
*
|
|
3814
|
+
* @param id - 插件 ID
|
|
3815
|
+
* @returns 插件状态对象,若不存在则返回 undefined
|
|
3816
|
+
*
|
|
3817
|
+
* @example
|
|
3818
|
+
* ```typescript
|
|
3819
|
+
* const state = PluginService.instance.get('my-plugin')
|
|
3820
|
+
* if (state?.enabled) {
|
|
3821
|
+
* console.log('Plugin is enabled')
|
|
3822
|
+
* }
|
|
3823
|
+
* ```
|
|
3824
|
+
*/
|
|
3735
3825
|
get(id: string): PluginState | undefined;
|
|
3826
|
+
/**
|
|
3827
|
+
* 添加插件
|
|
3828
|
+
*
|
|
3829
|
+
* 根据插件配置添加插件到系统中。
|
|
3830
|
+
* 自动识别内置插件(nfp://)和外部插件(http)并分别处理。
|
|
3831
|
+
*
|
|
3832
|
+
* 对于外部插件:
|
|
3833
|
+
* - 创建 script 和 link 元素加载 JS/CSS
|
|
3834
|
+
* - 加载国际化资源文件
|
|
3835
|
+
* - 将元素添加到 document.body
|
|
3836
|
+
*
|
|
3837
|
+
* 对于内置插件:
|
|
3838
|
+
* - 从 builtInPluginFactory 创建实例
|
|
3839
|
+
* - 自动触发安装流程
|
|
3840
|
+
*
|
|
3841
|
+
* @param config - 插件配置对象
|
|
3842
|
+
* @returns 是否添加成功
|
|
3843
|
+
*
|
|
3844
|
+
* @example
|
|
3845
|
+
* ```typescript
|
|
3846
|
+
* const success = await PluginService.instance.add({
|
|
3847
|
+
* id: 'my-plugin',
|
|
3848
|
+
* url: 'https://cdn.example.com/plugins/my-plugin',
|
|
3849
|
+
* entry: 'index.js',
|
|
3850
|
+
* css: 'index.css',
|
|
3851
|
+
* information: { name: 'My Plugin' }
|
|
3852
|
+
* })
|
|
3853
|
+
* ```
|
|
3854
|
+
*/
|
|
3736
3855
|
add(config: PluginConfig): Promise<boolean>;
|
|
3856
|
+
/**
|
|
3857
|
+
* 启动插件调试模式
|
|
3858
|
+
*
|
|
3859
|
+
* 加载调试插件并建立 WebSocket 连接监听 HMR 消息。
|
|
3860
|
+
* 当收到编译完成消息时自动重新加载插件实现热更新。
|
|
3861
|
+
*
|
|
3862
|
+
* @param debug - 调试插件配置(RhineVar 存储)
|
|
3863
|
+
*
|
|
3864
|
+
* @example
|
|
3865
|
+
* ```typescript
|
|
3866
|
+
* await PluginService.instance.debug(rvPluginDebug)
|
|
3867
|
+
* ```
|
|
3868
|
+
*/
|
|
3737
3869
|
debug(debug: StoredRhineVar<RvPluginDebug>): Promise<void>;
|
|
3870
|
+
/**
|
|
3871
|
+
* 停止插件调试
|
|
3872
|
+
*
|
|
3873
|
+
* 关闭 HMR WebSocket 连接并卸载调试插件。
|
|
3874
|
+
*
|
|
3875
|
+
* @param id - 插件 ID
|
|
3876
|
+
*/
|
|
3738
3877
|
stopDebug(id: string): Promise<void>;
|
|
3878
|
+
/**
|
|
3879
|
+
* 加载插件国际化消息
|
|
3880
|
+
*
|
|
3881
|
+
* 从插件的 messages 属性中加载当前语言的翻译资源。
|
|
3882
|
+
* 内置插件可通过此方式提供多语言支持。
|
|
3883
|
+
*
|
|
3884
|
+
* @param plugin - 插件实例
|
|
3885
|
+
*/
|
|
3739
3886
|
loadPluginMessages(plugin: BasePlugin): Promise<void>;
|
|
3887
|
+
/**
|
|
3888
|
+
* 安装插件
|
|
3889
|
+
*
|
|
3890
|
+
* 执行插件的安装流程:
|
|
3891
|
+
* 1. 将插件实例存入 PluginState
|
|
3892
|
+
* 2. 加载插件国际化消息
|
|
3893
|
+
* 3. 调用插件的 onInstall 生命周期钩子
|
|
3894
|
+
* 4. 标记 installed = true
|
|
3895
|
+
* 5. 发布 INSTALL 事件
|
|
3896
|
+
*
|
|
3897
|
+
* 注意: 外部插件的 install 由插件 JS 加载完成后自动调用 PluginConnector.install 触发。
|
|
3898
|
+
*
|
|
3899
|
+
* @param plugin - 插件实例
|
|
3900
|
+
*/
|
|
3740
3901
|
install(plugin: BasePlugin): Promise<void>;
|
|
3902
|
+
/**
|
|
3903
|
+
* 启用插件
|
|
3904
|
+
*
|
|
3905
|
+
* 执行插件的启用流程:
|
|
3906
|
+
* 1. 将插件添加到 UI 容器(创建按钮或渲染视图)
|
|
3907
|
+
* 2. 调用插件的 onEnable 生命周期钩子
|
|
3908
|
+
* 3. 标记 enabled = true
|
|
3909
|
+
* 4. 发布 ENABLE 事件
|
|
3910
|
+
*
|
|
3911
|
+
* @param id - 插件 ID
|
|
3912
|
+
*/
|
|
3741
3913
|
enable(id: string): Promise<void>;
|
|
3914
|
+
/**
|
|
3915
|
+
* 打开插件
|
|
3916
|
+
*
|
|
3917
|
+
* 打开可展开的插件(DRAWER/DIALOG/SWITCH 类型)。
|
|
3918
|
+
* 对于 DRAWER 类型会展开侧边栏面板,对于 DIALOG 类型会弹出对话框。
|
|
3919
|
+
*
|
|
3920
|
+
* @param id - 插件 ID
|
|
3921
|
+
* @throws 若插件未安装则抛出错误
|
|
3922
|
+
*/
|
|
3742
3923
|
open(id: string): Promise<void>;
|
|
3924
|
+
/**
|
|
3925
|
+
* 关闭插件
|
|
3926
|
+
*
|
|
3927
|
+
* 关闭已打开的插件(DRAWER/DIALOG/SWITCH 类型)。
|
|
3928
|
+
*
|
|
3929
|
+
* @param id - 插件 ID
|
|
3930
|
+
* @throws 若插件未安装则抛出错误
|
|
3931
|
+
*/
|
|
3743
3932
|
close(id: string): Promise<void>;
|
|
3933
|
+
/**
|
|
3934
|
+
* 禁用插件
|
|
3935
|
+
*
|
|
3936
|
+
* 执行插件的禁用流程:
|
|
3937
|
+
* 1. 从 UI 容器移除插件
|
|
3938
|
+
* 2. 调用插件的 onDisable 生命周期钩子
|
|
3939
|
+
* 3. 标记 enabled = false
|
|
3940
|
+
* 4. 发布 DISABLE 事件
|
|
3941
|
+
*
|
|
3942
|
+
* @param id - 插件 ID
|
|
3943
|
+
*/
|
|
3744
3944
|
disable(id: string): Promise<void>;
|
|
3945
|
+
/**
|
|
3946
|
+
* 卸载插件
|
|
3947
|
+
*
|
|
3948
|
+
* 执行插件的完整卸载流程:
|
|
3949
|
+
* 1. 若已启用则先禁用
|
|
3950
|
+
* 2. 调用插件的 onUninstall 生命周期钩子
|
|
3951
|
+
* 3. 标记 installed = false
|
|
3952
|
+
* 4. 移除 script 和 style DOM 元素
|
|
3953
|
+
* 5. 从 plugins Map 中删除
|
|
3954
|
+
* 6. 发布 UNINSTALL 事件
|
|
3955
|
+
*
|
|
3956
|
+
* @param id - 插件 ID
|
|
3957
|
+
*/
|
|
3745
3958
|
uninstall(id: string): Promise<void>;
|
|
3959
|
+
/**
|
|
3960
|
+
* 等待插件安装完成
|
|
3961
|
+
*
|
|
3962
|
+
* 返回一个 Promise,在指定插件安装完成时 resolve。
|
|
3963
|
+
* 若插件已安装则立即 resolve。
|
|
3964
|
+
*
|
|
3965
|
+
* @param id - 插件 ID
|
|
3966
|
+
* @param timeoutMs - 超时时间(毫秒),超时后 reject
|
|
3967
|
+
* @returns Promise,安装完成时 resolve
|
|
3968
|
+
*
|
|
3969
|
+
* @example
|
|
3970
|
+
* ```typescript
|
|
3971
|
+
* await PluginService.instance.waitInstall('my-plugin', 5000)
|
|
3972
|
+
* console.log('Plugin installed')
|
|
3973
|
+
* ```
|
|
3974
|
+
*/
|
|
3746
3975
|
waitInstall(id: string, timeoutMs?: number): Promise<void>;
|
|
3976
|
+
/**
|
|
3977
|
+
* 等待插件启用完成
|
|
3978
|
+
*
|
|
3979
|
+
* 返回一个 Promise,在指定插件启用完成时 resolve。
|
|
3980
|
+
* 若插件已启用则立即 resolve。
|
|
3981
|
+
*
|
|
3982
|
+
* @param id - 插件 ID
|
|
3983
|
+
* @param timeoutMs - 超时时间(毫秒),超时后 reject
|
|
3984
|
+
* @returns Promise,启用完成时 resolve
|
|
3985
|
+
*/
|
|
3747
3986
|
waitEnable(id: string, timeoutMs?: number): Promise<void>;
|
|
3987
|
+
/**
|
|
3988
|
+
* 判断是否为可打开的插件类型
|
|
3989
|
+
*
|
|
3990
|
+
* 可打开的插件类型包括: DRAWER, DIALOG, SWITCH
|
|
3991
|
+
*
|
|
3992
|
+
* @param type - 插件类型
|
|
3993
|
+
* @returns 是否可打开
|
|
3994
|
+
*/
|
|
3748
3995
|
isOpenablePlugin(type: PluginType): boolean;
|
|
3996
|
+
/**
|
|
3997
|
+
* 判断是否为侧边栏插件类型
|
|
3998
|
+
*
|
|
3999
|
+
* 侧边栏插件会在左右两侧显示图标按钮。
|
|
4000
|
+
* 包括: DRAWER, DIALOG, BUTTON, SWITCH
|
|
4001
|
+
*
|
|
4002
|
+
* @param type - 插件类型
|
|
4003
|
+
* @returns 是否为侧边栏插件
|
|
4004
|
+
*/
|
|
3749
4005
|
isSideBarPlugin(type: PluginType): boolean;
|
|
4006
|
+
/**
|
|
4007
|
+
* 判断是否为视图插件类型
|
|
4008
|
+
*
|
|
4009
|
+
* 视图插件直接渲染在内容区域或浮动窗口中。
|
|
4010
|
+
* 包括: WINDOW, CONTENT
|
|
4011
|
+
*
|
|
4012
|
+
* @param type - 插件类型
|
|
4013
|
+
* @returns 是否为视图插件
|
|
4014
|
+
*/
|
|
3750
4015
|
isViewPlugin(type: PluginType): boolean;
|
|
3751
4016
|
}
|
|
3752
4017
|
|
|
@@ -3857,7 +4122,10 @@ export declare interface ResourcePreviewProps extends DivProps {
|
|
|
3857
4122
|
}
|
|
3858
4123
|
|
|
3859
4124
|
/**
|
|
3860
|
-
*
|
|
4125
|
+
* 资源管理服务
|
|
4126
|
+
*
|
|
4127
|
+
* 负责资源的上传、批量上传、重复检测、纹理预览图生成等功能。
|
|
4128
|
+
* 上传操作委托 OssUploadService 完成,最终由 rhine-base UploadService 执行。
|
|
3861
4129
|
*
|
|
3862
4130
|
* @public
|
|
3863
4131
|
*/
|
|
@@ -3867,6 +4135,7 @@ export declare class ResourceService {
|
|
|
3867
4135
|
*/
|
|
3868
4136
|
static get instance(): ResourceService;
|
|
3869
4137
|
private constructor();
|
|
4138
|
+
/** 资源拖拽状态(Valtio 响应式) */
|
|
3870
4139
|
dragState: {
|
|
3871
4140
|
fid: string;
|
|
3872
4141
|
data: null;
|
|
@@ -3875,15 +4144,52 @@ export declare class ResourceService {
|
|
|
3875
4144
|
offsetX: number;
|
|
3876
4145
|
offsetY: number;
|
|
3877
4146
|
};
|
|
4147
|
+
/**
|
|
4148
|
+
* 上传单个文件为资源
|
|
4149
|
+
*
|
|
4150
|
+
* @param file - 浏览器 File 对象
|
|
4151
|
+
* @param fid - 可选的文件 ID,不传则由上传服务自动生成
|
|
4152
|
+
* @param check - 是否标记历史记录
|
|
4153
|
+
* @returns 文件 ID
|
|
4154
|
+
*/
|
|
3878
4155
|
upload(file: File, fid?: string, check?: boolean): Promise<string>;
|
|
4156
|
+
/**
|
|
4157
|
+
* 批量上传文件为资源
|
|
4158
|
+
*
|
|
4159
|
+
* 自动检测重复文件并提示用户。fidList 长度需与 fileList 一致或为空。
|
|
4160
|
+
*
|
|
4161
|
+
* @param fileList - 文件列表,支持 FileList、File[]、单个 File 或 null
|
|
4162
|
+
* @param check - 是否标记历史记录
|
|
4163
|
+
* @param fidList - 可选的文件 ID 列表,与 fileList 一一对应
|
|
4164
|
+
*/
|
|
3879
4165
|
uploadMulti(fileList: FileList | File[] | File | null | undefined, check?: boolean, fidList?: string[]): Promise<void>;
|
|
3880
|
-
|
|
4166
|
+
/** 预览图宽度(像素) */
|
|
3881
4167
|
PREVIEW_IMAGE_WIDTH: number;
|
|
4168
|
+
/** 预览图高度(像素) */
|
|
3882
4169
|
PREVIEW_IMAGE_HEIGHT: number;
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
4170
|
+
/**
|
|
4171
|
+
* 生成纹理的描述信息
|
|
4172
|
+
*
|
|
4173
|
+
* @param texture - BabylonJS 纹理对象
|
|
4174
|
+
* @param fromFileId - 纹理来源的文件 ID
|
|
4175
|
+
* @returns 包含分辨率和来源文件名的描述字符串
|
|
4176
|
+
*/
|
|
4177
|
+
generateDescribeForTexture(texture: BaseTexture, fromFileId: string): string;
|
|
4178
|
+
/**
|
|
4179
|
+
* 生成纹理的预览图文件
|
|
4180
|
+
*
|
|
4181
|
+
* 将 BabylonJS 纹理渲染为 256x256 的 PNG 预览图,保持宽高比居中绘制。
|
|
4182
|
+
*
|
|
4183
|
+
* @param texture - BabylonJS 纹理对象
|
|
4184
|
+
* @param filename - 输出文件名,默认 'texture.png'
|
|
4185
|
+
* @returns PNG 格式的 File 对象,失败返回 null
|
|
4186
|
+
*/
|
|
3886
4187
|
generatePreviewForTexture(texture: BaseTexture, filename?: string): Promise<File | null>;
|
|
4188
|
+
/**
|
|
4189
|
+
* 生成资源/文件 ID
|
|
4190
|
+
*
|
|
4191
|
+
* @returns 以 'F' 为前缀的唯一 ID
|
|
4192
|
+
*/
|
|
3887
4193
|
generateId(): string;
|
|
3888
4194
|
}
|
|
3889
4195
|
|
|
@@ -4379,7 +4685,6 @@ export declare enum RsModelStatus {
|
|
|
4379
4685
|
CANCELED = "CANCELED"
|
|
4380
4686
|
}
|
|
4381
4687
|
|
|
4382
|
-
|
|
4383
4688
|
/**
|
|
4384
4689
|
* @public
|
|
4385
4690
|
*/
|
|
@@ -5050,20 +5355,35 @@ export declare interface RvAwarenessWindow {
|
|
|
5050
5355
|
}
|
|
5051
5356
|
|
|
5052
5357
|
/**
|
|
5358
|
+
* 全局协同数据总变量
|
|
5359
|
+
*
|
|
5360
|
+
* 所有项目数据的根结构,通过 RhineVar 实现多人实时同步。
|
|
5361
|
+
* resources 仅存储 ID 列表,元数据通过 RvResourceService 从后端获取并缓存在本地。
|
|
5362
|
+
*
|
|
5053
5363
|
* @public
|
|
5054
5364
|
*/
|
|
5055
5365
|
export declare interface RvBase {
|
|
5366
|
+
/** 项目全局配置 */
|
|
5056
5367
|
project: RvProject;
|
|
5368
|
+
/** 场景展示顺序(sid 列表) */
|
|
5057
5369
|
order: RhineVarArray<string>;
|
|
5370
|
+
/** 场景 Map(sid -> RvStep) */
|
|
5058
5371
|
steps: RhineVarMap<RvStep>;
|
|
5372
|
+
/** 插件信息 */
|
|
5059
5373
|
plugin: RvPlugin;
|
|
5060
|
-
|
|
5061
|
-
resources:
|
|
5374
|
+
/** 资源 ID 列表,元数据通过 RvResourceService.getMetadata() 获取 */
|
|
5375
|
+
resources: RhineVarArray<string>;
|
|
5376
|
+
/** 场景节点树 */
|
|
5062
5377
|
scene: RhineVarMap<RvSceneNode>;
|
|
5378
|
+
/** 模型列表 */
|
|
5063
5379
|
models: RhineVarMap<RvModel>;
|
|
5380
|
+
/** 材质分离数据 */
|
|
5064
5381
|
separate: RvSeparate;
|
|
5382
|
+
/** 历史记录 */
|
|
5065
5383
|
history: RvHistory;
|
|
5384
|
+
/** 会议信息 */
|
|
5066
5385
|
meetings: RhineVarMap<RvMeeting>;
|
|
5386
|
+
/** 版本信息 */
|
|
5067
5387
|
version: RvVersion;
|
|
5068
5388
|
}
|
|
5069
5389
|
|
|
@@ -5200,66 +5520,6 @@ export declare interface RvEnvironment {
|
|
|
5200
5520
|
};
|
|
5201
5521
|
}
|
|
5202
5522
|
|
|
5203
|
-
/**
|
|
5204
|
-
* @public
|
|
5205
|
-
*/
|
|
5206
|
-
export declare interface RvFile {
|
|
5207
|
-
fid: string;
|
|
5208
|
-
type: RvFileType;
|
|
5209
|
-
name: string;
|
|
5210
|
-
size: number;
|
|
5211
|
-
mime: string;
|
|
5212
|
-
hash?: string;
|
|
5213
|
-
url: string;
|
|
5214
|
-
createdAt: number;
|
|
5215
|
-
updatedAt: number;
|
|
5216
|
-
uploading?: boolean;
|
|
5217
|
-
extra?: Record<string, unknown>;
|
|
5218
|
-
}
|
|
5219
|
-
|
|
5220
|
-
/**
|
|
5221
|
-
* @public
|
|
5222
|
-
*/
|
|
5223
|
-
export declare class RvFileService {
|
|
5224
|
-
static get instance(): RvFileService;
|
|
5225
|
-
private constructor();
|
|
5226
|
-
files: RecursiveMap<RvFile>;
|
|
5227
|
-
get(fid: string): RecursiveObject<RvFile> | undefined;
|
|
5228
|
-
getByUrl(url: string): RecursiveObject<RvFile> | undefined;
|
|
5229
|
-
has(fid: string): boolean;
|
|
5230
|
-
hasUrl(url: string): boolean;
|
|
5231
|
-
add(fileData: RvFile): Promise<StoredRhineVar<RvFile> | null>;
|
|
5232
|
-
addByUrl(url: string): Promise<StoredRhineVar<RvFile> | null>;
|
|
5233
|
-
remove(fid: string): boolean;
|
|
5234
|
-
subscribe(subscriber: RvFileServiceSubscriber): () => void;
|
|
5235
|
-
unsubscribe(subscriber: RvFileServiceSubscriber): void;
|
|
5236
|
-
subscribeSingle(fid: string, subscriber: RvFileServiceSubscriber): () => void;
|
|
5237
|
-
unsubscribeSingle(fid: string, subscriber: RvFileServiceSubscriber): void;
|
|
5238
|
-
generateId(): string;
|
|
5239
|
-
findSame(file: File): Promise<string | null>;
|
|
5240
|
-
}
|
|
5241
|
-
|
|
5242
|
-
/**
|
|
5243
|
-
* @public
|
|
5244
|
-
*/
|
|
5245
|
-
export declare enum RvFileServiceEventType {
|
|
5246
|
-
ADD = "ADD",
|
|
5247
|
-
REMOVE = "REMOVE"
|
|
5248
|
-
}
|
|
5249
|
-
|
|
5250
|
-
/**
|
|
5251
|
-
* @public
|
|
5252
|
-
*/
|
|
5253
|
-
export declare type RvFileServiceSubscriber = (type: RvFileServiceEventType, fid: string, rvFile?: RecursiveObject<RvFile>) => void;
|
|
5254
|
-
|
|
5255
|
-
/**
|
|
5256
|
-
* @public
|
|
5257
|
-
*/
|
|
5258
|
-
export declare enum RvFileType {
|
|
5259
|
-
OSS = "OSS",
|
|
5260
|
-
URL = "URL"
|
|
5261
|
-
}
|
|
5262
|
-
|
|
5263
5523
|
/**
|
|
5264
5524
|
* @public
|
|
5265
5525
|
*/
|
|
@@ -5682,42 +5942,132 @@ export declare class RvProjectService {
|
|
|
5682
5942
|
}
|
|
5683
5943
|
|
|
5684
5944
|
/**
|
|
5945
|
+
* 资源元数据接口
|
|
5946
|
+
*
|
|
5947
|
+
* 描述项目中一个资源的完整元信息。资源是用户可见的文件或程序资源(如材质、贴图)。
|
|
5948
|
+
* 协同数据中仅存储资源 ID,完整元数据通过 RvResourceService.getMetadata() 从后端获取并缓存。
|
|
5949
|
+
*
|
|
5950
|
+
* 一个资源可能对应多个文件(如图片资源 + 缩略图文件),
|
|
5951
|
+
* 一个文件也可能对应多个资源(如模型文件内部的多个贴图为 Attach 型资源)。
|
|
5952
|
+
*
|
|
5685
5953
|
* @public
|
|
5686
5954
|
*/
|
|
5687
5955
|
export declare interface RvResource {
|
|
5956
|
+
/** 关联的文件 ID */
|
|
5688
5957
|
fid: string;
|
|
5958
|
+
/** 资源名称 */
|
|
5689
5959
|
name: string;
|
|
5960
|
+
/** 资源类型: FILE(独立文件资源)或 ATTACH(主资源的内置子资源) */
|
|
5690
5961
|
type: RvResourceType;
|
|
5962
|
+
/** MIME 类型 */
|
|
5691
5963
|
mime: string;
|
|
5964
|
+
/** 预览图 URL */
|
|
5692
5965
|
preview?: string;
|
|
5966
|
+
/** 资源描述信息 */
|
|
5693
5967
|
description?: string;
|
|
5968
|
+
/** Attach 型资源的来源信息,仅当 type 为 ATTACH 时存在 */
|
|
5694
5969
|
from?: {
|
|
5970
|
+
/** 来源文件 ID */
|
|
5695
5971
|
fid: string;
|
|
5972
|
+
/** Attach 类型: TEXTURE | MATERIAL | UV */
|
|
5696
5973
|
type: RvAttachType;
|
|
5974
|
+
/** 资源在文件内部的路径 */
|
|
5697
5975
|
path: string;
|
|
5698
5976
|
};
|
|
5977
|
+
/** 创建时间戳(毫秒) */
|
|
5699
5978
|
createdAt: number;
|
|
5979
|
+
/** 更新时间戳(毫秒) */
|
|
5700
5980
|
updatedAt: number;
|
|
5981
|
+
/** 扩展数据 */
|
|
5701
5982
|
extra?: Record<string, unknown>;
|
|
5702
5983
|
}
|
|
5703
5984
|
|
|
5704
5985
|
/**
|
|
5986
|
+
* 资源协同数据服务
|
|
5987
|
+
*
|
|
5988
|
+
* 管理协同数据中的 resourceId 列表,以及本地资源和文件元数据缓存。
|
|
5989
|
+
*
|
|
5705
5990
|
* @public
|
|
5706
5991
|
*/
|
|
5707
5992
|
export declare class RvResourceService {
|
|
5708
5993
|
static get instance(): RvResourceService;
|
|
5709
5994
|
private constructor();
|
|
5710
|
-
resources:
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5995
|
+
resources: StoredRhineVar<string[]>;
|
|
5996
|
+
private metadataCache;
|
|
5997
|
+
private fileToResourceMap;
|
|
5998
|
+
/**
|
|
5999
|
+
* 添加 resourceId 到协同数据
|
|
6000
|
+
*/
|
|
6001
|
+
add(resourceId: string): void;
|
|
6002
|
+
/**
|
|
6003
|
+
* 从协同数据移除 resourceId
|
|
6004
|
+
*/
|
|
6005
|
+
remove(resourceId: string): boolean;
|
|
6006
|
+
/**
|
|
6007
|
+
* 检查 resourceId 是否在列表中
|
|
6008
|
+
*/
|
|
6009
|
+
has(resourceId: string): boolean;
|
|
6010
|
+
/**
|
|
6011
|
+
* 获取缓存的资源元数据
|
|
6012
|
+
*/
|
|
6013
|
+
getMetadata(resourceId: string): Resource | undefined;
|
|
6014
|
+
/**
|
|
6015
|
+
* 通过 fileId 获取对应的资源元数据
|
|
6016
|
+
*/
|
|
6017
|
+
getMetadataByFileId(fileId: string): Resource | undefined;
|
|
6018
|
+
/**
|
|
6019
|
+
* 设置资源元数据缓存
|
|
6020
|
+
*/
|
|
6021
|
+
setMetadata(resourceId: string, metadata: Resource): void;
|
|
6022
|
+
private fileMetadataCache;
|
|
6023
|
+
/**
|
|
6024
|
+
* 添加文件元数据到本地缓存,并发布 ADD 事件
|
|
6025
|
+
*/
|
|
6026
|
+
addFile(fileId: string, metadata?: ResourceFileInfo): void;
|
|
6027
|
+
/**
|
|
6028
|
+
* 从本地缓存移除文件元数据,并发布 REMOVE 事件
|
|
6029
|
+
*/
|
|
6030
|
+
removeFile(fileId: string): boolean;
|
|
6031
|
+
/**
|
|
6032
|
+
* 检查文件是否在本地缓存中
|
|
6033
|
+
*/
|
|
6034
|
+
hasFile(fileId: string): boolean;
|
|
6035
|
+
/**
|
|
6036
|
+
* 获取缓存的文件元数据
|
|
6037
|
+
*/
|
|
6038
|
+
getFileMetadata(fileId: string): ResourceFileInfo | undefined;
|
|
6039
|
+
/**
|
|
6040
|
+
* 设置文件元数据缓存(不触发事件)
|
|
6041
|
+
*/
|
|
6042
|
+
setFileMetadata(fileId: string, metadata: ResourceFileInfo): void;
|
|
6043
|
+
/**
|
|
6044
|
+
* 获取所有文件 ID 列表
|
|
6045
|
+
*/
|
|
6046
|
+
getFileIds(): string[];
|
|
6047
|
+
/**
|
|
6048
|
+
* 获取文件下载 URL(通过后端签名)
|
|
6049
|
+
*/
|
|
6050
|
+
getDownloadUrl(fileId: string): Promise<string>;
|
|
6051
|
+
/**
|
|
6052
|
+
* 从后端同步资源列表到协同数据和本地缓存
|
|
6053
|
+
*
|
|
6054
|
+
* 通过 listResources 一次性拉取后端完整资源列表,
|
|
6055
|
+
* 将缺失的 resourceId 补写回协同数据,
|
|
6056
|
+
* 同时填充本地元数据缓存并通知文件订阅者。
|
|
6057
|
+
*/
|
|
6058
|
+
syncFromBackend(): Promise<void>;
|
|
6059
|
+
/**
|
|
6060
|
+
* 订阅资源列表变化事件(ADD/REMOVE)
|
|
6061
|
+
*/
|
|
5715
6062
|
subscribe(subscriber: RvResourceServiceSubscriber): () => void;
|
|
5716
6063
|
unsubscribe(subscriber: RvResourceServiceSubscriber): void;
|
|
5717
|
-
subscribeSingle(
|
|
5718
|
-
unsubscribeSingle(
|
|
5719
|
-
|
|
5720
|
-
|
|
6064
|
+
subscribeSingle(resourceId: string, subscriber: RvResourceServiceSubscriber): () => void;
|
|
6065
|
+
unsubscribeSingle(resourceId: string, subscriber: RvResourceServiceSubscriber): void;
|
|
6066
|
+
/**
|
|
6067
|
+
* 订阅文件变化事件(ADD/REMOVE)
|
|
6068
|
+
*/
|
|
6069
|
+
subscribeFile(subscriber: RvResourceServiceSubscriber): () => void;
|
|
6070
|
+
unsubscribeFile(subscriber: RvResourceServiceSubscriber): void;
|
|
5721
6071
|
}
|
|
5722
6072
|
|
|
5723
6073
|
/**
|
|
@@ -5731,7 +6081,7 @@ export declare enum RvResourceServiceEventType {
|
|
|
5731
6081
|
/**
|
|
5732
6082
|
* @public
|
|
5733
6083
|
*/
|
|
5734
|
-
export declare type RvResourceServiceSubscriber = (type: RvResourceServiceEventType,
|
|
6084
|
+
export declare type RvResourceServiceSubscriber = (type: RvResourceServiceEventType, resourceId: string) => void;
|
|
5735
6085
|
|
|
5736
6086
|
/**
|
|
5737
6087
|
* @public
|
|
@@ -6467,7 +6817,8 @@ export declare class SyncService {
|
|
|
6467
6817
|
*
|
|
6468
6818
|
* @public
|
|
6469
6819
|
*/
|
|
6470
|
-
|
|
6820
|
+
private getUrl;
|
|
6821
|
+
private getToken;
|
|
6471
6822
|
/**
|
|
6472
6823
|
* RhineVar 协同状态对象
|
|
6473
6824
|
*
|
|
@@ -6488,8 +6839,8 @@ export declare class SyncService {
|
|
|
6488
6839
|
* // 访问场景步骤
|
|
6489
6840
|
* const steps = SyncService.instance.state.steps
|
|
6490
6841
|
*
|
|
6491
|
-
* //
|
|
6492
|
-
* const
|
|
6842
|
+
* // 访问资源
|
|
6843
|
+
* const resources = SyncService.instance.state.resources
|
|
6493
6844
|
*
|
|
6494
6845
|
* // 等待同步完成
|
|
6495
6846
|
* await SyncService.instance.state.waitSynced()
|
|
@@ -6758,7 +7109,6 @@ declare function toEulerDegrees(v: V4): V3;
|
|
|
6758
7109
|
|
|
6759
7110
|
declare function toEulerRadians(v: V4): V3;
|
|
6760
7111
|
|
|
6761
|
-
|
|
6762
7112
|
/**
|
|
6763
7113
|
* 360度制欧拉角转四元数
|
|
6764
7114
|
* @public
|
|
@@ -6823,7 +7173,7 @@ export declare function useAllSelectedInfo(): {
|
|
|
6823
7173
|
/**
|
|
6824
7174
|
* @public
|
|
6825
7175
|
*/
|
|
6826
|
-
export declare function useGlobalAttribute<T extends object =
|
|
7176
|
+
export declare function useGlobalAttribute<T extends object = object>(path?: string | RvPath): {
|
|
6827
7177
|
state: T | StoredRhineVar<T>;
|
|
6828
7178
|
path: string | RvPath;
|
|
6829
7179
|
targetGlobalAttribute: GlobalAttribute<T>;
|
|
@@ -6903,7 +7253,7 @@ export declare function useStepOptions(withDisable?: boolean): StepOptions;
|
|
|
6903
7253
|
/**
|
|
6904
7254
|
* @public
|
|
6905
7255
|
*/
|
|
6906
|
-
export declare function useTargetNodeAttribute<T extends object =
|
|
7256
|
+
export declare function useTargetNodeAttribute<T extends object = object>(path?: string | RvPath): {
|
|
6907
7257
|
state: T | StoredRhineVar<T>;
|
|
6908
7258
|
path: string | RvPath;
|
|
6909
7259
|
sid: string;
|
|
@@ -6939,7 +7289,7 @@ export declare function useTargetNodeAttribute<T extends object = any>(path?: st
|
|
|
6939
7289
|
/**
|
|
6940
7290
|
* @public
|
|
6941
7291
|
*/
|
|
6942
|
-
export declare function useTargetStepAttribute<T extends object =
|
|
7292
|
+
export declare function useTargetStepAttribute<T extends object = object>(path?: string | RvPath): {
|
|
6943
7293
|
state: T | StoredRhineVar<T>;
|
|
6944
7294
|
path: string | RvPath;
|
|
6945
7295
|
sid: string;
|
|
@@ -7105,7 +7455,6 @@ export declare const attributeService: AttributeService
|
|
|
7105
7455
|
export declare const awarenessService: AwarenessService
|
|
7106
7456
|
export declare const historyService: HistoryService
|
|
7107
7457
|
export declare const rvStepService: RvStepService
|
|
7108
|
-
export declare const rvFileService: RvFileService
|
|
7109
7458
|
export declare const rvResourceService: RvResourceService
|
|
7110
7459
|
export declare const rvSceneService: RvSceneService
|
|
7111
7460
|
export declare const rvModelService: RvModelService
|
package/package.json
CHANGED