next-flow-interface 0.27.7 → 0.27.11
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 +723 -281
- 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
|
*/
|
|
@@ -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
|
-
*
|
|
3279
|
+
* 上传服务
|
|
3289
3280
|
*
|
|
3290
|
-
*
|
|
3291
|
-
*
|
|
3292
|
-
* 所有上传任务都会创建对应的 RvFile 记录,并在协同数据中标记 `uploading: true`。
|
|
3293
|
-
* 上传完成后会自动更新 RvFile 的 URL 并移除上传标记。
|
|
3294
|
-
*
|
|
3295
|
-
* @example
|
|
3296
|
-
* ```typescript
|
|
3297
|
-
* // 上传文件
|
|
3298
|
-
* const fid = await OssUploadService.instance.upload(file)
|
|
3299
|
-
*
|
|
3300
|
-
* // 监听上传进度
|
|
3301
|
-
* OssUploadService.instance.subscribe((type, instance) => {
|
|
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
|
-
*
|
|
3349
|
-
*
|
|
3350
|
-
* @param file - 要检查的 File 对象
|
|
3351
|
-
* @returns 如果该文件已在上传队列中返回 true,否则返回 false
|
|
3307
|
+
* 检查指定 File 对象是否正在上传中
|
|
3352
3308
|
*
|
|
3353
|
-
* @
|
|
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
|
-
* 暂停指定的上传任务
|
|
3313
|
+
* 上传文件
|
|
3404
3314
|
*
|
|
3405
|
-
*
|
|
3406
|
-
*
|
|
3407
|
-
*
|
|
3408
|
-
* @remarks
|
|
3409
|
-
* 该方法尚未实现,调用会抛出异常
|
|
3410
|
-
*
|
|
3411
|
-
* @throws 方法未实现错误
|
|
3412
|
-
*
|
|
3413
|
-
* @public
|
|
3315
|
+
* 委托 rhine-base UploadService 完成完整上传流程。
|
|
3316
|
+
* 上传完成后自动将 fileId 和 resourceId 写入协同数据。
|
|
3414
3317
|
*/
|
|
3415
|
-
|
|
3318
|
+
upload(file: File, fid?: string, mime?: string): Promise<void>;
|
|
3416
3319
|
/**
|
|
3417
|
-
*
|
|
3320
|
+
* 取消指定文件的上传
|
|
3418
3321
|
*
|
|
3419
3322
|
* @param fid - 文件 ID
|
|
3420
|
-
* @returns
|
|
3421
|
-
*
|
|
3422
|
-
* @remarks
|
|
3423
|
-
* 该方法尚未实现,调用会抛出异常
|
|
3424
|
-
*
|
|
3425
|
-
* @throws 方法未实现错误
|
|
3426
|
-
*
|
|
3427
|
-
* @public
|
|
3428
|
-
*/
|
|
3429
|
-
resume(fid: string): boolean;
|
|
3430
|
-
/**
|
|
3431
|
-
* 取消指定的上传任务
|
|
3432
|
-
*
|
|
3433
|
-
* @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
|
-
*
|
|
3336
|
+
* 取消订阅所有上传事件
|
|
3480
3337
|
*
|
|
3481
|
-
* @param subscriber -
|
|
3482
|
-
*
|
|
3483
|
-
* @remarks
|
|
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,37 @@ export declare interface RvAwarenessWindow {
|
|
|
5050
5355
|
}
|
|
5051
5356
|
|
|
5052
5357
|
/**
|
|
5358
|
+
* 全局协同数据总变量
|
|
5359
|
+
*
|
|
5360
|
+
* 所有项目数据的根结构,通过 RhineVar 实现多人实时同步。
|
|
5361
|
+
* files 和 resources 仅存储 ID 列表,元数据通过对应 Service 从后端获取并缓存在本地。
|
|
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
|
-
|
|
5374
|
+
/** 文件 ID 列表,元数据通过 RvFileService.getMetadata() 获取 */
|
|
5375
|
+
files: RhineVarArray<string>;
|
|
5376
|
+
/** 资源 ID 列表,元数据通过 RvResourceService.getMetadata() 获取 */
|
|
5377
|
+
resources: RhineVarArray<string>;
|
|
5378
|
+
/** 场景节点树 */
|
|
5062
5379
|
scene: RhineVarMap<RvSceneNode>;
|
|
5380
|
+
/** 模型列表 */
|
|
5063
5381
|
models: RhineVarMap<RvModel>;
|
|
5382
|
+
/** 材质分离数据 */
|
|
5064
5383
|
separate: RvSeparate;
|
|
5384
|
+
/** 历史记录 */
|
|
5065
5385
|
history: RvHistory;
|
|
5386
|
+
/** 会议信息 */
|
|
5066
5387
|
meetings: RhineVarMap<RvMeeting>;
|
|
5388
|
+
/** 版本信息 */
|
|
5067
5389
|
version: RvVersion;
|
|
5068
5390
|
}
|
|
5069
5391
|
|
|
@@ -5201,42 +5523,97 @@ export declare interface RvEnvironment {
|
|
|
5201
5523
|
}
|
|
5202
5524
|
|
|
5203
5525
|
/**
|
|
5526
|
+
* 文件元数据接口
|
|
5527
|
+
*
|
|
5528
|
+
* 描述项目中一个文件的完整元信息。
|
|
5529
|
+
* 协同数据中仅存储 fid,完整元数据通过 RvFileService.getMetadata() 从后端获取并缓存。
|
|
5530
|
+
*
|
|
5204
5531
|
* @public
|
|
5205
5532
|
*/
|
|
5206
5533
|
export declare interface RvFile {
|
|
5534
|
+
/** 文件唯一标识 */
|
|
5207
5535
|
fid: string;
|
|
5536
|
+
/** 文件存储类型 */
|
|
5208
5537
|
type: RvFileType;
|
|
5538
|
+
/** 文件名 */
|
|
5209
5539
|
name: string;
|
|
5540
|
+
/** 文件大小(字节) */
|
|
5210
5541
|
size: number;
|
|
5542
|
+
/** MIME 类型 */
|
|
5211
5543
|
mime: string;
|
|
5544
|
+
/** 文件内容哈希值,用于去重 */
|
|
5212
5545
|
hash?: string;
|
|
5546
|
+
/** 文件地址。格式: https://xxx | oss://{bucket}/{path} | attach://{fid} */
|
|
5213
5547
|
url: string;
|
|
5548
|
+
/** 创建时间戳(毫秒) */
|
|
5214
5549
|
createdAt: number;
|
|
5550
|
+
/** 更新时间戳(毫秒) */
|
|
5215
5551
|
updatedAt: number;
|
|
5552
|
+
/** 是否正在上传中 */
|
|
5216
5553
|
uploading?: boolean;
|
|
5554
|
+
/** 扩展数据 */
|
|
5217
5555
|
extra?: Record<string, unknown>;
|
|
5218
5556
|
}
|
|
5219
5557
|
|
|
5220
5558
|
/**
|
|
5559
|
+
* 文件协同数据服务
|
|
5560
|
+
*
|
|
5561
|
+
* 管理协同数据中的 fileId 列表,以及本地文件元数据缓存。
|
|
5562
|
+
* fileId 列表存储在协同数据中,元数据从后端获取并缓存在本地。
|
|
5563
|
+
*
|
|
5221
5564
|
* @public
|
|
5222
5565
|
*/
|
|
5223
5566
|
export declare class RvFileService {
|
|
5224
5567
|
static get instance(): RvFileService;
|
|
5225
5568
|
private constructor();
|
|
5226
|
-
files:
|
|
5227
|
-
|
|
5228
|
-
|
|
5229
|
-
|
|
5230
|
-
|
|
5231
|
-
add(
|
|
5232
|
-
|
|
5233
|
-
|
|
5569
|
+
files: RhineVarArray<string>;
|
|
5570
|
+
private metadataCache;
|
|
5571
|
+
/**
|
|
5572
|
+
* 添加 fileId 到协同数据
|
|
5573
|
+
*/
|
|
5574
|
+
add(fileId: string): void;
|
|
5575
|
+
/**
|
|
5576
|
+
* 从协同数据移除 fileId
|
|
5577
|
+
*/
|
|
5578
|
+
remove(fileId: string): boolean;
|
|
5579
|
+
/**
|
|
5580
|
+
* 检查 fileId 是否在列表中
|
|
5581
|
+
*/
|
|
5582
|
+
has(fileId: string): boolean;
|
|
5583
|
+
/**
|
|
5584
|
+
* 获取缓存的文件元数据
|
|
5585
|
+
*/
|
|
5586
|
+
getMetadata(fileId: string): ResourceFileInfo | undefined;
|
|
5587
|
+
/**
|
|
5588
|
+
* 设置文件元数据缓存
|
|
5589
|
+
*/
|
|
5590
|
+
setMetadata(fileId: string, metadata: ResourceFileInfo): void;
|
|
5591
|
+
/**
|
|
5592
|
+
* 获取文件下载 URL(通过后端签名)
|
|
5593
|
+
*/
|
|
5594
|
+
getDownloadUrl(fileId: string): Promise<string>;
|
|
5595
|
+
/**
|
|
5596
|
+
* 订阅文件列表变化事件(ADD/REMOVE)
|
|
5597
|
+
*
|
|
5598
|
+
* @param subscriber - 事件回调函数
|
|
5599
|
+
* @returns 取消订阅的函数
|
|
5600
|
+
*/
|
|
5234
5601
|
subscribe(subscriber: RvFileServiceSubscriber): () => void;
|
|
5602
|
+
/**
|
|
5603
|
+
* 取消订阅文件列表变化事件
|
|
5604
|
+
*
|
|
5605
|
+
* @param subscriber - 要取消的回调函数
|
|
5606
|
+
*/
|
|
5235
5607
|
unsubscribe(subscriber: RvFileServiceSubscriber): void;
|
|
5236
|
-
|
|
5237
|
-
|
|
5238
|
-
|
|
5239
|
-
|
|
5608
|
+
/**
|
|
5609
|
+
* 订阅单个文件的变化事件
|
|
5610
|
+
*
|
|
5611
|
+
* @param fileId - 文件 ID
|
|
5612
|
+
* @param subscriber - 事件回调函数
|
|
5613
|
+
* @returns 取消订阅的函数
|
|
5614
|
+
*/
|
|
5615
|
+
subscribeSingle(fileId: string, subscriber: RvFileServiceSubscriber): () => void;
|
|
5616
|
+
unsubscribeSingle(fileId: string, subscriber: RvFileServiceSubscriber): void;
|
|
5240
5617
|
}
|
|
5241
5618
|
|
|
5242
5619
|
/**
|
|
@@ -5250,7 +5627,7 @@ export declare enum RvFileServiceEventType {
|
|
|
5250
5627
|
/**
|
|
5251
5628
|
* @public
|
|
5252
5629
|
*/
|
|
5253
|
-
export declare type RvFileServiceSubscriber = (type: RvFileServiceEventType,
|
|
5630
|
+
export declare type RvFileServiceSubscriber = (type: RvFileServiceEventType, fileId: string) => void;
|
|
5254
5631
|
|
|
5255
5632
|
/**
|
|
5256
5633
|
* @public
|
|
@@ -5682,42 +6059,107 @@ export declare class RvProjectService {
|
|
|
5682
6059
|
}
|
|
5683
6060
|
|
|
5684
6061
|
/**
|
|
6062
|
+
* 资源元数据接口
|
|
6063
|
+
*
|
|
6064
|
+
* 描述项目中一个资源的完整元信息。资源是用户可见的文件或程序资源(如材质、贴图)。
|
|
6065
|
+
* 协同数据中仅存储资源 ID,完整元数据通过 RvResourceService.getMetadata() 从后端获取并缓存。
|
|
6066
|
+
*
|
|
6067
|
+
* 一个资源可能对应多个文件(如图片资源 + 缩略图文件),
|
|
6068
|
+
* 一个文件也可能对应多个资源(如模型文件内部的多个贴图为 Attach 型资源)。
|
|
6069
|
+
*
|
|
5685
6070
|
* @public
|
|
5686
6071
|
*/
|
|
5687
6072
|
export declare interface RvResource {
|
|
6073
|
+
/** 关联的文件 ID */
|
|
5688
6074
|
fid: string;
|
|
6075
|
+
/** 资源名称 */
|
|
5689
6076
|
name: string;
|
|
6077
|
+
/** 资源类型: FILE(独立文件资源)或 ATTACH(主资源的内置子资源) */
|
|
5690
6078
|
type: RvResourceType;
|
|
6079
|
+
/** MIME 类型 */
|
|
5691
6080
|
mime: string;
|
|
6081
|
+
/** 预览图 URL */
|
|
5692
6082
|
preview?: string;
|
|
6083
|
+
/** 资源描述信息 */
|
|
5693
6084
|
description?: string;
|
|
6085
|
+
/** Attach 型资源的来源信息,仅当 type 为 ATTACH 时存在 */
|
|
5694
6086
|
from?: {
|
|
6087
|
+
/** 来源文件 ID */
|
|
5695
6088
|
fid: string;
|
|
6089
|
+
/** Attach 类型: TEXTURE | MATERIAL | UV */
|
|
5696
6090
|
type: RvAttachType;
|
|
6091
|
+
/** 资源在文件内部的路径 */
|
|
5697
6092
|
path: string;
|
|
5698
6093
|
};
|
|
6094
|
+
/** 创建时间戳(毫秒) */
|
|
5699
6095
|
createdAt: number;
|
|
6096
|
+
/** 更新时间戳(毫秒) */
|
|
5700
6097
|
updatedAt: number;
|
|
6098
|
+
/** 扩展数据 */
|
|
5701
6099
|
extra?: Record<string, unknown>;
|
|
5702
6100
|
}
|
|
5703
6101
|
|
|
5704
6102
|
/**
|
|
6103
|
+
* 资源协同数据服务
|
|
6104
|
+
*
|
|
6105
|
+
* 管理协同数据中的 resourceId 列表,以及本地资源元数据缓存。
|
|
6106
|
+
* resourceId 列表存储在协同数据中,元数据从后端获取并缓存在本地。
|
|
6107
|
+
*
|
|
5705
6108
|
* @public
|
|
5706
6109
|
*/
|
|
5707
6110
|
export declare class RvResourceService {
|
|
5708
6111
|
static get instance(): RvResourceService;
|
|
5709
6112
|
private constructor();
|
|
5710
|
-
resources:
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
6113
|
+
resources: StoredRhineVar<string[]>;
|
|
6114
|
+
private metadataCache;
|
|
6115
|
+
/**
|
|
6116
|
+
* 添加 resourceId 到协同数据
|
|
6117
|
+
*/
|
|
6118
|
+
add(resourceId: string): void;
|
|
6119
|
+
/**
|
|
6120
|
+
* 从协同数据移除 resourceId
|
|
6121
|
+
*/
|
|
6122
|
+
remove(resourceId: string): boolean;
|
|
6123
|
+
/**
|
|
6124
|
+
* 检查 resourceId 是否在列表中
|
|
6125
|
+
*/
|
|
6126
|
+
has(resourceId: string): boolean;
|
|
6127
|
+
/**
|
|
6128
|
+
* 获取缓存的资源元数据
|
|
6129
|
+
*/
|
|
6130
|
+
getMetadata(resourceId: string): Resource | undefined;
|
|
6131
|
+
/**
|
|
6132
|
+
* 设置资源元数据缓存
|
|
6133
|
+
*/
|
|
6134
|
+
setMetadata(resourceId: string, metadata: Resource): void;
|
|
6135
|
+
/**
|
|
6136
|
+
* 批量获取所有资源元数据(项目初始化时调用)
|
|
6137
|
+
*
|
|
6138
|
+
* 同时从 Resource.contentFile 提取文件元数据,写入 RvFileService.metadataCache
|
|
6139
|
+
*/
|
|
6140
|
+
fetchAllMetadata(): Promise<void>;
|
|
6141
|
+
/**
|
|
6142
|
+
* 订阅资源列表变化事件(ADD/REMOVE)
|
|
6143
|
+
*
|
|
6144
|
+
* @param subscriber - 事件回调函数
|
|
6145
|
+
* @returns 取消订阅的函数
|
|
6146
|
+
*/
|
|
5715
6147
|
subscribe(subscriber: RvResourceServiceSubscriber): () => void;
|
|
6148
|
+
/**
|
|
6149
|
+
* 取消订阅资源列表变化事件
|
|
6150
|
+
*
|
|
6151
|
+
* @param subscriber - 要取消的回调函数
|
|
6152
|
+
*/
|
|
5716
6153
|
unsubscribe(subscriber: RvResourceServiceSubscriber): void;
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
6154
|
+
/**
|
|
6155
|
+
* 订阅单个资源的变化事件
|
|
6156
|
+
*
|
|
6157
|
+
* @param resourceId - 资源 ID
|
|
6158
|
+
* @param subscriber - 事件回调函数
|
|
6159
|
+
* @returns 取消订阅的函数
|
|
6160
|
+
*/
|
|
6161
|
+
subscribeSingle(resourceId: string, subscriber: RvResourceServiceSubscriber): () => void;
|
|
6162
|
+
unsubscribeSingle(resourceId: string, subscriber: RvResourceServiceSubscriber): void;
|
|
5721
6163
|
}
|
|
5722
6164
|
|
|
5723
6165
|
/**
|
|
@@ -5731,7 +6173,7 @@ export declare enum RvResourceServiceEventType {
|
|
|
5731
6173
|
/**
|
|
5732
6174
|
* @public
|
|
5733
6175
|
*/
|
|
5734
|
-
export declare type RvResourceServiceSubscriber = (type: RvResourceServiceEventType,
|
|
6176
|
+
export declare type RvResourceServiceSubscriber = (type: RvResourceServiceEventType, resourceId: string) => void;
|
|
5735
6177
|
|
|
5736
6178
|
/**
|
|
5737
6179
|
* @public
|
|
@@ -6467,7 +6909,8 @@ export declare class SyncService {
|
|
|
6467
6909
|
*
|
|
6468
6910
|
* @public
|
|
6469
6911
|
*/
|
|
6470
|
-
|
|
6912
|
+
private getUrl;
|
|
6913
|
+
private getToken;
|
|
6471
6914
|
/**
|
|
6472
6915
|
* RhineVar 协同状态对象
|
|
6473
6916
|
*
|
|
@@ -6758,7 +7201,6 @@ declare function toEulerDegrees(v: V4): V3;
|
|
|
6758
7201
|
|
|
6759
7202
|
declare function toEulerRadians(v: V4): V3;
|
|
6760
7203
|
|
|
6761
|
-
|
|
6762
7204
|
/**
|
|
6763
7205
|
* 360度制欧拉角转四元数
|
|
6764
7206
|
* @public
|
|
@@ -6823,7 +7265,7 @@ export declare function useAllSelectedInfo(): {
|
|
|
6823
7265
|
/**
|
|
6824
7266
|
* @public
|
|
6825
7267
|
*/
|
|
6826
|
-
export declare function useGlobalAttribute<T extends object =
|
|
7268
|
+
export declare function useGlobalAttribute<T extends object = object>(path?: string | RvPath): {
|
|
6827
7269
|
state: T | StoredRhineVar<T>;
|
|
6828
7270
|
path: string | RvPath;
|
|
6829
7271
|
targetGlobalAttribute: GlobalAttribute<T>;
|
|
@@ -6903,7 +7345,7 @@ export declare function useStepOptions(withDisable?: boolean): StepOptions;
|
|
|
6903
7345
|
/**
|
|
6904
7346
|
* @public
|
|
6905
7347
|
*/
|
|
6906
|
-
export declare function useTargetNodeAttribute<T extends object =
|
|
7348
|
+
export declare function useTargetNodeAttribute<T extends object = object>(path?: string | RvPath): {
|
|
6907
7349
|
state: T | StoredRhineVar<T>;
|
|
6908
7350
|
path: string | RvPath;
|
|
6909
7351
|
sid: string;
|
|
@@ -6939,7 +7381,7 @@ export declare function useTargetNodeAttribute<T extends object = any>(path?: st
|
|
|
6939
7381
|
/**
|
|
6940
7382
|
* @public
|
|
6941
7383
|
*/
|
|
6942
|
-
export declare function useTargetStepAttribute<T extends object =
|
|
7384
|
+
export declare function useTargetStepAttribute<T extends object = object>(path?: string | RvPath): {
|
|
6943
7385
|
state: T | StoredRhineVar<T>;
|
|
6944
7386
|
path: string | RvPath;
|
|
6945
7387
|
sid: string;
|
package/package.json
CHANGED