diff --git a/code/fms/fms-api/config/migrations/016_create_base_tables.sql b/code/fms/fms-api/config/migrations/016_create_base_tables.sql index 3ae20ac1..43994e56 100644 --- a/code/fms/fms-api/config/migrations/016_create_base_tables.sql +++ b/code/fms/fms-api/config/migrations/016_create_base_tables.sql @@ -323,33 +323,15 @@ BEGIN TRANSACTION; ); END; - IF OBJECT_ID(N'dbo.b_other', N'U') IS NULL - BEGIN - CREATE TABLE dbo.[b_other] ( - [b_cateid] varchar(50) NULL, - [b_id] bigint NOT NULL, - [b_name_c] nvarchar(50) NULL, - [b_1] numeric(18,0) NULL, - [b_2] varchar(50) NULL, - [b_desc] nvarchar(255) NULL, - [b_inputuser_id] bigint NULL, - [b_inputdatetime] datetime2(0) NULL, - [b_updateuser_id] bigint NULL, - [b_updatedatetime] datetime2(0) NULL, - [b_code] varchar(50) NOT NULL, - CONSTRAINT [PK_b_other] PRIMARY KEY ([b_id]), - CONSTRAINT [UQ_b_other_b_code] UNIQUE ([b_code]) - ); - END; - IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NULL BEGIN CREATE TABLE dbo.[b_other_bmfl] ( b_id bigint NOT NULL, b_parent_id bigint NULL, b_name nvarchar(150) NOT NULL, - b_level int NOT NULL CONSTRAINT [DF_b_other_bmfl_level] DEFAULT (1), - b_path varchar(1000) NOT NULL, + b_i18n varchar(150) NULL, + b_node_type varchar(20) NOT NULL CONSTRAINT [DF_b_other_bmfl_node_type] DEFAULT ('category'), + b_module_code varchar(100) NULL, b_xh int NOT NULL CONSTRAINT [DF_b_other_bmfl_xh] DEFAULT (0), b_canuse int NOT NULL CONSTRAINT [DF_b_other_bmfl_canuse] DEFAULT (1), b_inputuser_id bigint NULL, @@ -358,10 +340,15 @@ BEGIN TRANSACTION; b_updatedatetime datetime2(0) NULL, CONSTRAINT [PK_b_other_bmfl] PRIMARY KEY (b_id), CONSTRAINT [CK_b_other_bmfl_parent] CHECK (b_parent_id IS NULL OR b_parent_id <> b_id), + CONSTRAINT [CK_b_other_bmfl_node_type] CHECK (b_node_type IN ('category', 'module')), + CONSTRAINT [CK_b_other_bmfl_module_ref] CHECK ( + (b_node_type = 'category' AND b_module_code IS NULL) + OR (b_node_type = 'module' AND b_module_code IS NOT NULL AND LEN(LTRIM(RTRIM(b_module_code))) > 0) + ), CONSTRAINT [FK_b_other_bmfl_parent] FOREIGN KEY (b_parent_id) REFERENCES dbo.[b_other_bmfl] (b_id) ); CREATE INDEX [IX_b_other_bmfl_parent] ON dbo.[b_other_bmfl] (b_parent_id, b_xh, b_id); - CREATE INDEX [IX_b_other_bmfl_path] ON dbo.[b_other_bmfl] (b_path, b_xh, b_id); + CREATE INDEX [IX_b_other_bmfl_module] ON dbo.[b_other_bmfl] (b_node_type, b_module_code); END; IF OBJECT_ID(N'dbo.b_othercompany_accountbank', N'U') IS NULL diff --git a/code/fms/fms-api/config/migrations/022_add_otherdata_module.sql b/code/fms/fms-api/config/migrations/022_add_otherdata_module.sql index ee59ad38..3f73ffda 100644 --- a/code/fms/fms-api/config/migrations/022_add_otherdata_module.sql +++ b/code/fms/fms-api/config/migrations/022_add_otherdata_module.sql @@ -17,10 +17,18 @@ BEGIN TRANSACTION; THROW 52001, N'base directory not found. Run 012 / 002 migration first.', 1; /* ========================================================================= - 2. 创建 page 模块: m_base_otherdata + 2. 创建 page 模块: base_otherdata ========================================================================= */ + IF EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'm_base_otherdata') + AND NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'base_otherdata') + BEGIN + UPDATE dbo.s_module + SET b_code = 'base_otherdata' + WHERE b_code = 'm_base_otherdata'; + END; + DECLARE @PageId bigint = 920000000000001100; - IF NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'm_base_otherdata') + IF NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'base_otherdata') BEGIN IF EXISTS (SELECT 1 FROM dbo.s_module WHERE b_id = @PageId) THROW 52002, N'The reserved otherdata page ID is already in use.', 1; @@ -30,13 +38,13 @@ BEGIN TRANSACTION; b_route, b_viewtable, b_savetable, b_keyfield, b_orderfield, b_canmenu, b_canuse, b_xh ) VALUES ( - @PageId, 'm_base_otherdata', @BaseId, N'其他数据', + @PageId, 'base_otherdata', @BaseId, N'其他数据', 'menu.base_otherdata', 'page', '/base/otherdata', NULL, NULL, NULL, NULL, 1, 1, 30 ); END ELSE - SET @PageId = (SELECT b_id FROM dbo.s_module WHERE b_code = 'm_base_otherdata'); + SET @PageId = (SELECT b_id FROM dbo.s_module WHERE b_code = 'base_otherdata'); /* ========================================================================= 3. 创建 data 模块辅助存储过程 diff --git a/code/fms/fms-api/config/migrations/023_add_otherdata_bmfl_module_code.sql b/code/fms/fms-api/config/migrations/023_add_otherdata_bmfl_module_code.sql index 93caabef..a5d21c9a 100644 --- a/code/fms/fms-api/config/migrations/023_add_otherdata_bmfl_module_code.sql +++ b/code/fms/fms-api/config/migrations/023_add_otherdata_bmfl_module_code.sql @@ -1,78 +1,175 @@ -/* 扩展 b_other_bmfl 表,添加 b_module_code 字段关联 s_module 数据模块。 - 分类节点 b_module_code 为空(仅做分组),叶子节点指向对应的 data 模块。*/ +/* 其他数据分类树采用引用设计: + category 节点只维护树结构和分类名称,module 节点只引用 s_module.data 的 b_code。*/ SET NOCOUNT ON; SET XACT_ABORT ON; BEGIN TRANSACTION; - /* ========================================================================= - 1. 添加 b_module_code 列 - ========================================================================= */ - IF NOT EXISTS ( - SELECT 1 FROM sys.columns - WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') AND name = 'b_module_code' - ) + IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NULL + THROW 52301, N'dbo.b_other_bmfl does not exist.', 1; + + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_node_type') IS NULL BEGIN ALTER TABLE dbo.b_other_bmfl - ADD b_module_code nvarchar(100) NULL; + ADD b_node_type varchar(20) NOT NULL + CONSTRAINT [DF_b_other_bmfl_node_type] DEFAULT ('category') WITH VALUES; END; - /* ========================================================================= - 2. 插入演示分类数据(基础信息 / 财务信息 / 物流信息 分组) - ========================================================================= */ - DECLARE @CatBasic bigint = 930000000000000101; - DECLARE @CatFinance bigint = 930000000000000102; - DECLARE @CatLogistics bigint = 930000000000000103; + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_module_code') IS NULL + BEGIN + ALTER TABLE dbo.b_other_bmfl + ADD b_module_code varchar(100) NULL; + END; - /* ---- 基础信息 ---- */ - IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatBasic) - INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code) - VALUES (@CatBasic, NULL, N'基础信息', 1, CAST(@CatBasic AS varchar(20)), 10, 1, NULL); + IF EXISTS ( + SELECT 1 FROM sys.indexes + WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'IX_b_other_bmfl_path' + ) + DROP INDEX [IX_b_other_bmfl_path] ON dbo.b_other_bmfl; - /* ---- 财务信息 ---- */ - IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatFinance) - INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code) - VALUES (@CatFinance, NULL, N'财务信息', 1, CAST(@CatFinance AS varchar(20)), 20, 1, NULL); + DECLARE @DropSql nvarchar(max); - /* ---- 物流信息 ---- */ - IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatLogistics) - INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code) - VALUES (@CatLogistics, NULL, N'物流信息', 1, CAST(@CatLogistics AS varchar(20)), 30, 1, NULL); + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_level') IS NOT NULL + BEGIN + SET @DropSql = NULL; + SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']' + FROM sys.default_constraints dc + JOIN sys.columns c + ON c.object_id = dc.parent_object_id + AND c.column_id = dc.parent_column_id + WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND c.name = N'b_level'; + IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql; - /* ========================================================================= - 3. 插入叶子节点(关联到已有 data 模块) - ========================================================================= */ - DECLARE @NodePort bigint = 930000000000000201; - DECLARE @NodeCity bigint = 930000000000000202; - DECLARE @NodeMoney bigint = 930000000000000203; - DECLARE @NodeOceanline bigint = 930000000000000204; + EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_level'; + END; - /* ---- 基础信息 / 港口 ---- */ - IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodePort) - INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code) - VALUES (@NodePort, @CatBasic, N'港口', 2, - CAST(@CatBasic AS varchar(20)) + '/' + CAST(@NodePort AS varchar(20)), - 10, 1, 'd_other_port'); + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_path') IS NOT NULL + BEGIN + SET @DropSql = NULL; + SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']' + FROM sys.default_constraints dc + JOIN sys.columns c + ON c.object_id = dc.parent_object_id + AND c.column_id = dc.parent_column_id + WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND c.name = N'b_path'; + IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql; - /* ---- 基础信息 / 城市 ---- */ - IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeCity) - INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code) - VALUES (@NodeCity, @CatBasic, N'城市', 2, - CAST(@CatBasic AS varchar(20)) + '/' + CAST(@NodeCity AS varchar(20)), - 20, 1, 'd_other_city'); + EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_path'; + END; - /* ---- 财务信息 / 币种 ---- */ - IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeMoney) - INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code) - VALUES (@NodeMoney, @CatFinance, N'币种', 2, - CAST(@CatFinance AS varchar(20)) + '/' + CAST(@NodeMoney AS varchar(20)), - 10, 1, 'd_other_money'); + EXEC sys.sp_executesql N' + UPDATE dbo.b_other_bmfl + SET b_module_code = NULLIF(LTRIM(RTRIM(COALESCE(b_module_code, ''''))), ''''); - /* ---- 物流信息 / 航线 ---- */ - IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeOceanline) - INSERT INTO dbo.b_other_bmfl (b_id, b_parent_id, b_name, b_level, b_path, b_xh, b_canuse, b_module_code) - VALUES (@NodeOceanline, @CatLogistics, N'航线', 2, - CAST(@CatLogistics AS varchar(20)) + '/' + CAST(@NodeOceanline AS varchar(20)), - 10, 1, 'd_other_oceanline'); + UPDATE dbo.b_other_bmfl + SET b_node_type = CASE + WHEN b_module_code IS NULL THEN ''category'' + ELSE ''module'' + END'; + + IF NOT EXISTS ( + SELECT 1 FROM sys.check_constraints + WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'CK_b_other_bmfl_node_type' + ) + EXEC sys.sp_executesql N' + ALTER TABLE dbo.b_other_bmfl + ADD CONSTRAINT [CK_b_other_bmfl_node_type] + CHECK (b_node_type IN (''category'', ''module''))'; + + IF NOT EXISTS ( + SELECT 1 FROM sys.check_constraints + WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'CK_b_other_bmfl_module_ref' + ) + EXEC sys.sp_executesql N' + ALTER TABLE dbo.b_other_bmfl + ADD CONSTRAINT [CK_b_other_bmfl_module_ref] + CHECK ( + (b_node_type = ''category'' AND b_module_code IS NULL) + OR ( + b_node_type = ''module'' + AND b_module_code IS NOT NULL + AND LEN(LTRIM(RTRIM(b_module_code))) > 0 + ) + )'; + + IF NOT EXISTS ( + SELECT 1 FROM sys.indexes + WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'IX_b_other_bmfl_module' + ) + EXEC sys.sp_executesql N' + CREATE INDEX [IX_b_other_bmfl_module] ON dbo.b_other_bmfl (b_node_type, b_module_code)'; + + EXEC sys.sp_executesql N' + DECLARE @CatBasic bigint = 930000000000000101; + DECLARE @CatFinance bigint = 930000000000000102; + DECLARE @CatLogistics bigint = 930000000000000103; + + IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatBasic) + INSERT INTO dbo.b_other_bmfl ( + b_id, b_parent_id, b_name, b_node_type, b_module_code, + b_xh, b_canuse + ) + VALUES (@CatBasic, NULL, N''基础信息'', ''category'', NULL, 10, 1); + + IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatFinance) + INSERT INTO dbo.b_other_bmfl ( + b_id, b_parent_id, b_name, b_node_type, b_module_code, + b_xh, b_canuse + ) + VALUES (@CatFinance, NULL, N''财务信息'', ''category'', NULL, 20, 1); + + IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @CatLogistics) + INSERT INTO dbo.b_other_bmfl ( + b_id, b_parent_id, b_name, b_node_type, b_module_code, + b_xh, b_canuse + ) + VALUES (@CatLogistics, NULL, N''物流信息'', ''category'', NULL, 30, 1); + + DECLARE @NodePort bigint = 930000000000000201; + DECLARE @NodeCity bigint = 930000000000000202; + DECLARE @NodeMoney bigint = 930000000000000203; + DECLARE @NodeOceanline bigint = 930000000000000204; + + IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodePort) + INSERT INTO dbo.b_other_bmfl ( + b_id, b_parent_id, b_name, b_node_type, b_module_code, + b_xh, b_canuse + ) + VALUES ( + @NodePort, @CatBasic, N''港口'', ''module'', ''d_other_port'', 10, 1 + ); + + IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeCity) + INSERT INTO dbo.b_other_bmfl ( + b_id, b_parent_id, b_name, b_node_type, b_module_code, + b_xh, b_canuse + ) + VALUES ( + @NodeCity, @CatBasic, N''城市'', ''module'', ''d_other_city'', 20, 1 + ); + + IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeMoney) + INSERT INTO dbo.b_other_bmfl ( + b_id, b_parent_id, b_name, b_node_type, b_module_code, + b_xh, b_canuse + ) + VALUES ( + @NodeMoney, @CatFinance, N''币种'', ''module'', ''d_other_money'', 10, 1 + ); + + IF NOT EXISTS (SELECT 1 FROM dbo.b_other_bmfl WHERE b_id = @NodeOceanline) + INSERT INTO dbo.b_other_bmfl ( + b_id, b_parent_id, b_name, b_node_type, b_module_code, + b_xh, b_canuse + ) + VALUES ( + @NodeOceanline, @CatLogistics, N''航线'', ''module'', ''d_other_oceanline'', 10, 1 + );'; COMMIT TRANSACTION; diff --git a/code/fms/fms-api/config/migrations/024_drop_unused_b_other.sql b/code/fms/fms-api/config/migrations/024_drop_unused_b_other.sql new file mode 100644 index 00000000..d1cfd599 --- /dev/null +++ b/code/fms/fms-api/config/migrations/024_drop_unused_b_other.sql @@ -0,0 +1,13 @@ +/* 删除未使用的旧版其他数据通用表。当前其他数据使用 b_other_bmfl 分类树 + 关联 s_module 数据节点,并由具体基础表保存数据。*/ +SET NOCOUNT ON; +SET XACT_ABORT ON; + +BEGIN TRANSACTION; + + IF OBJECT_ID(N'dbo.b_other', N'U') IS NOT NULL + BEGIN + DROP TABLE dbo.b_other; + END; + +COMMIT TRANSACTION; diff --git a/code/fms/fms-api/config/migrations/025_add_otherdata_category_i18n.sql b/code/fms/fms-api/config/migrations/025_add_otherdata_category_i18n.sql new file mode 100644 index 00000000..ed706f41 --- /dev/null +++ b/code/fms/fms-api/config/migrations/025_add_otherdata_category_i18n.sql @@ -0,0 +1,29 @@ +/* 为其他数据分类树增加多语言键。分类节点归属 base_otherdata 页面模块; + 数据节点名称继续使用其关联 s_module data 节点的 b_i18n。*/ +SET NOCOUNT ON; +SET XACT_ABORT ON; + +BEGIN TRANSACTION; + + IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NOT NULL + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM sys.columns + WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') AND name = 'b_i18n' + ) + BEGIN + ALTER TABLE dbo.b_other_bmfl + ADD b_i18n varchar(150) NULL; + END; + + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_module_code') IS NOT NULL + BEGIN + EXEC sys.sp_executesql N' + UPDATE dbo.b_other_bmfl + SET b_i18n = ''category.base_otherdata.'' + CAST(b_id AS varchar(30)) + WHERE b_module_code IS NULL + AND (b_i18n IS NULL OR b_i18n = '''')'; + END; + END; + +COMMIT TRANSACTION; diff --git a/code/fms/fms-api/config/migrations/026_normalize_otherdata_tree_reference.sql b/code/fms/fms-api/config/migrations/026_normalize_otherdata_tree_reference.sql new file mode 100644 index 00000000..c09c2677 --- /dev/null +++ b/code/fms/fms-api/config/migrations/026_normalize_otherdata_tree_reference.sql @@ -0,0 +1,132 @@ +/* 规范其他数据分类树为引用设计。 + 仅修正目标库元数据结构,不从模块管理同步树节点。*/ +SET NOCOUNT ON; +SET XACT_ABORT ON; + +BEGIN TRANSACTION; + + IF EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'm_base_otherdata') + AND NOT EXISTS (SELECT 1 FROM dbo.s_module WHERE b_code = 'base_otherdata') + BEGIN + UPDATE dbo.s_module + SET b_code = 'base_otherdata' + WHERE b_code = 'm_base_otherdata'; + END; + + IF OBJECT_ID(N'dbo.b_other_bmfl', N'U') IS NOT NULL + BEGIN + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_node_type') IS NULL + BEGIN + ALTER TABLE dbo.b_other_bmfl + ADD b_node_type varchar(20) NOT NULL + CONSTRAINT [DF_b_other_bmfl_node_type] DEFAULT ('category') WITH VALUES; + END; + + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_module_code') IS NULL + BEGIN + ALTER TABLE dbo.b_other_bmfl + ADD b_module_code varchar(100) NULL; + END; + + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_i18n') IS NULL + BEGIN + ALTER TABLE dbo.b_other_bmfl + ADD b_i18n varchar(150) NULL; + END; + + IF EXISTS ( + SELECT 1 FROM sys.indexes + WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'IX_b_other_bmfl_path' + ) + DROP INDEX [IX_b_other_bmfl_path] ON dbo.b_other_bmfl; + + EXEC sys.sp_executesql N' + UPDATE dbo.b_other_bmfl + SET b_module_code = NULLIF(LTRIM(RTRIM(COALESCE(b_module_code, ''''))), ''''); + + UPDATE dbo.b_other_bmfl + SET b_node_type = CASE + WHEN b_module_code IS NULL THEN ''category'' + ELSE ''module'' + END; + + UPDATE dbo.b_other_bmfl + SET b_i18n = ''category.base_otherdata.'' + CAST(b_id AS varchar(30)) + WHERE b_node_type = ''category'' + AND (b_i18n IS NULL OR b_i18n = ''''); + + UPDATE dbo.b_other_bmfl + SET b_i18n = REPLACE(b_i18n, ''category.m_base_otherdata.'', ''category.base_otherdata.'') + WHERE b_node_type = ''category'' + AND b_i18n LIKE ''category.m_base_otherdata.%'''; + + IF NOT EXISTS ( + SELECT 1 FROM sys.check_constraints + WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'CK_b_other_bmfl_node_type' + ) + EXEC sys.sp_executesql N' + ALTER TABLE dbo.b_other_bmfl + ADD CONSTRAINT [CK_b_other_bmfl_node_type] + CHECK (b_node_type IN (''category'', ''module''))'; + + IF NOT EXISTS ( + SELECT 1 FROM sys.check_constraints + WHERE parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'CK_b_other_bmfl_module_ref' + ) + EXEC sys.sp_executesql N' + ALTER TABLE dbo.b_other_bmfl + ADD CONSTRAINT [CK_b_other_bmfl_module_ref] + CHECK ( + (b_node_type = ''category'' AND b_module_code IS NULL) + OR ( + b_node_type = ''module'' + AND b_module_code IS NOT NULL + AND LEN(LTRIM(RTRIM(b_module_code))) > 0 + ) + )'; + + IF NOT EXISTS ( + SELECT 1 FROM sys.indexes + WHERE object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND name = N'IX_b_other_bmfl_module' + ) + EXEC sys.sp_executesql N' + CREATE INDEX [IX_b_other_bmfl_module] ON dbo.b_other_bmfl (b_node_type, b_module_code)'; + + DECLARE @DropSql nvarchar(max); + + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_level') IS NOT NULL + BEGIN + SET @DropSql = NULL; + SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']' + FROM sys.default_constraints dc + JOIN sys.columns c + ON c.object_id = dc.parent_object_id + AND c.column_id = dc.parent_column_id + WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND c.name = N'b_level'; + IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql; + + EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_level'; + END; + + IF COL_LENGTH(N'dbo.b_other_bmfl', N'b_path') IS NOT NULL + BEGIN + SET @DropSql = NULL; + SELECT @DropSql = N'ALTER TABLE dbo.b_other_bmfl DROP CONSTRAINT [' + REPLACE(dc.name, N']', N']]') + N']' + FROM sys.default_constraints dc + JOIN sys.columns c + ON c.object_id = dc.parent_object_id + AND c.column_id = dc.parent_column_id + WHERE dc.parent_object_id = OBJECT_ID(N'dbo.b_other_bmfl') + AND c.name = N'b_path'; + IF @DropSql IS NOT NULL EXEC sys.sp_executesql @DropSql; + + EXEC sys.sp_executesql N'ALTER TABLE dbo.b_other_bmfl DROP COLUMN b_path'; + END; + END; + +COMMIT TRANSACTION; diff --git a/code/fms/fms-vue/.gitignore b/code/fms/fms-vue/.gitignore index a547bf36..e1b30b4d 100644 --- a/code/fms/fms-vue/.gitignore +++ b/code/fms/fms-vue/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + +public/file-viewer \ No newline at end of file diff --git a/code/fms/fms-vue/package.json b/code/fms/fms-vue/package.json index 21d99b45..4cb204d1 100644 --- a/code/fms/fms-vue/package.json +++ b/code/fms/fms-vue/package.json @@ -11,6 +11,7 @@ "fmt:check": "oxfmt --check" }, "dependencies": { + "@file-viewer/vue3-full": "^2.2.4", "@lucide/vue": "^1.24.0", "@vueuse/core": "^14.3.0", "antdv-next": "^1.4.2", @@ -25,6 +26,7 @@ "devDependencies": { "@antdv-next/auto-import-resolver": "^1.1.0", "@antdv-next/tailwind": "^1.1.1", + "@file-viewer/vite-plugin": "^2.2.4", "@tailwindcss/vite": "4.3.2", "@vitejs/plugin-vue": "^6.0.7", "less": "^4.7.0", diff --git a/code/fms/fms-vue/pnpm-lock.yaml b/code/fms/fms-vue/pnpm-lock.yaml index 3daddae2..30f0f155 100644 --- a/code/fms/fms-vue/pnpm-lock.yaml +++ b/code/fms/fms-vue/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@file-viewer/vue3-full': + specifier: ^2.2.4 + version: 2.2.4(three@0.184.0)(vue@3.5.39) '@lucide/vue': specifier: ^1.24.0 version: 1.24.0(vue@3.5.39) @@ -45,6 +48,9 @@ importers: '@antdv-next/tailwind': specifier: ^1.1.1 version: 1.1.1(tailwindcss@4.3.2) + '@file-viewer/vite-plugin': + specifier: ^2.2.4 + version: 2.2.4(vite@8.1.4(jiti@2.7.0)(less@4.7.0)(sass@1.101.0)(yaml@2.9.0)) '@tailwindcss/vite': specifier: 4.3.2 version: 4.3.2(vite@8.1.4(jiti@2.7.0)(less@4.7.0)(sass@1.101.0)(yaml@2.9.0)) @@ -113,6 +119,9 @@ packages: peerDependencies: tailwindcss: '>=3.0.0' + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@babel/generator@8.0.0': resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} engines: {node: ^22.18.0 || >=24.11.0} @@ -155,6 +164,12 @@ packages: resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==} engines: {node: ^22.18.0 || >=24.11.0} + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} @@ -170,6 +185,127 @@ packages: '@emotion/unitless@0.7.5': resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + '@file-viewer/core@2.2.4': + resolution: {integrity: sha512-2jnNUILGftRo96dr0dxs4HQBjlWY3V93+ZqiHafUmWAr3wLr1tc9MbJVFKc6KkITo1nA9ilQYcOxqITs0by9Wg==} + + '@file-viewer/doc@2.2.4': + resolution: {integrity: sha512-V/XyaHcr+pSrkkPdf9Ecihuk4STeZYBVlhPYAe/+cbBhshq2C1H9SbwDYEo/f/yvC7LBBn/5jxyEx5dB3d1hMw==} + + '@file-viewer/docx@0.3.26': + resolution: {integrity: sha512-O4VCOtLNm3QZLODhqhJMhPf+2wmWSdGzW7YmKzkUXHZGOo3CmfpeVzoRQXTQA7UQRuLpJankmYYWtR2Y7EYrZg==} + + '@file-viewer/eda-layout@2.2.4': + resolution: {integrity: sha512-Bx2wvUEB9af4lIl4NEsdFj6BOr6Lka+lfCEmHyEAW4hB1YgfuyAzCBLKo3x7AeuBfyDg4MBc5p3M1SWNK8Jl/A==} + + '@file-viewer/eda-orcad@2.2.4': + resolution: {integrity: sha512-oIQP57y2zU8Oe8LjC9FF2xK0Rd5xQLhKZkJoSeJKQUllpGWpX4b83otnLVDgW6vdlKpDf+Km375+yd1dbChH/w==} + + '@file-viewer/geometry-engine@2.2.4': + resolution: {integrity: sha512-DZdvS6akub+MphrpGVMoZUn7Gkn6wmQLiPE7k8IlYYpq6X89x2CotPXMJ/CKibBhMjNZfGYQzgBKibvGcpTMDQ==} + + '@file-viewer/ppt@0.3.2': + resolution: {integrity: sha512-5+CUEIhEGB9CItlA0RfN8ErvFxebtJqlUHZVrm87M8Be54oHI2PvlzuZhwD7l72hasUd52amdC7uX0+uKYoQvg==} + engines: {node: '>=18'} + + '@file-viewer/pptx@2.2.4': + resolution: {integrity: sha512-uaEiYkgLn2BqjnTsU3wfSR4E6FsLiBxF/w34wi687Uf3TWG/pNxXJk05836T184WdXFRuEm7ppabBCLmxXyogw==} + + '@file-viewer/preset-all@2.2.4': + resolution: {integrity: sha512-gLmPKRZJYN3EgNWNcMtZ5HgCn7WtLXO9C+7J8lqt/c+bN6GpH2dX+zysZPBMvAxoZhmvk+28n6dKtfzqh5Yiew==} + + '@file-viewer/renderer-3d@2.2.4': + resolution: {integrity: sha512-n/hg8ZHLlIj7sSkXrgynjZNiRhfhamuqn8HG+k7q0tKXakzXxBTIkPPdFnF36+epZZD5mtvlVI8aGSCVeal0qQ==} + + '@file-viewer/renderer-archive@2.2.4': + resolution: {integrity: sha512-ssFuxkCrJu9zy7DCShdHoAHh1PciH42gmRPr/chRE5mntmWVvpCPjWEHXuSRqbuf6L53aO5gzvJeJF88e5SIvA==} + + '@file-viewer/renderer-cad@2.2.4': + resolution: {integrity: sha512-PmTIEpejk2aMaF4agKrb2lMzwn/b+X89mnBMHhxzbtbllRBfQHcL06B01Ubn9FuSQHgJG3Gq0XN5DG4QnahF8w==} + + '@file-viewer/renderer-data@2.2.4': + resolution: {integrity: sha512-syGYbmZNTrHz91+UU/0XXnS2KyIIjgh4u7NnH/3Vp7nng/7T/sK8fI9K2KCh+dvaxMG3OWH3rQ1g3vkqz0MnJA==} + + '@file-viewer/renderer-drawing@2.2.4': + resolution: {integrity: sha512-s9qD9H5O3BfanFdv0te1ZlNuW3UhMhfW+H6NDn9dKRC1miDSYD13B05HfIz/ewAXpDjv+sN12IepwphaCZmzyw==} + + '@file-viewer/renderer-eda@2.2.4': + resolution: {integrity: sha512-K1aGtX/QUERWvJBzGLsZjv6sZacQs1weEJl0riqky2FZB7jvyXi/w6t90AFMqStSdwReKV2XQPym7igU0a0ZDA==} + + '@file-viewer/renderer-email@2.2.4': + resolution: {integrity: sha512-WoTc5Pian7YYtSiAcyGMeBcvwQnl4w5QmWuqYg5hEDlHvzz0uF9TfF1f12Tb5BOR7Da1wxEYAFcFgJVz6Edf4w==} + + '@file-viewer/renderer-epub@2.2.4': + resolution: {integrity: sha512-aMCZsuKMnFpUPKyZENK4WM8decX07AMzJcqnVaJTXCWPShhH3wEyydDtByHd1S1OntaLsaK0e0nvZsXQIF0ByQ==} + + '@file-viewer/renderer-geo@2.2.4': + resolution: {integrity: sha512-cdnYyZpbFzNQ2jBvHedK2bc7TX2v9IihDYHmWv+Kq4EivKqhJPDEgT1JA1XpbkNKMOQw0irQAaoTnBjp6/YoIw==} + + '@file-viewer/renderer-image@2.2.4': + resolution: {integrity: sha512-ojnYwt6KuYH5UNLVwWhFM1XlZTksc+GsASN/MGwN/pZzQLxuPbL+l+Oz9D9o/K0R5tPqFXN+9tphbi9rALuY4w==} + + '@file-viewer/renderer-media@2.2.4': + resolution: {integrity: sha512-IshgyUx8uRqKQR0Vu9SlR2G9jom+nOixOPJ7vj4L2e+1XUfkyByev+/IdIyG5lqIB5BXu/NyacJqmdjGB8AuDg==} + + '@file-viewer/renderer-mindmap@2.2.4': + resolution: {integrity: sha512-DEkWa5DKfXwzgKr8U0DKN2Nn+t2T81pgTdS99hgRRjxcmjOch2WT4W5LGvbxw/Vqcrj1L4A6OgcFVqAV5PcXlQ==} + + '@file-viewer/renderer-ofd@2.2.4': + resolution: {integrity: sha512-hOZSWV76YmhFdcAV5PHpYHln1Y+cV7hR3zQr1yE80ii27qx3CORogN7YEOIT0G2/8ARW6iTE01r5iZyrV9fW1w==} + + '@file-viewer/renderer-pdf@2.2.4': + resolution: {integrity: sha512-xYxI7B1vasP9qd/InOjMQA10QajipzqeHQcSoau/Ep9eQua5gAcfxM6SEeaIWBfgZ7pWaHLklcrcvzArZG8zbQ==} + + '@file-viewer/renderer-presentation@2.2.4': + resolution: {integrity: sha512-kuzk3FT0WooC4sGx4GhkP658RmD/RBJILWFEqWTkMhYDiMFpNwArjGWsk4X71HZu5dLRfaYi72J1YX57s/rG+Q==} + + '@file-viewer/renderer-spreadsheet@2.2.4': + resolution: {integrity: sha512-k0NZ1kouv58hGBH5nm/i29aDoRTRzNjpHDiqVwDfNSlkk4ppd1fKM/OlMfVxc8T3/oRToo9IQit7XQ8VGftqVQ==} + + '@file-viewer/renderer-text@2.2.4': + resolution: {integrity: sha512-nPVY77Hh6zJHyNUqRePC2UBCGd/tLXhNiydBnY76IfLMshbenPxLuEcoJr/KDOdvAreEEar3Tj0T7emDZnuEyQ==} + + '@file-viewer/renderer-typst@2.2.4': + resolution: {integrity: sha512-JZxFQoVVvmucc5+NmsEd3QCtvuKFuqS0JdtTvQlR0pfBWbKxEZLFu/YuZpwnRg6X8hDDCgNBVUTyCQH4RDEvVQ==} + + '@file-viewer/renderer-word@2.2.4': + resolution: {integrity: sha512-P/ONqq1uQwkH/92Wn9vNLntI0uUy7q4pRPJedmXAS46v2zCiYm1OLtnZPg1bwYkDUUUTugWXYgnJusPT7nQdzQ==} + + '@file-viewer/vite-plugin@2.2.4': + resolution: {integrity: sha512-FWg4Xnv5hqq4fyLPmRYi6AVyzMqyaZaSqGZbw6FTxIJPvQ6kBE8K7vvCGpWZO1e097H8N3vTC2Kn9wa4OcFXmQ==} + peerDependencies: + vite: '>=5 <9' + + '@file-viewer/vue3-full@2.2.4': + resolution: {integrity: sha512-4T417hGHP5VMiGk+r4/dddbgNhL22k64qX57I+axrNzX695xn7y4Fh+5ImBc65wQytzhDfNt8LyfLHj7Hte1nQ==} + hasBin: true + peerDependencies: + vue: '>=3.3 <4' + + '@file-viewer/vue3@2.2.4': + resolution: {integrity: sha512-mmZISker+rqjrAstLJfTSPZHmnJAKIMvRGcqjL1haMzziqjS+sOlCunAhjTVbZLIRcgGexXv3/5YKOfYM8UChw==} + + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + + '@flyfish-dev/cad-viewer@0.8.0': + resolution: {integrity: sha512-oBhcDZ93UlkPPCCtaki3Nskfv6amE+4MnD/sTosE+e9Wv8vX/c2Z7V9aiInIDeI49YFfj6nqS1pj6zNgchkOxw==} + engines: {node: '>=20.19.0'} + + '@fontsource-variable/noto-sans-sc@5.2.10': + resolution: {integrity: sha512-zdk10i5HrDQTXI7ldD61zToX1fsgig8vDTsu7zB48SXOitWfuX0e5viZAwnkHuhwh096PU6X6i1AyAsbBCISpA==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.4': + resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -186,11 +322,160 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@kenjiuno/decompressrtf@0.1.4': + resolution: {integrity: sha512-v9c/iFz17jRWyd2cRnrvJg4VOg/4I/VCk+bG8JnoX2gJ9sAesPzo3uTqcmlVXdpasTI8hChpBVw00pghKe3qTQ==} + + '@kenjiuno/msgreader@1.28.0': + resolution: {integrity: sha512-+iv2rWCGRHmX/3sBwXZzkThEuuywGJjnYsvxj6Kp1L/FDMICQcFrtqN+6MFrnh2d+umtfGtX904wxaYEDZ52MQ==} + engines: {node: '>= 10'} + + '@ljheee/xmind-parser@1.1.3': + resolution: {integrity: sha512-cAfbd8ANkOmyHgE3FZrCJwdyQv8ty0woMC6toSUvgo6Cm2crS3ibS+YKrTPDbDhjP6cJoVsoboRNdCWeDL5xMg==} + engines: {node: '>=14.8.0'} + '@lucide/vue@1.24.0': resolution: {integrity: sha512-5bNPX0G2YEWdUlBYk7pE8SgDg/f1mkIFpJ9vtE44pW/cwRz7Ioc0tOTESoVJAPvxIELSmYekX+XXIJMjsswNIg==} peerDependencies: vue: '>=3.0.1' + '@mapbox/jsonlint-lines-primitives@2.0.3': + resolution: {integrity: sha512-0SElaV0uMxEnxzBhhX9WTuPyUeMsAN/SS0i16tjuba4/mio63MG9khjC1a0JAiPGXAwvwm4UfHJURCN7nyudQg==} + engines: {node: '>= 22'} + + '@mapbox/point-geometry@1.1.0': + resolution: {integrity: sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==} + + '@mapbox/tiny-sdf@2.2.0': + resolution: {integrity: sha512-LVL4wgI9YAum5V+LNVQO6QgFBPw7/MIIY4XJPNsPDMrjEwcE+JfKk1LuIl8GnF197ejVdC9QdPaxrx5gfgdGXg==} + + '@mapbox/unitbezier@0.0.1': + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} + + '@mapbox/unitbezier@1.0.0': + resolution: {integrity: sha512-fqd515fjBmANKGGsQ286E2Wvj/XvDFpGzwJxq4CI6jMQue6Oy04uCKp+JWKF00xRTmk6cEu1jPJ9p3xqH8YWqQ==} + + '@mapbox/vector-tile@2.0.5': + resolution: {integrity: sha512-pXj8m7KTsqZt+1jsE0xIpGvqTSbblfkuEJL/NJmNePMtEwxO8V3XMDo9WMSfDeqHvCtBI9Lmt4mGcGR10zecmw==} + + '@mapbox/whoots-js@3.1.0': + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + + '@maplibre/geojson-vt@6.1.1': + resolution: {integrity: sha512-FVMOcmSP/yqol45t7StApEyTL5/vmqBCuFhH9n+fFuINenhaX+YgHHIt1yJ86S8kln3uJLcMvmEU2cfn6E2eCQ==} + + '@maplibre/maplibre-gl-style-spec@24.10.0': + resolution: {integrity: sha512-lichxSiagMEBBrqHF0trtMQH9RKh+9jUlIJl0qW0QHvt2H/tbvUWdE+ZzI2Jd0/pT7j/iavLonlPu7EQ/ixTOw==} + hasBin: true + + '@maplibre/mlt@1.1.12': + resolution: {integrity: sha512-ZeK5w2TTeHOajcLaEQs1KZXw2V9wIKo1PmThlxlsHoXsQsYlBqLJzPOd6tJHRtGTChUY3DPPmjXRArYVvAbmZw==} + + '@maplibre/vt-pbf@4.3.2': + resolution: {integrity: sha512-j6p0AdjvAR19Z3XaCysle7A4ZSo08tYOzxD0Y9NQylwPAkwJJeYub5b2eVucdeDh7erhv69DahoLOevDRERRUw==} + + '@mermaid-js/parser@1.2.0': + resolution: {integrity: sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==} + + '@mlightcad/libredwg-web@0.7.9': + resolution: {integrity: sha512-tqjx0eCiR0CNI3TyO3LVYzl4ptuzSFm7asGn/C1YiJaEk7Vneto+lRrVUco85qw+PZDihaFLwWqdYIEse1swbA==} + engines: {node: '>=20'} + + '@mlightcad/shx-parser@1.4.5': + resolution: {integrity: sha512-wFY0X7vnuq1IYdP6JRggb7LHcKho1P8zmcWGtXa6XYthwyKZCUoZCswTXr7J26pbzyhBB7KsiCcCL48iwIevdQ==} + + '@myriaddreamin/typst-ts-renderer@0.7.0': + resolution: {integrity: sha512-3sXIGxZn9MufPrPn6251DeuLf2FIEILYNzY5lX0XOJmaIYqgvQ3qpfqkCjgQD+splBvt5R1N3BuuNFrZKsHhMw==} + + '@myriaddreamin/typst-ts-web-compiler@0.7.0': + resolution: {integrity: sha512-nMwMcfOBy5pABPDuVM7/u8425SxhPUM+OJe6daqqgVOT3+neCTz4JKwx2L8XasfEHTNvd0cUI07LR9q5ADo7Gw==} + + '@myriaddreamin/typst.ts@0.7.0': + resolution: {integrity: sha512-JtO5Td/1QesH1IBKAZtbayFNK8u2sl3iz18Y67uYqBEdcXiu3z+wpZcDDKlmVJvAcCgSjHTnuk6ZLfkYclrGGQ==} + peerDependencies: + '@myriaddreamin/typst-ts-renderer': ^0.7.0 + '@myriaddreamin/typst-ts-web-compiler': ^0.7.0 + peerDependenciesMeta: + '@myriaddreamin/typst-ts-renderer': + optional: true + '@myriaddreamin/typst-ts-web-compiler': + optional: true + + '@napi-rs/canvas-android-arm64@0.1.100': + resolution: {integrity: sha512-hjhCKhntPv9+t4ckHymdx0phYNcVW+GKQR6Lzw2zE+pOVjOplSmtx9nNNknTjbEDLcuLZqA1y8ufKg1XfgftzQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/canvas-darwin-arm64@0.1.100': + resolution: {integrity: sha512-2PcswRaC7Ly645DGt88///zuFDhJxJYdKAs1uU3mfk1atYkXufgcgLfBpk6Tm12nCQBaNt1wpybuPZ4qOhTo8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/canvas-darwin-x64@0.1.100': + resolution: {integrity: sha512-ePNZtj7pNIva/siZMg+HmbeozkIjqUIYdoymH8HaA3qK7LfzFN4WMBM8G6HQ9ZC+H3+Dnn5pqtiXpgLykaPOhw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.100': + resolution: {integrity: sha512-d5cDB48oWFGU8/XPhUOFAlySgb/VAu7D+s8fi55K1Pcfg8aPplHWqMgibhVLU8ky7Pyg/fuiVLz4Nf3JrSTuUA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/canvas-linux-arm64-gnu@0.1.100': + resolution: {integrity: sha512-rDxgxRu69RvDlX/bh9o22DxLsGr8EqsNgotL9+RwQE1S0b0cqeatqsw6aW45mukm0B42DIAaAacKaYQ8cqS1nw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@napi-rs/canvas-linux-arm64-musl@0.1.100': + resolution: {integrity: sha512-K3mDW66N+xT2/V439u1alFANiBUjdEx2gLiNYnCmUsva5jZMxWTjafBYwTzYK+EMFMHrUoabuU+T1BIP5CgbYQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@napi-rs/canvas-linux-riscv64-gnu@0.1.100': + resolution: {integrity: sha512-mooqUBTIsccZpnoQC4NgrC1v6C1vof39etLNMnBwCY+p0gajWJvAHLGQ6g/gGyS5YrpDW+GefSN4+Cvcr08UWw==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@napi-rs/canvas-linux-x64-gnu@0.1.100': + resolution: {integrity: sha512-1eCvkDCazm7FFhsT7DfGOdSaHgZVK3bt/dSBl5EWHOWmnz+I7j8tPseJqqD81NF+MH21jKUK4wQSDjN0mdhnTg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@napi-rs/canvas-linux-x64-musl@0.1.100': + resolution: {integrity: sha512-20arT6lnI19S68qNlii73TSEDbECNgzMz2EpldC1V3mZFuRkeujXkcebRk0LRJe9SEUAooYiLokfMViY8IX7yA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@napi-rs/canvas-win32-arm64-msvc@0.1.100': + resolution: {integrity: sha512-DZFFT1wIAg37LJw37yhMRFfjATd3vTQzjZ1Yki8u2vhO6Hi5VE6BVaGQ1aaDu7xb4iMErz+9EOwjpS7xcxFeBw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/canvas-win32-x64-msvc@0.1.100': + resolution: {integrity: sha512-MyT1j3mHC2+Lu4pBi9mKyMJhtP6U7k7EldY7sj/uS5gJA65gTXt8MefJQXLJo5d/vZbuWmfxzkEUNc/urV3pHA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/canvas@0.1.100': + resolution: {integrity: sha512-xglYA6q3XO5P3BNJYxVZ1IV7DLVjp1Py6nwag88YntrS+3vKHyYcMqXVS4ZztJmwz2uGvz1FWhI/4LgbR5uQDA==} + engines: {node: '>= 10'} + '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: @@ -322,6 +607,9 @@ packages: cpu: [x64] os: [win32] + '@panzoom/panzoom@4.6.2': + resolution: {integrity: sha512-Zn3B5/hwa6eYIPRSKX0xf2clv8nviTX8AnAU5kU/EugiTDhG41ya2wlBqYrZJYCWQROr/5XkWObZhIkepi89qw==} + '@parcel/watcher-android-arm64@2.5.6': resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} @@ -410,6 +698,16 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} + '@pdf-lib/standard-fonts@1.0.0': + resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} + + '@pdf-lib/upng@1.0.1': + resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==} + + '@profoundlogic/hogan@3.0.4': + resolution: {integrity: sha512-pmNVGuooS30Mm7YbZd5T7E5zYVO6D5Ct91sn4T39mUvMUc3sCGridcnhAufL1/Bz2QzAtzEn0agNrdk3+5yWzw==} + hasBin: true + '@rolldown/binding-android-arm64@1.1.5': resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -602,18 +900,126 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 + '@tmcw/togeojson@7.1.2': + resolution: {integrity: sha512-QKnFs9DAuqqBVj4d6c69tV1Dj2TspSBTqffivoN0YoBCVdP/JY1+WaYCJbzU49RkoU5NOSOJ3jtFHCdEUVh21A==} + + '@tonejs/midi@2.0.28': + resolution: {integrity: sha512-RII6YpInPsOZ5t3Si/20QKpNqB1lZ2OCFJSOzJxz38YdY/3zqDr3uaml4JuCWkdixuPqP1/TBnXzhQ39csyoVg==} + '@tybys/wasm-util@0.10.3': resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.4': + resolution: {integrity: sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/jsesc@2.5.1': resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + '@v-c/async-validator@1.0.1': resolution: {integrity: sha512-2WXdbTso13119ZLiwUv1JkmdL0K4ll69id4oE3ft3LQX+YAHOoJtfx080u26lLtypgZS32PguoohgB0BVo39rg==} @@ -895,11 +1301,25 @@ packages: peerDependencies: vue: ^3.5.0 + '@xmldom/xmldom@0.9.10': + resolution: {integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==} + engines: {node: '>=14.6'} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + acorn@8.17.0: resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} engines: {node: '>=0.4.0'} hasBin: true + adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + + ag-psd@30.2.0: + resolution: {integrity: sha512-tSAWfNzLl5brFqKEer7egxASZ1a0LwHnReM/D5VVpvrgdwdsa8OVfCQpysK7tGaOuE2tPEqp3mAuH7aIvPhcig==} + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -907,6 +1327,9 @@ packages: antdv-next@1.4.2: resolution: {integrity: sha512-3hVPjxjuRN8gHQnmaZgPs5PYrwlkmX7pDDMdsrb1NUGdrF8qvUp4vpFb1B+eGkJRjfWKG1xxyyHw7jQsE8xprw==} + array-flatten@3.0.0: + resolution: {integrity: sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==} + ast-kit@2.2.0: resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} @@ -918,24 +1341,56 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + avsc@5.7.9: + resolution: {integrity: sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg==} + engines: {node: '>=0.11'} + axios@1.18.1: resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + billboard.js@3.18.0: + resolution: {integrity: sha512-aci69MLwOX0HfdmQHk+v/iA7L4R+wG53hW9VwhkYzMOyqemWLjscf229XsQRrTau9EJSVyOHnr/rpVukoqppXw==} + birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + but-unzip@0.1.10: + resolution: {integrity: sha512-hLfQ9WlUimmv/okzsRl6AYG3Ew5HNWhWgUslSR93FsDdeL0MAoQvmC/BJfs35lqEAO5t/QD7Y4vCFcPJtijt3A==} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} + codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + compute-scroll-into-view@3.1.1: resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} @@ -949,9 +1404,179 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.34.0: + resolution: {integrity: sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} + dayjs@1.11.21: resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} @@ -983,6 +1608,9 @@ packages: defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -991,10 +1619,42 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + diff2html@3.4.56: + resolution: {integrity: sha512-u9gfn+BlbHcyO7vItCIC4z49LJDUt31tODzOfAuJ5R1E7IdlRL6KjugcB9zOpejD+XiR+dDZbsnHSQ3g6A/u8A==} + engines: {node: '>=12'} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} + + dingbat-to-unicode@1.0.1: + resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} + + dompurify@3.4.12: + resolution: {integrity: sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg==} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + dwf-viewer@0.6.4: + resolution: {integrity: sha512-lDZ0gfQM3jGj/IiCEru3vIMh9kMH8duFes6VzoHZr+/wEQ15lJadRSngQpHoLy8mGYTX1TuQtSJ3Qklf9rKNLg==} + engines: {node: '>=18'} + peerDependencies: + three: '>=0.150.0' + peerDependenciesMeta: + three: + optional: true + + dxf-parser@1.1.2: + resolution: {integrity: sha512-GPTumUvRkounlIazLIyJMmTWt+nlg+ksS0Hdm8jWvejmZKBTz6gvHTam76wRm4PQMma5sgKLThblQyeIJcH79Q==} + + e-virt-table@1.4.11: + resolution: {integrity: sha512-wEEdyRnU3uZZkHABAHLnUCpc/GMHa3/MGy6EAzJn1mkT+c4Kmvi0K3g14MOEQ4m1pGIZ+n4r+tsIvPGRl5YfDw==} + + earcut@3.2.3: + resolution: {integrity: sha512-vnS4AVwp1KHAF13i1vp1/2D5evWy3k5u/iW/B81QVsUZtV8cv2tU0b2VNFlqvh4kYwrFMDdjPCfAmfyJW9y14Q==} + enhanced-resolve@5.21.6: resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==} engines: {node: '>=10.13.0'} @@ -1048,6 +1708,11 @@ packages: picomatch: optional: true + file-viewer-copy-assets@2.2.4: + resolution: {integrity: sha512-AjV5LePsmsRtthAa+766KeP3JwvlvEEWhb1Vk9f6V1iv6YULILKeRlXQy2fADEEpZUxKLiFe+sTsn9KETnO0IA==} + engines: {node: '>=18'} + hasBin: true + follow-redirects@1.16.0: resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} @@ -1077,6 +1742,9 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + gl-matrix@3.4.4: + resolution: {integrity: sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1084,6 +1752,9 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -1096,6 +1767,16 @@ packages: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} + heic2any@0.0.4: + resolution: {integrity: sha512-3lLnZiDELfabVH87htnRolZ2iehX9zwpRyGNz22GKXIu0fznlblf0/ftppXKNqS26dqFSeqfIBhAmAj/uSp0cA==} + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + hls.js@1.6.16: + resolution: {integrity: sha512-VSIRpLfRwlAAdGL4wiTucx2ScRipo0ed1FBatWkyt832jC4CReKstga6yIhYVwGu9LOBjuX9wzmRMeQdBJtzEA==} + hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} @@ -1103,6 +1784,9 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + hyparquet@1.26.2: + resolution: {integrity: sha512-6qjyK7R2tZ4vnYP1J8NpcCeDPK1UIYk3xh5XgtQUnUM1iwkYbvI6Mz3xtmpMd6AfCCeoUoJVbEq29k5GReZRWA==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -1111,9 +1795,28 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + immutable@5.1.9: resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1126,6 +1829,9 @@ packages: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true @@ -1138,16 +1844,44 @@ packages: engines: {node: '>=6'} hasBin: true + json-stringify-pretty-compact@4.0.0: + resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} + hasBin: true + + kdbush@4.1.0: + resolution: {integrity: sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==} + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + less@4.7.0: resolution: {integrity: sha512-i7dAlT3+boO0mMh1G4cex0vz1lLAScmBbikm1VEDNv+cy0ore1CUo2UtX8m3N9QLE5WYDr4ISbiCRzHNGyFkrA==} engines: {node: '>=18'} hasBin: true + libarchive.js@2.0.2: + resolution: {integrity: sha512-JHb+P4suNSjvz/dMdRgOe7JAxluXJeialzSFkKHU5y0ZK+m175drPOaIYW6I9WXSDcPcQ13eCUgMnpgY0ggmoQ==} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -1226,9 +1960,16 @@ packages: resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} engines: {node: '>=14'} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + magic-string-ast@1.0.3: resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} engines: {node: '>=20.19.0'} @@ -1240,10 +1981,33 @@ packages: resolution: {integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==} engines: {node: '>=18'} + maplibre-gl@5.24.0: + resolution: {integrity: sha512-ALyFxgtd5R+65UqZ/++lOqwWcC0SNho9c27fYSyLmG7AfnAul2o46F05aDJGPbFU57wos9dgcIySHs0Xe6ia3A==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} + + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + + marked@18.0.7: + resolution: {integrity: sha512-iDVQ5ldaiKXn6b2JroX5kgRfmwgqolW7NpaEzTl1k/2Zh1njIEN9yniyLV/mOvWwtsE8OGgkjsCYvijuPk1dtA==} + engines: {node: '>= 20'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mermaid@11.16.0: + resolution: {integrity: sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA==} + + mgrs@1.0.0: + resolution: {integrity: sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==} + + midi-file@1.2.4: + resolution: {integrity: sha512-B5SnBC6i2bwJIXTY9MElIydJwAmnKx+r5eJ1jknTLetzLflEl0GWveuBB6ACrQpecSRkOB6fhTx1PwXk2BVxnA==} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -1257,6 +2021,9 @@ packages: engines: {node: '>=4'} hasBin: true + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} @@ -1269,6 +2036,9 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + nanoid@3.3.16: resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1287,6 +2057,13 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-readable-to-web-readable-stream@0.4.2: + resolution: {integrity: sha512-/cMZNI34v//jUTrI+UIo4ieHAB5EZRY/+7OmXZgBxaWBMcW2tGdceIw06RFxWxrKZ5Jp3sI2i5TsRo+CBhtVLQ==} + + nopt@1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + nostics@1.1.4: resolution: {integrity: sha512-U4FApICSLCQ0dYiN59pxUCEZC053palQXi57yLaNdMaL6TBY4C4q3qZrJKUGcor2dGv8EhEwt8y5KvU2bo2kFg==} @@ -1297,6 +2074,9 @@ packages: resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} engines: {node: '>=12.20.0'} + occt-import-js@0.0.23: + resolution: {integrity: sha512-RFfYQXYFX5C1mB1Aywm0ShcUKzXOr/VzTnlzhBSDJOR6YCAPt1HYCzeXWg1vwwjn/cUxwqRNhhtf1dlewoZYCQ==} + oxfmt@0.58.0: resolution: {integrity: sha512-8feG/7NVEHDVwc1OUpP6Pks+TnaDFUw2jLLFIMi5bcmmwxAX2wBQvjSzj62RRTYBf2Op1Wt8xbkmagmPTR5ETg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1310,13 +2090,46 @@ packages: vite-plus: optional: true + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + pako@2.2.0: + resolution: {integrity: sha512-zJq6RP/5q+TO2OpFV3FHzlPnFjmkb7Nc99a5SNjJE+uu/PkpChs+NIZSSzbBoD+6kjiISXjfYdwj1ZRQ81dz/w==} + parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} + parsedbf@2.0.0: + resolution: {integrity: sha512-WNjKn/cwgGBkXqQLif+2VMEahcRHkBRU0/RfBWZ7Vj7snRNNW63yW1mVuuHRDyXTRxuGCzAHHBcr/Fn+U/bXjQ==} + + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pbf@4.0.2: + resolution: {integrity: sha512-J0ajxARhZfpUEebxYs1vhMGMuLSXtBe1e+fFPDrf2uA2hgo+UshKfNUWOz92HJNz6/NFEXseQPddnHkTreWRqg==} + hasBin: true + + pbf@5.1.2: + resolution: {integrity: sha512-mnvGdvOrIvJOBGUEdGkrVXjN8E/VkIJCkf2eS1DH2yv82ORUlLttmDt0rWY38yYZmVwciZwBUvHM20qxBZf40w==} + hasBin: true + + pdf-lib@1.17.1: + resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==} + + pdfjs-dist@5.4.624: + resolution: {integrity: sha512-sm6TxKTtWv1Oh6n3C6J6a8odejb5uO4A4zo/2dgkHuC0iu8ZMAXOezEODkVaoVp8nX1Xzr+0WxFJJmUr45hQzg==} + engines: {node: '>=20.16.0 || >=22.3.0'} + perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} @@ -1357,13 +2170,42 @@ packages: pkg-types@2.3.1: resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + plantuml-encoder@1.4.0: + resolution: {integrity: sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==} + + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postal-mime@2.7.5: + resolution: {integrity: sha512-GNEXKvWFQnbgO5NlrGzVa0FmWzBZ24PersAWErttSg1Hjpf0ATxTwS5DOMGaOpTG6bUh5cTr7xi0jAD942wCJA==} + postcss@8.5.19: resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} engines: {node: ^10 || ^12 || >=14} + potpack@2.1.0: + resolution: {integrity: sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==} + probe-image-size@7.3.0: resolution: {integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==} + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + proj4@2.21.0: + resolution: {integrity: sha512-33HfDftqw8kY+Cl1dcL16SJuqTSzYxmz4re7Nmhk+fs1/N1fFrAkkF579msQTR/4fLeJVSNne8/gpoCz0fk1uw==} + peerDependencies: + geotiff: '*' + peerDependenciesMeta: + geotiff: + optional: true + + protocol-buffers-schema@3.6.1: + resolution: {integrity: sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==} + proxy-from-env@2.1.0: resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} engines: {node: '>=10'} @@ -1374,6 +2216,12 @@ packages: quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + quickselect@3.0.0: + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readdirp@5.0.0: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} @@ -1381,11 +2229,29 @@ packages: resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + rolldown@1.1.5: resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + + rtf.js@3.0.9: + resolution: {integrity: sha512-I1GpDat4i548WzmeZXv27f/743984fvEeeBS8BC01/Sop17pMlUl3M7DYcdcB3PUvOZTrFIMxGZx8qw7cSMAKQ==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -1404,6 +2270,12 @@ packages: scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + shpjs@6.2.0: + resolution: {integrity: sha512-8cR/RKYHQepmVyBMtzZQ+1bnSbWrtLXS6aoEJmpUlOSHtSUddterebVxYmIWq2g9kOEX9jm2kjHiikyPX7cNQA==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1412,15 +2284,26 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + sql.js@1.14.1: + resolution: {integrity: sha512-gcj8zBWU5cFsi9WUP+4bFNXAyF1iRpA3LLyS/DP5xlrNzGmPIizUeBggKa8DbDwdqaKwUcTEnChtd2grWo/x/A==} + stk-table-vue@1.0.0: resolution: {integrity: sha512-K6YvwicGfQPeKImIc4MBMD3Hw2E45vrxmKX103fPCdgeT8PEq1Da643IeMWW9dFz1VD9XV/hMUJXow/EZYW1sw==} stream-parser@0.3.1: resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + strip-literal@3.1.0: resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + styled-exceljs@0.21.1: + resolution: {integrity: sha512-9Z6PrWVaSDoy4UEnmX8rxCDYyCN1rn3q6bePsYfoO5vA7ROUE6NP4yC0pa4C3lwC063FQti0BwBV2J+ua7GYRA==} + engines: {node: '>=0.8'} + hasBin: true + stylis@4.4.0: resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} @@ -1431,10 +2314,20 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} + three@0.184.0: + resolution: {integrity: sha512-wtTRjG92pM5eUg/KuUnHsqSAlPM296brTOcLgMRqEeylYTh/CdtvKUvCyyCQTzFuStieWxvZb8mVTMvdPyUpxg==} + throttle-debounce@5.0.2: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} @@ -1443,6 +2336,16 @@ packages: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} engines: {node: ^20.0.0 || >=22.0.0} + tinyqueue@3.0.0: + resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} + + ts-dedent@2.3.0: + resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} + engines: {node: '>=6.10'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1516,6 +2419,16 @@ packages: webpack: optional: true + utif@3.1.0: + resolution: {integrity: sha512-WEo4D/xOvFW53K5f5QTaTbbiORcm2/pCL9P6qmJnup+17eYfKaEhDeX9PeQkuyEoIxlbGklDuGl8xwuXYMrrXQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@14.0.1: + resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} + hasBin: true + vite@8.1.4: resolution: {integrity: sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1588,6 +2501,9 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + wkt-parser@1.5.6: + resolution: {integrity: sha512-cqHU3lzGt/gt2OqIORP0uVy5yeOX43WABmgFkmJsmcqH3HhQo9PiJG6ftytwGKmpQUbegeX7+pQc2BuNCRfcrw==} + yaml@2.9.0: resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} @@ -1635,6 +2551,11 @@ snapshots: dependencies: tailwindcss: 4.3.2 + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.8.0 + tinyexec: 1.2.4 + '@babel/generator@8.0.0': dependencies: '@babel/parser': 8.0.4 @@ -1672,6 +2593,10 @@ snapshots: '@babel/helper-string-parser': 8.0.0 '@babel/helper-validator-identifier': 8.0.4 + '@braintree/sanitize-url@7.1.2': {} + + '@chevrotain/types@11.1.2': {} + '@emnapi/core@1.11.1': dependencies: '@emnapi/wasi-threads': 1.2.2 @@ -1692,6 +2617,244 @@ snapshots: '@emotion/unitless@0.7.5': {} + '@file-viewer/core@2.2.4': {} + + '@file-viewer/doc@2.2.4': {} + + '@file-viewer/docx@0.3.26': + dependencies: + jszip: 3.10.1 + + '@file-viewer/eda-layout@2.2.4': {} + + '@file-viewer/eda-orcad@2.2.4': {} + + '@file-viewer/geometry-engine@2.2.4': + dependencies: + occt-import-js: 0.0.23 + + '@file-viewer/ppt@0.3.2': {} + + '@file-viewer/pptx@2.2.4': + dependencies: + billboard.js: 3.18.0 + d3-format: 3.1.2 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + tinycolor2: 1.6.0 + utif: 3.1.0 + + '@file-viewer/preset-all@2.2.4(three@0.184.0)': + dependencies: + '@file-viewer/core': 2.2.4 + '@file-viewer/renderer-3d': 2.2.4 + '@file-viewer/renderer-archive': 2.2.4 + '@file-viewer/renderer-cad': 2.2.4(three@0.184.0) + '@file-viewer/renderer-data': 2.2.4 + '@file-viewer/renderer-drawing': 2.2.4 + '@file-viewer/renderer-eda': 2.2.4 + '@file-viewer/renderer-email': 2.2.4 + '@file-viewer/renderer-epub': 2.2.4 + '@file-viewer/renderer-geo': 2.2.4 + '@file-viewer/renderer-image': 2.2.4 + '@file-viewer/renderer-media': 2.2.4 + '@file-viewer/renderer-mindmap': 2.2.4 + '@file-viewer/renderer-ofd': 2.2.4 + '@file-viewer/renderer-pdf': 2.2.4 + '@file-viewer/renderer-presentation': 2.2.4 + '@file-viewer/renderer-spreadsheet': 2.2.4 + '@file-viewer/renderer-text': 2.2.4 + '@file-viewer/renderer-typst': 2.2.4 + '@file-viewer/renderer-word': 2.2.4 + transitivePeerDependencies: + - geotiff + - three + + '@file-viewer/renderer-3d@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@file-viewer/geometry-engine': 2.2.4 + three: 0.184.0 + + '@file-viewer/renderer-archive@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + jszip: 3.10.1 + libarchive.js: 2.0.2 + + '@file-viewer/renderer-cad@2.2.4(three@0.184.0)': + dependencies: + '@file-viewer/core': 2.2.4 + '@flyfish-dev/cad-viewer': 0.8.0(three@0.184.0) + transitivePeerDependencies: + - three + + '@file-viewer/renderer-data@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + ag-psd: 30.2.0 + avsc: 5.7.9 + hyparquet: 1.26.2 + sql.js: 1.14.1 + + '@file-viewer/renderer-drawing@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@panzoom/panzoom': 4.6.2 + mermaid: 11.16.0 + plantuml-encoder: 1.4.0 + roughjs: 4.6.6 + + '@file-viewer/renderer-eda@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@file-viewer/eda-layout': 2.2.4 + '@file-viewer/eda-orcad': 2.2.4 + cfb: 1.2.2 + + '@file-viewer/renderer-email@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@kenjiuno/msgreader': 1.28.0 + postal-mime: 2.7.5 + + '@file-viewer/renderer-epub@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + pako: 2.2.0 + + '@file-viewer/renderer-geo@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@tmcw/togeojson': 7.1.2 + maplibre-gl: 5.24.0 + proj4: 2.21.0 + shpjs: 6.2.0 + transitivePeerDependencies: + - geotiff + + '@file-viewer/renderer-image@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + heic2any: 0.0.4 + + '@file-viewer/renderer-media@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@tonejs/midi': 2.0.28 + hls.js: 1.6.16 + + '@file-viewer/renderer-mindmap@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@ljheee/xmind-parser': 1.1.3 + '@panzoom/panzoom': 4.6.2 + jszip: 3.10.1 + + '@file-viewer/renderer-ofd@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + jszip: 3.10.1 + + '@file-viewer/renderer-pdf@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@fontsource-variable/noto-sans-sc': 5.2.10 + pdf-lib: 1.17.1 + pdfjs-dist: 5.4.624 + + '@file-viewer/renderer-presentation@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@file-viewer/ppt': 0.3.2 + '@file-viewer/pptx': 2.2.4 + + '@file-viewer/renderer-spreadsheet@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@xmldom/xmldom': 0.9.10 + e-virt-table: 1.4.11 + jszip: 3.10.1 + styled-exceljs: 0.21.1 + tinycolor2: 1.6.0 + + '@file-viewer/renderer-text@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + diff2html: 3.4.56 + highlight.js: 11.11.1 + marked: 18.0.7 + mermaid: 11.16.0 + pako: 2.2.0 + + '@file-viewer/renderer-typst@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@myriaddreamin/typst-ts-renderer': 0.7.0 + '@myriaddreamin/typst-ts-web-compiler': 0.7.0 + '@myriaddreamin/typst.ts': 0.7.0(@myriaddreamin/typst-ts-renderer@0.7.0)(@myriaddreamin/typst-ts-web-compiler@0.7.0) + + '@file-viewer/renderer-word@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@file-viewer/doc': 2.2.4 + '@file-viewer/docx': 0.3.26 + jszip: 3.10.1 + rtf.js: 3.0.9 + + '@file-viewer/vite-plugin@2.2.4(vite@8.1.4(jiti@2.7.0)(less@4.7.0)(sass@1.101.0)(yaml@2.9.0))': + dependencies: + vite: 8.1.4(jiti@2.7.0)(less@4.7.0)(sass@1.101.0)(yaml@2.9.0) + + '@file-viewer/vue3-full@2.2.4(three@0.184.0)(vue@3.5.39)': + dependencies: + '@file-viewer/preset-all': 2.2.4(three@0.184.0) + '@file-viewer/vue3': 2.2.4 + file-viewer-copy-assets: 2.2.4 + vue: 3.5.39 + transitivePeerDependencies: + - geotiff + - three + - typescript + + '@file-viewer/vue3@2.2.4': + dependencies: + '@file-viewer/core': 2.2.4 + '@lucide/vue': 1.24.0(vue@3.5.39) + vue: 3.5.39 + transitivePeerDependencies: + - typescript + + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/utils@0.2.12': {} + + '@flyfish-dev/cad-viewer@0.8.0(three@0.184.0)': + dependencies: + '@mlightcad/libredwg-web': 0.7.9 + '@mlightcad/shx-parser': 1.4.5 + dwf-viewer: 0.6.4(three@0.184.0) + dxf-parser: 1.1.2 + transitivePeerDependencies: + - three + + '@fontsource-variable/noto-sans-sc@5.2.10': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.4': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + import-meta-resolve: 4.2.0 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -1711,10 +2874,129 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@kenjiuno/decompressrtf@0.1.4': {} + + '@kenjiuno/msgreader@1.28.0': + dependencies: + '@kenjiuno/decompressrtf': 0.1.4 + iconv-lite: 0.6.3 + + '@ljheee/xmind-parser@1.1.3': + dependencies: + '@xmldom/xmldom': 0.9.10 + '@lucide/vue@1.24.0(vue@3.5.39)': dependencies: vue: 3.5.39 + '@mapbox/jsonlint-lines-primitives@2.0.3': {} + + '@mapbox/point-geometry@1.1.0': {} + + '@mapbox/tiny-sdf@2.2.0': {} + + '@mapbox/unitbezier@0.0.1': {} + + '@mapbox/unitbezier@1.0.0': {} + + '@mapbox/vector-tile@2.0.5': + dependencies: + '@mapbox/point-geometry': 1.1.0 + '@types/geojson': 7946.0.16 + pbf: 4.0.2 + + '@mapbox/whoots-js@3.1.0': {} + + '@maplibre/geojson-vt@6.1.1': + dependencies: + kdbush: 4.1.0 + + '@maplibre/maplibre-gl-style-spec@24.10.0': + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.3 + '@mapbox/unitbezier': 1.0.0 + json-stringify-pretty-compact: 4.0.0 + minimist: 1.2.8 + quickselect: 3.0.0 + tinyqueue: 3.0.0 + + '@maplibre/mlt@1.1.12': + dependencies: + '@mapbox/point-geometry': 1.1.0 + + '@maplibre/vt-pbf@4.3.2': + dependencies: + '@mapbox/point-geometry': 1.1.0 + '@types/geojson': 7946.0.16 + pbf: 5.1.2 + + '@mermaid-js/parser@1.2.0': + dependencies: + '@chevrotain/types': 11.1.2 + + '@mlightcad/libredwg-web@0.7.9': {} + + '@mlightcad/shx-parser@1.4.5': {} + + '@myriaddreamin/typst-ts-renderer@0.7.0': {} + + '@myriaddreamin/typst-ts-web-compiler@0.7.0': {} + + '@myriaddreamin/typst.ts@0.7.0(@myriaddreamin/typst-ts-renderer@0.7.0)(@myriaddreamin/typst-ts-web-compiler@0.7.0)': + dependencies: + idb: 7.1.1 + optionalDependencies: + '@myriaddreamin/typst-ts-renderer': 0.7.0 + '@myriaddreamin/typst-ts-web-compiler': 0.7.0 + + '@napi-rs/canvas-android-arm64@0.1.100': + optional: true + + '@napi-rs/canvas-darwin-arm64@0.1.100': + optional: true + + '@napi-rs/canvas-darwin-x64@0.1.100': + optional: true + + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.100': + optional: true + + '@napi-rs/canvas-linux-arm64-gnu@0.1.100': + optional: true + + '@napi-rs/canvas-linux-arm64-musl@0.1.100': + optional: true + + '@napi-rs/canvas-linux-riscv64-gnu@0.1.100': + optional: true + + '@napi-rs/canvas-linux-x64-gnu@0.1.100': + optional: true + + '@napi-rs/canvas-linux-x64-musl@0.1.100': + optional: true + + '@napi-rs/canvas-win32-arm64-msvc@0.1.100': + optional: true + + '@napi-rs/canvas-win32-x64-msvc@0.1.100': + optional: true + + '@napi-rs/canvas@0.1.100': + optionalDependencies: + '@napi-rs/canvas-android-arm64': 0.1.100 + '@napi-rs/canvas-darwin-arm64': 0.1.100 + '@napi-rs/canvas-darwin-x64': 0.1.100 + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.100 + '@napi-rs/canvas-linux-arm64-gnu': 0.1.100 + '@napi-rs/canvas-linux-arm64-musl': 0.1.100 + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.100 + '@napi-rs/canvas-linux-x64-gnu': 0.1.100 + '@napi-rs/canvas-linux-x64-musl': 0.1.100 + '@napi-rs/canvas-win32-arm64-msvc': 0.1.100 + '@napi-rs/canvas-win32-x64-msvc': 0.1.100 + optional: true + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 @@ -1781,6 +3063,8 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.58.0': optional: true + '@panzoom/panzoom@4.6.2': {} + '@parcel/watcher-android-arm64@2.5.6': optional: true @@ -1842,6 +3126,18 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.6 optional: true + '@pdf-lib/standard-fonts@1.0.0': + dependencies: + pako: 1.0.11 + + '@pdf-lib/upng@1.0.1': + dependencies: + pako: 1.0.11 + + '@profoundlogic/hogan@3.0.4': + dependencies: + nopt: 1.0.10 + '@rolldown/binding-android-arm64@1.1.5': optional: true @@ -1961,17 +3257,151 @@ snapshots: tailwindcss: 4.3.2 vite: 8.1.4(jiti@2.7.0)(less@4.7.0)(sass@1.101.0)(yaml@2.9.0) + '@tmcw/togeojson@7.1.2': {} + + '@tonejs/midi@2.0.28': + dependencies: + array-flatten: 3.0.0 + midi-file: 1.2.4 + '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 optional: true + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.4': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + '@types/estree@1.0.9': {} + '@types/geojson@7946.0.16': {} + '@types/jsesc@2.5.1': {} + '@types/trusted-types@2.0.7': + optional: true + '@types/web-bluetooth@0.0.21': {} + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + '@v-c/async-validator@1.0.1': {} '@v-c/cascader@1.1.2(vue@3.5.39)': @@ -2310,8 +3740,19 @@ snapshots: dependencies: vue: 3.5.39 + '@xmldom/xmldom@0.9.10': {} + + abbrev@1.1.1: {} + acorn@8.17.0: {} + adler-32@1.3.1: {} + + ag-psd@30.2.0: + dependencies: + base64-js: 1.5.1 + pako: 2.1.0 + agent-base@6.0.2: dependencies: debug: 4.4.3 @@ -2373,6 +3814,8 @@ snapshots: - moment - vue + array-flatten@3.0.0: {} + ast-kit@2.2.0: dependencies: '@babel/parser': 7.29.7 @@ -2386,6 +3829,8 @@ snapshots: asynckit@0.4.0: {} + avsc@5.7.9: {} + axios@1.18.1: dependencies: follow-redirects: 1.16.0 @@ -2396,21 +3841,56 @@ snapshots: - debug - supports-color + base64-js@1.5.1: {} + + billboard.js@3.18.0: + dependencies: + '@types/d3-selection': 3.0.11 + '@types/d3-transition': 3.0.9 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time-format: 4.1.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + birpc@2.9.0: {} + but-unzip@0.1.10: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 + cfb@1.2.2: + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + chokidar@5.0.0: dependencies: readdirp: 5.0.0 + codepage@1.15.0: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + comlink@4.4.2: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + compute-scroll-into-view@3.1.1: {} confbox@0.1.8: {} @@ -2421,8 +3901,204 @@ snapshots: dependencies: is-what: 4.1.16 + core-util-is@1.0.3: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + crc-32@1.2.2: {} + csstype@3.2.3: {} + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.0): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.34.0 + + cytoscape-fcose@2.2.0(cytoscape@3.34.0): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.34.0 + + cytoscape@3.34.0: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.1.0 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.2: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.18.1 + dayjs@1.11.21: {} debug@2.6.9: @@ -2441,16 +4117,49 @@ snapshots: defu@6.1.7: {} + delaunator@5.1.0: + dependencies: + robust-predicates: 3.0.3 + delayed-stream@1.0.0: {} detect-libc@2.1.2: {} + diff2html@3.4.56: + dependencies: + '@profoundlogic/hogan': 3.0.4 + diff: 8.0.4 + optionalDependencies: + highlight.js: 11.11.1 + + diff@8.0.4: {} + + dingbat-to-unicode@1.0.1: {} + + dompurify@3.4.12: + optionalDependencies: + '@types/trusted-types': 2.0.7 + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 + dwf-viewer@0.6.4(three@0.184.0): + optionalDependencies: + three: 0.184.0 + + dxf-parser@1.1.2: + dependencies: + loglevel: 1.9.2 + + e-virt-table@1.4.11: + dependencies: + '@floating-ui/dom': 1.8.0 + + earcut@3.2.3: {} + enhanced-resolve@5.21.6: dependencies: graceful-fs: 4.2.11 @@ -2494,6 +4203,8 @@ snapshots: optionalDependencies: picomatch: 4.0.5 + file-viewer-copy-assets@2.2.4: {} + follow-redirects@1.16.0: {} form-data@4.0.6: @@ -2527,10 +4238,14 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.2 + gl-matrix@3.4.4: {} + gopd@1.2.0: {} graceful-fs@4.2.11: {} + hachure-fill@0.5.2: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -2541,6 +4256,12 @@ snapshots: dependencies: function-bind: 1.1.2 + heic2any@0.0.4: {} + + highlight.js@11.11.1: {} + + hls.js@1.6.16: {} + hookable@5.5.3: {} https-proxy-agent@5.0.1: @@ -2550,6 +4271,8 @@ snapshots: transitivePeerDependencies: - supports-color + hyparquet@1.26.2: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -2558,10 +4281,21 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - optional: true + + idb@7.1.1: {} + + immediate@3.0.6: {} immutable@5.1.9: {} + import-meta-resolve@4.2.0: {} + + inherits@2.0.4: {} + + internmap@1.0.1: {} + + internmap@2.0.3: {} + is-extglob@2.1.1: optional: true @@ -2572,14 +4306,37 @@ snapshots: is-what@4.1.16: {} + isarray@1.0.0: {} + jiti@2.7.0: {} js-tokens@9.0.1: {} jsesc@3.1.0: {} + json-stringify-pretty-compact@4.0.0: {} + json5@2.2.3: {} + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + katex@0.16.47: + dependencies: + commander: 8.3.0 + + kdbush@4.1.0: {} + + khroma@2.1.0: {} + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + less@4.7.0: dependencies: copy-anything: 3.0.5 @@ -2595,6 +4352,14 @@ snapshots: transitivePeerDependencies: - supports-color + libarchive.js@2.0.2: + dependencies: + comlink: 4.4.2 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + lightningcss-android-arm64@1.32.0: optional: true @@ -2650,9 +4415,13 @@ snapshots: pkg-types: 2.3.1 quansync: 0.2.11 + lodash-es@4.18.1: {} + lodash.merge@4.6.2: optional: true + loglevel@1.9.2: {} + magic-string-ast@1.0.3: dependencies: magic-string: 0.30.21 @@ -2664,8 +4433,62 @@ snapshots: make-dir@5.1.0: optional: true + maplibre-gl@5.24.0: + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.3 + '@mapbox/point-geometry': 1.1.0 + '@mapbox/tiny-sdf': 2.2.0 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 2.0.5 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/geojson-vt': 6.1.1 + '@maplibre/maplibre-gl-style-spec': 24.10.0 + '@maplibre/mlt': 1.1.12 + '@maplibre/vt-pbf': 4.3.2 + '@types/geojson': 7946.0.16 + earcut: 3.2.3 + gl-matrix: 3.4.4 + kdbush: 4.1.0 + murmurhash-js: 1.0.0 + pbf: 4.0.2 + potpack: 2.1.0 + quickselect: 3.0.0 + tinyqueue: 3.0.0 + + marked@16.4.2: {} + + marked@18.0.7: {} + math-intrinsics@1.1.0: {} + mermaid@11.16.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.4 + '@mermaid-js/parser': 1.2.0 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.34.0 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.0) + cytoscape-fcose: 2.2.0(cytoscape@3.34.0) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.21 + dompurify: 3.4.12 + es-toolkit: 1.49.0 + katex: 0.16.47 + khroma: 2.1.0 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.4.0 + ts-dedent: 2.3.0 + uuid: 14.0.1 + + mgrs@1.0.0: {} + + midi-file@1.2.4: {} + mime-db@1.52.0: {} mime-types@2.1.35: @@ -2675,6 +4498,8 @@ snapshots: mime@1.6.0: optional: true + minimist@1.2.8: {} + mlly@1.8.2: dependencies: acorn: 8.17.0 @@ -2689,6 +4514,8 @@ snapshots: muggle-string@0.4.1: {} + murmurhash-js@1.0.0: {} + nanoid@3.3.16: {} needle@2.9.1: @@ -2709,12 +4536,21 @@ snapshots: node-addon-api@7.1.1: optional: true + node-readable-to-web-readable-stream@0.4.2: + optional: true + + nopt@1.0.10: + dependencies: + abbrev: 1.1.1 + nostics@1.1.4: {} nprogress@0.2.0: {} obug@2.1.3: {} + occt-import-js@0.0.23: {} + oxfmt@0.58.0: dependencies: tinypool: 2.1.0 @@ -2739,10 +4575,42 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.58.0 '@oxfmt/binding-win32-x64-msvc': 0.58.0 + package-manager-detector@1.8.0: {} + + pako@1.0.11: {} + + pako@2.1.0: {} + + pako@2.2.0: {} + parse-node-version@1.0.1: {} + parsedbf@2.0.0: {} + + path-data-parser@0.1.0: {} + pathe@2.0.3: {} + pbf@4.0.2: + dependencies: + resolve-protobuf-schema: 2.1.0 + + pbf@5.1.2: + dependencies: + resolve-protobuf-schema: 2.1.0 + + pdf-lib@1.17.1: + dependencies: + '@pdf-lib/standard-fonts': 1.0.0 + '@pdf-lib/upng': 1.0.1 + pako: 1.0.11 + tslib: 1.14.1 + + pdfjs-dist@5.4.624: + optionalDependencies: + '@napi-rs/canvas': 0.1.100 + node-readable-to-web-readable-stream: 0.4.2 + perfect-debounce@2.1.0: {} picocolors@1.1.1: {} @@ -2773,12 +4641,25 @@ snapshots: exsolve: 1.1.0 pathe: 2.0.3 + plantuml-encoder@1.4.0: {} + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postal-mime@2.7.5: {} + postcss@8.5.19: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 source-map-js: 1.2.1 + potpack@2.1.0: {} + probe-image-size@7.3.0: dependencies: lodash.merge: 4.6.2 @@ -2788,6 +4669,15 @@ snapshots: - supports-color optional: true + process-nextick-args@2.0.1: {} + + proj4@2.21.0: + dependencies: + mgrs: 1.0.0 + wkt-parser: 1.5.6 + + protocol-buffers-schema@3.6.1: {} + proxy-from-env@2.1.0: {} prr@1.0.1: @@ -2795,10 +4685,28 @@ snapshots: quansync@0.2.11: {} + quickselect@3.0.0: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + readdirp@5.0.0: {} resize-observer-polyfill@1.5.1: {} + resolve-protobuf-schema@2.1.0: + dependencies: + protocol-buffers-schema: 3.6.1 + + robust-predicates@3.0.3: {} + rolldown@1.1.5: dependencies: '@oxc-project/types': 0.139.0 @@ -2820,8 +4728,22 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.5 '@rolldown/binding-win32-x64-msvc': 1.1.5 - safer-buffer@2.1.2: - optional: true + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + rtf.js@3.0.9: + dependencies: + codepage: 1.15.0 + + rw@1.3.3: {} + + safe-buffer@5.1.2: {} + + safer-buffer@2.1.2: {} sass@1.101.0: dependencies: @@ -2840,11 +4762,23 @@ snapshots: scule@1.3.0: {} + setimmediate@1.0.5: {} + + shpjs@6.2.0: + dependencies: + but-unzip: 0.1.10 + parsedbf: 2.0.0 + proj4: 2.21.0 + transitivePeerDependencies: + - geotiff + source-map-js@1.2.1: {} source-map@0.6.1: optional: true + sql.js@1.14.1: {} + stk-table-vue@1.0.0: {} stream-parser@0.3.1: @@ -2854,18 +4788,30 @@ snapshots: - supports-color optional: true + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + strip-literal@3.1.0: dependencies: js-tokens: 9.0.1 + styled-exceljs@0.21.1: {} + stylis@4.4.0: {} tailwindcss@4.3.2: {} tapable@2.3.3: {} + three@0.184.0: {} + throttle-debounce@5.0.2: {} + tinycolor2@1.6.0: {} + + tinyexec@1.2.4: {} + tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.5) @@ -2873,6 +4819,12 @@ snapshots: tinypool@2.1.0: {} + tinyqueue@3.0.0: {} + + ts-dedent@2.3.0: {} + + tslib@1.14.1: {} + tslib@2.8.1: optional: true @@ -2950,6 +4902,14 @@ snapshots: rolldown: 1.1.5 vite: 8.1.4(jiti@2.7.0)(less@4.7.0)(sass@1.101.0)(yaml@2.9.0) + utif@3.1.0: + dependencies: + pako: 1.0.11 + + util-deprecate@1.0.2: {} + + uuid@14.0.1: {} + vite@8.1.4(jiti@2.7.0)(less@4.7.0)(sass@1.101.0)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 @@ -3009,4 +4969,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} + wkt-parser@1.5.6: {} + yaml@2.9.0: {} diff --git a/code/fms/fms-vue/src/components/FmsSelect.vue b/code/fms/fms-vue/src/components/FmsSelect.vue index eaae9ad5..612222a3 100644 --- a/code/fms/fms-vue/src/components/FmsSelect.vue +++ b/code/fms/fms-vue/src/components/FmsSelect.vue @@ -1,5 +1,5 @@ - - diff --git a/code/fms/fms-vue/src/views/dashboard/index.vue b/code/fms/fms-vue/src/views/dashboard/index.vue index e104d5af..403982b6 100644 --- a/code/fms/fms-vue/src/views/dashboard/index.vue +++ b/code/fms/fms-vue/src/views/dashboard/index.vue @@ -1,8 +1,10 @@ @@ -187,9 +221,31 @@ function rowClassName(row) { 保存 取消 重新生成 + 文件预览 + + + FmsSelect 远程选择 + + + + 当前值:{{ selectedLocale || "-" }} + 显示文本:{{ selectedLocaleLabel || "-" }} + 记录编码:{{ selectedLocaleRecord?.b_code || "-" }} + + + + + + + + + 选择本地文件 + + + 预览 URL + + + + 请选择本地文件或输入文件 URL 进行预览 + + + 支持图片 / PDF / Office / Markdown / 文本 / 音视频等;PDF、Office 等格式由浏览器端 WASM 渲染,无需服务端转换。 + + + - diff --git a/code/fms/fms-vue/src/views/module-management/index.vue b/code/fms/fms-vue/src/views/module-management/index.vue index 3e1a79c1..f7dc58b7 100644 --- a/code/fms/fms-vue/src/views/module-management/index.vue +++ b/code/fms/fms-vue/src/views/module-management/index.vue @@ -1,5 +1,5 @@ - - - - - - - - - - - - - - 保存 - - 同步字段 - - - - - 启用 - onSetField('b_canuse', v ? 1 : 0)" - /> - - 显示菜单 - onSetField('b_canmenu', v ? 1 : 0)" - /> - - - 自动编码 - - - + + + + - - - - - onUpdate('module', v)" - @i18n-saved="onI18nSaved" - /> - - onUpdate('listConfig', v)" - @groups-saved="onGroupsSaved" - @sync-edit="(v) => onUpdate('editConfig', v)" - @sync-query="(v) => onUpdate('queryConfig', v)" - /> - onUpdate('editConfig', v)" - @groups-saved="onGroupsSaved" - @sync-list="(v) => onUpdate('listConfig', v)" - @sync-query="(v) => onUpdate('queryConfig', v)" - /> - onUpdate('queryConfig', v)" - /> - - onUpdate('powers', v)" - @i18n-saved="onI18nSaved" - /> - - - - - + + + + + + + + + 保存 + + 同步字段 + + + + + 启用 + onSetField('b_canuse', v ? 1 : 0)" + /> + + 显示菜单 + onSetField('b_canmenu', v ? 1 : 0)" + /> + + + 自动编码 + + + + + - - - - - - - + + + + + onUpdate('module', v)" + @i18n-saved="onI18nSaved" + /> + + onUpdate('listConfig', v)" + @groups-saved="onGroupsSaved" + @sync-edit="(v) => onUpdate('editConfig', v)" + @sync-query="(v) => onUpdate('queryConfig', v)" + /> + onUpdate('editConfig', v)" + @groups-saved="onGroupsSaved" + @sync-list="(v) => onUpdate('listConfig', v)" + @sync-query="(v) => onUpdate('queryConfig', v)" + /> + onUpdate('queryConfig', v)" + /> + + onUpdate('powers', v)" + @i18n-saved="onI18nSaved" + /> + + + + + + + + + + + + + diff --git a/code/fms/fms-vue/src/views/system/user/index.vue b/code/fms/fms-vue/src/views/system/user/index.vue index 287b9adc..bcc3e7b6 100644 --- a/code/fms/fms-vue/src/views/system/user/index.vue +++ b/code/fms/fms-vue/src/views/system/user/index.vue @@ -1,10 +1,429 @@ - + { if (record?.action?.key === 'edit') handleEdit(record.record) }" + > + + + + 新增用户 + + + + + + + + + + + + + 登录账号 * + + + + 用户姓名 * + + + + 手机号 + + + + 部门 + + + + 新密码 + + + + 确认密码 + + + + + + + 标志位 + + + 启用 + + + 销售员 + + + 单据主管 + + + 可处理事务 + + + 允许异地登录 + + + 可见客户 + + + 管理员 + + + 操作权限 + + + 审批权限 + + + + + + + + + + + + + + + + + + {{ group.b_name }} + {{ group.children.length }} + + + + + {{ mod.b_name }} + + + + + + + + + + {{ selectedModule.b_name }} + {{ selectedModule.b_code }} + + + + + + 全选操作权限 + + + + + {{ pow }} + + + + + 勾选左侧「{{ selectedModule.b_name }}」以授权访问,再配置具体操作权限 + + + + + 请选择左侧菜单 + + + + + + @@ -22,4 +441,208 @@ import FmsModuleListPage from "@/components/fms-module-list/FmsModuleListPage.vu border: 0; border-radius: 0; } + +// ── Modal internal styles ── +.demo-basic-info { + padding-top: 4px; +} + +.demo-field-label { + display: block; + margin-bottom: 5px; + font-size: 13px; + color: #333; +} + +.demo-required { + color: #ff4d4f; +} + +.demo-flags-card { + margin-top: 20px; + padding-top: 16px; + border-top: 1px solid #f0f0f0; +} + +.demo-card-title { + margin-bottom: 10px; + font-size: 13px; + font-weight: 600; + color: #666; +} + +// ── Menu permission: left tree + right list ── +.perm-layout { + display: flex; + height: 440px; + border: 1px solid #f0f0f0; + border-radius: 6px; + overflow: hidden; +} + +// 左侧:菜单树 +.perm-tree { + width: 240px; + min-width: 240px; + padding: 6px 0; + border-right: 1px solid #f0f0f0; + overflow-y: auto; + background: #fafbfc; +} + +.tree-group-hd { + display: flex; + align-items: center; + gap: 6px; + padding: 8px 12px; + cursor: pointer; + user-select: none; + transition: background 0.1s; + + &:hover { + background: #f0f1f3; + } +} + +.tree-group-ic { + display: flex; + align-items: center; + color: #999; +} + +.tree-group-label { + flex: 1; + font-size: 13px; + font-weight: 600; + color: #1a1a1a; +} + +.tree-group-count { + font-size: 11px; + color: #bbb; +} + +.tree-group-body { + display: flex; + flex-direction: column; +} + +.tree-item { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px 8px 30px; + cursor: pointer; + transition: background 0.1s; + + &:hover { + background: #ebedf0; + } + + &.is-active { + background: #e6f0ff; + + &:hover { + background: #dcebff; + } + } +} + +.tree-item-name { + font-size: 13px; + color: #333; + user-select: none; +} + +// 右侧:操作权限列表 +.perm-detail { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + background: #fff; +} + +.perm-detail-hd { + display: flex; + align-items: baseline; + gap: 8px; + padding: 14px 20px; + border-bottom: 1px solid #f0f0f0; +} + +.perm-detail-title { + font-size: 15px; + font-weight: 600; + color: #1a1a1a; +} + +.perm-detail-sub { + font-size: 12px; + color: #bbb; +} + +.perm-detail-body { + flex: 1; + padding: 12px 20px; + overflow-y: auto; +} + +.perm-detail-all { + display: flex; + align-items: center; + gap: 8px; + padding: 10px 12px; + margin-bottom: 6px; + border-radius: 6px; + background: #f6f7f9; + font-size: 13px; + color: #333; + cursor: pointer; + user-select: none; +} + +.perm-pow-list { + display: flex; + flex-direction: column; +} + +.perm-pow-item { + display: flex; + align-items: center; + gap: 8px; + padding: 11px 12px; + border-bottom: 1px solid #f5f5f5; + font-size: 13px; + color: #333; + cursor: pointer; + user-select: none; + + &:last-child { + border-bottom: 0; + } + + &:hover { + background: #fafbfc; + } +} + +.perm-detail-tip { + margin-top: 8px; + padding: 36px 16px; + text-align: center; + font-size: 13px; + color: #999; + background: #fafbfc; + border-radius: 6px; +} + +.perm-detail-empty { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + color: #bbb; +} diff --git a/code/fms/fms-vue/vite.config.js b/code/fms/fms-vue/vite.config.js index 6a575b3f..a1862d88 100644 --- a/code/fms/fms-vue/vite.config.js +++ b/code/fms/fms-vue/vite.config.js @@ -4,6 +4,7 @@ import vue from "@vitejs/plugin-vue"; import tailwindcss from "@tailwindcss/vite"; import { AntdvNextResolver } from "@antdv-next/auto-import-resolver"; import Components from "unplugin-vue-components/vite"; +import { fileViewerRenderers } from "@file-viewer/vite-plugin"; // https://vite.dev/config/ export default defineConfig({ @@ -16,6 +17,15 @@ export default defineConfig({ host: "127.0.0.1", port: 5180, strictPort: true, + // 排除静态资源目录的监听:full 包复制出的 WASM/字体体积大, + // 在 Windows 下易被锁定导致 Vite 监听报 EBUSY 崩溃;public 下资源按需直接服务,无需监听 + watch: { + ignored: [ + "**/node_modules/**", + "**/.git/**", + "**/public/file-viewer/**", + ], + }, proxy: { "/api": { target: "http://127.0.0.1:8088", @@ -29,5 +39,6 @@ export default defineConfig({ Components({ resolvers: [AntdvNextResolver()], }), + fileViewerRenderers({ copyAssets: true }), ], }); diff --git a/code/fms/开发规范.md b/code/fms/开发规范.md index a35ec571..dba19cc7 100644 --- a/code/fms/开发规范.md +++ b/code/fms/开发规范.md @@ -29,11 +29,14 @@ - [NEVER] 修改通用接口的 URL、参数、返回值结构或处理逻辑。 - [MUST] 如通用接口确实无法满足需求:先说明原因 + 拟修改内容 + 影响范围,取得用户确认后再实施。 - [MUST] `bigint` 类型(如 `b_id`)序列化到前端时必须转为**字符串**。 +- [MUST] 通用查询默认**不传 `search_columns` / `searchColumns`**;除非明确需要限制返回字段且已确认字段存在,否则采用接口默认返回。 +- [MUST] `config/dbconfigs` 中的旧库仅用于参考表结构、历史数据和差异排查;除非用户明确指定,不修改旧库结构或数据。 ## 4. 前端实现 - [MUST] 表格使用项目封装的 **`fms-table`** 组件,不从零实现表格。 -- [MUST] 表单输入控件**不添加 `placeholder`**,用 `label` 或说明文字表达意图。 +- [MUST] 表单输入控件**不添加 `placeholder`**,`label` 只写字段名称,不追加“留空则...”这类操作提示信息。 +- [MUST] 使用 **`FmsTree`** 时不设置 `root-title`,根节点标题由组件内部统一维护。 - [MUST] 优先复用项目现有组件和 Antdv Next 组件能力,不重复造轮子。 - [SHOULD] 页面中出现 ≥2 处相同/相近功能时,提取为可复用组件、composable 或 service 方法。 - [SHOULD] 抽取复用以确有收益为前提,不为简单逻辑增加无意义的封装。 diff --git a/code/fms/文件组件设计方案.md b/code/fms/文件组件设计方案.md new file mode 100644 index 00000000..5eff34ec --- /dev/null +++ b/code/fms/文件组件设计方案.md @@ -0,0 +1,218 @@ +# FMS 文件管理组件设计方案(三栏布局) + +> 状态:待执行(计划稿) +> 目标:参考旧系统 `g3file`,为新 FMS 系统设计可复用的文件管理组件。 +> 布局:左 = 分类树,中 = 文件列表 + 操作区,右 = 预览区。 + +--- + +## 1. 背景与新旧差异 + +旧系统 `g3file` 是分两层的组件: +- 参数化通用库 `file-preview/g3-file`(基于 Element Plus + 阿里云 OSS),支持 `modelValue`、`module-id`、`father`、`cate-id`、`readonly`、`search-condition`、`upload-config.aliyun`、`preview-url`、`global-permission`、`iconfont` 及多种回调。 +- 业务包装层 `g3hd/frontend/src/components/g3-file/index.vue`,业务页只用一行调用:``。 + +新 FMS 的差异与决策: + +| 维度 | 旧系统 | 新系统决策 | +|------|--------|-----------| +| 框架 | Vue3 + Element Plus | Vue3 + **antdv-next**(自动导入,勿手导) | +| 上传存储 | 阿里云 OSS | 后端**本地磁盘**,文件名 `{subid}.{ext}`;预留 `OssStorageAdapter` 抽象便于将来切换 | +| moduleid | 存字符串业务 code(如 `oa_notices`) | `bf_files.mx_moduleid` 为 **bigint 外键 → `s_module.b_id`** | +| 预览 | 自研/第三方 | 复用已安装的 `@file-viewer/vue3-full`(`FileViewer`,dashboard 已验证 `withFullViewerOptions()`) | +| 调用方式 | `module-id` 字符串 | **`module-code`**(如 `oa_notices`);组件内解析为 `b_id` 写入 `mx_moduleid` | + +### 关于 moduleid 的关键决策 +- **保留 `mx_moduleid` 字段**,但它是**派生字段**,由组件根据 `module-code` 查 `s_module.b_id` 后写入。 +- 业务页**不单独传 moduleid**,只传 `module-code` 与 `father`。组件内部完成 code → b_id 解析并随上传/保存一并提交。 +- 说明:旧系统把字符串 code 直接当 moduleid 存,新系统 `mx_moduleid` 是指向 `s_module.b_id` 的 bigint 外键,二者语义不同;用 `module-code` 解析可兼容旧习惯又满足新外键约束。 + +--- + +## 2. 数据库现状(已存在,无需新建表) + +表 `bf_files` / `bf_files_cateid` / `bf_files_type` 已在迁移 `017_create_contract_file_tables.sql` 定义,字段如下(节选相关项): + +`bf_files`: +- `subid` bigint(主键,Snowflake ID) +- `father` bigint(业务单据 ID,如合同/通知 b_id) +- `mx_xh` int(显示序号) +- `mx_filename` nvarchar(500)(原始文件名) +- `mx_filesize` varchar(50) +- `mx_fileext` varchar(50) +- `mx_mapfilename` nvarchar(500)(**新系统存服务端存储文件名,如 `1234567890.pdf`,不再存阿里云 URL**) +- `mx_moduleid` bigint(FK → `s_module.b_id`,派生字段) +- `mx_cutfilename`、`mx_cutfilesize`(缩略图,可选) +- `mx_cate_id` bigint(→ `bf_files_cateid.b_id`,分类) +- `mx_bz` nvarchar(500) +- `mx_orderid`、`mx_sh`、`mx_shdatetime`、`mx_shuser_id` +- `mx_inputuser_id`、`mx_inputdatetime`、`mx_updateuser_id`、`mx_updatedatetime` + +索引:`IX_bf_files_father`、`IX_bf_files_mx_cate_id`、`IX_bf_files_mx_shuser_id`。 + +`bf_files_cateid`:`b_id`、`b_name`、`b_xh`、`b_bz`、`b_canuse`、`b_files_type`、`b_code`(唯一)等。 +`bf_files_type`:`b_id`、`b_name`、`b_module_id`、`b_module_name`、`b_xh` 等。 + +> 注意:bigint ID(subid / father / mx_moduleid / mx_cate_id)经后端返回前端时**必须序列化为字符串**。 + +--- + +## 3. 后端新增文件端点(按开发规范例外处理) + +通用端点(`/api/data/...`)无法处理二进制流与 multipart 上传,因此按规范例外新增**与业务表无关的 3 个通用文件端点**。需在新增前于回复中说明原因(已在本文 §1 论证)。 + +### 3.1 `POST /api/file/upload` +- 请求:`multipart/form-data` + - `file`(必填,二进制) + - `father`(必填,bigint 字符串,业务单据 ID) + - `moduleCode`(必填,如 `oa_notices`) + - `cateId`(可选,bigint 字符串 → `mx_cate_id`) + - `bz`(可选) +- 处理流程: + 1. 校验 JWT(过 `JwtAuthFilter`),取 `OrgContext.orgId` 选库。 + 2. 用 `IdGenerator` 生成 `subid`(Snowflake)。 + 3. 解析 `moduleCode` → `s_module.b_id`(查 `s_module` 表;查不到则报错 400)。 + 4. 计算扩展名 `ext`、存储名 `{subid}.{ext}`,写字节到 `fms.file.storage-dir`。 + 5. **只写磁盘文件,不写 `bf_files` 行**(行由前端用 `saveObjectApi` 批量保存,便于统一事务/权限)。 +- 响应(JSON): + ```json + { + "subid": "1234567890", + "storedName": "1234567890.pdf", + "mx_filename": "合同.pdf", + "mx_filesize": "102400", + "mx_fileext": "pdf", + "mx_mapfilename": "1234567890.pdf" + } + ``` + +### 3.2 `GET /api/file/{subid}` +- 查 `bf_files` 取 `mx_mapfilename`,从 `storage-dir` 流式返回字节。 +- 响应头:`Content-Type`(按扩展名映射)、`Content-Disposition: inline; filename*=UTF-8''`(inline 便于浏览器/pdf 预览)。 +- 需过 `JwtAuthFilter`(带 Token 才能取)。 + +### 3.3 `DELETE /api/file/{subid}` +- 删磁盘文件 + 删 `bf_files` 行(业务页也可改为走 `saveObjectApi` 的 `deletes[]`,二选一;推荐端点方式以便同时清理磁盘)。 +- 返回 `{ success: true }`。 + +### 3.4 配置 +`fms-api/src/main/resources/application.yaml` 新增: +```yaml +fms: + file: + storage-dir: ./data/files # 绝对或相对(相对应用工作目录),需 git-ignore +``` +`storage-dir` 目录加入 `.gitignore`。 + +--- + +## 4. 前端组件设计(三栏布局) + +目录:`fms-vue/src/components/file/` + +``` +FileManager.vue 三栏容器(左树 / 中列表操作 / 右预览) +FileCategoryTree.vue 左栏:分类树(虚拟根“全部附件” + bf_files_cateid 节点) +FileList.vue 中栏:文件列表 + 工具栏(上传/下载/删除/刷新) +FileUpload.vue a-upload 包装(调用 fileService.upload) +``` + +复用:`@file-viewer/vue3-full` 的 `FileViewer` 用于右栏预览;`antdv-next` 的 `a-upload` / `a-table` / `a-tree` / `a-button` 等(自动导入)。 +服务层:`fms-vue/src/services/fileService.js`。 + +### 4.1 FileManager.vue(容器) +- 三栏 flex 布局:左 `FileCategoryTree`(宽 ~220px,受 `showTree` 控制),中 `FileList`(flex:1),右预览区(宽 ~40% 或固定 ~480px,仅当选中文件时显示)。 +- 选中文件(来自 `FileList` 的 `select` 事件)→ 右栏渲染 `FileViewer` 并传入预览 URL(`fileService.getContentUrl(subid)`)。 +- 负责 `moduleCode` → `moduleId`(b_id) 解析:挂载时调 `loadModuleConfiguration` / 通用 `loaddata` 查 `s_module` 得到 `b_id`,下传 `FileList` 备用(上传时带回)。 +- 工具栏按钮(上传/下载/删除)按 `moduleCode` 查 `b_user_power` 控制显隐/禁用(前端权限,沿用现有 `permissions` store 模式)。 + +**Props** +| 名称 | 类型 | 必填 | 默认 | 说明 | +|------|------|------|------|------| +| `modelValue` | Boolean | 是 | — | 控制显隐(v-model) | +| `moduleCode` | String | 是 | — | 模块 code,如 `oa_notices` | +| `father` | [String, Number] | 是 | — | 业务单据 ID(bigint 字符串) | +| `moduleId` | [String, Number] | 否 | — | 已解析的 `s_module.b_id`;不传则组件内解析 | +| `cateId` | [String, Number] | 否 | — | 初始分类过滤 | +| `categories` | Array | 否 | — | 预置分类列表,避免请求树 | +| `readonly` | Boolean | 否 | false | 只读(隐藏上传/删除) | +| `showTree` | Boolean | 否 | true | 是否显示左栏分类树 | + +**Events** +| 名称 | 载荷 | 说明 | +|------|------|------| +| `update:modelValue` | Boolean | v-model | +| `uploaded` | fileRow | 上传完成(含回写 bf_files 后的行) | +| `deleted` | subid | 删除完成 | +| `selected` | fileRow \| null | 选中文件变化(驱动右栏预览) | +| `error` | Error | 异常 | + +### 4.2 FileCategoryTree.vue(左栏) +- 虚拟根节点“全部附件”(值为 `null` 或 `'__all__'`),下挂 `bf_files_cateid` 节点(来自 `loaddata` 查 `bf_files_cateid`,按 `b_xh` 排序)。 +- 选中分类 emit `select(cateId)`,供 `FileList` 过滤。 +- 若 `categories` prop 已提供则直接用,否则自行加载。 + +### 4.3 FileList.vue(中栏) +- `a-table` 展示当前 `father` +(可选)`cateId` 下的 `bf_files` 行(走 `pageDataApi` / `loadDataApi`,`view_name='bf_files'`)。 +- 工具栏:`FileUpload`(上传)、下载、删除、刷新。 +- 行选中 → emit `select(row)` → 容器驱动右栏。 +- 上传完成后调用 `saveObjectApi` 写 `bf_files` 行(inserts: `[{table:'bf_files', key_field:'subid', ...}]`,带 `father`/`mx_moduleid`/`mx_filename`/`mx_filesize`/`mx_fileext`/`mx_mapfilename`/`mx_cate_id`)。 +- 删除:调 `fileService.remove(subid)`(或 `saveObjectApi` deletes + 端点删磁盘)。 + +### 4.4 FileUpload.vue +- 包装 `a-upload`(`:before-upload` 拦截,手动调 `fileService.upload`)。 +- 入参:`father`、`moduleCode`、`moduleId`、`cateId`;上传成功后把响应行 emit 给 `FileList` 继续写元数据。 + +### 4.5 fileService.js +封装以下方法(基于 `src/services/http.js`): +- `upload({file, father, moduleCode, cateId, bz})` → `POST /api/file/upload`(multipart) +- `getContentUrl(subid)` → 返回 `GET /api/file/{subid}` 的可访问 URL(需带 Token;若 axios 拦截器不自动带,则改用带 Token 的 `fetch`/blob 下载后 `URL.createObjectURL` 喂给 `FileViewer`) +- `remove(subid)` → `DELETE /api/file/{subid}` +- `listFiles({father, cateId})` → `pageDataApi`(`bf_files`) +- `saveMeta(rows)` → `saveObjectApi` + +> 预览 URL 处理:因 `FileViewer` 需要可直接访问的资源地址,而 `/api/file/{subid}` 需鉴权,推荐在 `fileService` 内用带 `Authorization` 的 `fetch` 取 blob 再 `createObjectURL`,避免 Token 泄漏到 URL。 + +--- + +## 5. 业务页调用示例 + +```vue + + +``` +- 业务页**只需传 `module-code` 与 `father`**,不再传 moduleid。 +- 只读场景:`readonly` + `show-tree` 可组合使用。 + +--- + +## 6. 落地步骤清单(执行顺序) + +1. **后端** + - [ ] `application.yaml` 增加 `fms.file.storage-dir`,并把该目录加入 `.gitignore`。 + - [ ] 新建 `FileController`(或并入现有 controller 包),实现 `upload` / `GET {subid}` / `DELETE {subid}` 三个端点,复用 `OrgContext` + `DbUtils` + `IdGenerator`。 + - [ ] 实现本地磁盘存储(`StorageService`,预留 `OssStorageAdapter` 接口)。 + - [ ] `moduleCode → b_id` 解析逻辑(查 `s_module`)。 +2. **前端服务** + - [ ] `src/services/fileService.js` 五个方法。 +3. **前端组件** + - [ ] `FileCategoryTree.vue`(左树) + - [ ] `FileList.vue`(中栏列表+操作,含写元数据/删除) + - [ ] `FileUpload.vue`(a-upload 包装) + - [ ] `FileManager.vue`(三栏容器 + 权限 + moduleCode 解析 + 右栏预览) +4. **集成验证** + - [ ] 选一个业务页(如通知 `oa_notices`)挂载 ``,验证上传/列表/分类过滤/预览/删除全链路。 + - [ ] 确认 bigint ID 前端为字符串、预览 URL 鉴权正常。 + +--- + +## 7. 注意事项(沿用开发规范) +- 不新增业务专属数据端点(文件端点属通用基础设施例外,已在 §1 论证)。 +- 不手动 `import` antdv-next 组件(vite resolver 已自动导入)。 +- 不引入新 vue-i18n;文案沿用 DB 驱动 i18n(必要时走 `b_i18n`)。 +- 改动保持聚焦,不触碰无关文件;保留用户未提交的工作。 +- 交付时说明是否运行了测试、是否执行了 build(默认不主动 build/起服务,除非用户要求)。
+ 支持图片 / PDF / Office / Markdown / 文本 / 音视频等;PDF、Office 等格式由浏览器端 WASM 渲染,无需服务端转换。 +