From e3b919a4f37d600a0f516944edf4eed8b2c0174d Mon Sep 17 00:00:00 2001 From: Jinke Li Date: Wed, 22 Nov 2023 15:54:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(layout):=20=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=B8=B2=E6=9F=93=E5=A4=9A=E8=A1=8C=E6=96=87?= =?UTF-8?q?=E6=9C=AC=20(#2383)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(layout): 单元格支持渲染多行文本 * fix: 修复 lint 和 test * feat: 去掉所有内置的省略文本计算 * feat: 单元格根据文本高度自适应 * test: 增加测试 * fix: 兼容开启汇总和隐藏节点的场景 * test: 修复单测 * fix: 修复明细表列头换行高度问题 * build: 修复打包问题 * test: 单测修复 * fix: 简化 headerConfig * test: 单测修复 * test: 单测修复 * test: update * chore: 更新 lock * test: update --- .../__tests__/data/data-multi-line-text.ts | 532 ++ .../custom-table-col-spec.ts.snap | 2 +- .../multi-line-text-spec.ts.snap | 7167 +++++++++++++++++ .../__snapshots__/theme-spec.ts.snap | 205 + .../spreadsheet/hidden-columns-spec.ts | 76 +- .../spreadsheet/layout-hooks-spec.ts | 8 +- .../spreadsheet/multi-line-text-spec.ts | 399 + .../__tests__/unit/cell/data-cell-spec.ts | 11 +- .../__tests__/unit/facet/pivot-facet-spec.ts | 6 +- .../__tests__/unit/facet/table-facet-spec.ts | 5 +- .../click/row-column-click-spec.ts | 4 +- .../base-interaction/hover-spec.ts | 17 +- .../unit/interaction/event-controller-spec.ts | 3 + .../__tests__/unit/interaction/root-spec.ts | 6 +- .../interaction/row-column-resize-spec.ts | 12 +- .../unit/sheet-type/pivot-sheet-spec.ts | 4 +- .../__tests__/unit/utils/hide-columns-spec.ts | 12 +- packages/s2-core/__tests__/util/helpers.ts | 25 +- packages/s2-core/__tests__/util/index.ts | 2 +- packages/s2-core/package.json | 5 +- packages/s2-core/src/cell/base-cell.ts | 296 +- packages/s2-core/src/cell/col-cell.ts | 24 +- packages/s2-core/src/cell/corner-cell.ts | 116 +- packages/s2-core/src/cell/data-cell.ts | 18 +- packages/s2-core/src/cell/header-cell.ts | 21 +- packages/s2-core/src/cell/merged-cell.ts | 17 +- packages/s2-core/src/cell/row-cell.ts | 35 +- .../s2-core/src/cell/series-number-cell.ts | 6 +- packages/s2-core/src/cell/table-col-cell.ts | 16 +- packages/s2-core/src/common/constant/basic.ts | 16 - .../s2-core/src/common/constant/options.ts | 14 +- .../s2-core/src/common/interface/index.ts | 1 + packages/s2-core/src/common/interface/text.ts | 6 + .../s2-core/src/common/interface/theme.ts | 38 +- packages/s2-core/src/facet/base-facet.ts | 71 +- packages/s2-core/src/facet/header/base.ts | 28 +- packages/s2-core/src/facet/header/col.ts | 41 +- packages/s2-core/src/facet/header/corner.ts | 52 +- packages/s2-core/src/facet/header/row.ts | 23 +- .../s2-core/src/facet/header/series-number.ts | 52 +- .../s2-core/src/facet/header/table-col.ts | 49 +- packages/s2-core/src/facet/pivot-facet.ts | 102 +- packages/s2-core/src/facet/table-facet.ts | 21 +- .../click/row-column-click.ts | 4 +- .../src/interaction/base-interaction/hover.ts | 8 +- .../src/interaction/event-controller.ts | 8 +- packages/s2-core/src/interaction/root.ts | 11 +- .../src/interaction/row-column-resize.ts | 12 +- packages/s2-core/src/sheet-type/index.ts | 3 + .../s2-core/src/sheet-type/spread-sheet.ts | 30 +- packages/s2-core/src/theme/index.ts | 301 +- packages/s2-core/src/utils/cell/cell.ts | 2 +- packages/s2-core/src/utils/common.ts | 7 + packages/s2-core/src/utils/g-mini-charts.ts | 63 +- packages/s2-core/src/utils/g-renders.ts | 34 +- packages/s2-core/src/utils/hide-columns.ts | 22 +- packages/s2-core/src/utils/index.ts | 2 + packages/s2-core/src/utils/text.ts | 136 +- .../s2-react/__tests__/data/strategy-data.ts | 9 +- .../__tests__/spreadsheet/adaptive-spec.tsx | 89 +- .../sheets/__snapshots__/index-spec.tsx.snap | 10 +- .../__snapshots__/index-spec.tsx.snap | 2 +- .../__snapshots__/index-spec.tsx.snap | 15 - .../sheets/strategy-sheet/index-spec.tsx | 6 +- packages/s2-react/__tests__/util/helpers.ts | 3 + packages/s2-react/package.json | 1 - .../components/GridAnalysisSheet.tsx | 7 + .../playground/components/ResizeConfig.tsx | 120 +- packages/s2-react/playground/config.tsx | 36 +- packages/s2-react/playground/index.tsx | 13 +- .../src/components/export/strategy-copy.ts | 5 +- .../sheets/chart-sheet/custom-cell.ts | 2 +- .../sheets/grid-analysis-sheet/custom-cell.ts | 14 +- .../strategy-sheet/custom-cell/col-cell.ts | 4 +- .../strategy-sheet/custom-cell/data-cell.ts | 13 +- pnpm-lock.yaml | 3425 ++++---- s2-site/docs/api/general/S2Theme.zh.md | 11 +- .../comparison/demo/measure-comparison.tsx | 47 +- s2-site/package.json | 10 +- 79 files changed, 11449 insertions(+), 2600 deletions(-) create mode 100644 packages/s2-core/__tests__/data/data-multi-line-text.ts create mode 100644 packages/s2-core/__tests__/spreadsheet/__snapshots__/multi-line-text-spec.ts.snap create mode 100644 packages/s2-core/__tests__/spreadsheet/multi-line-text-spec.ts create mode 100644 packages/s2-core/src/common/interface/text.ts create mode 100644 packages/s2-core/src/utils/common.ts diff --git a/packages/s2-core/__tests__/data/data-multi-line-text.ts b/packages/s2-core/__tests__/data/data-multi-line-text.ts new file mode 100644 index 0000000000..585d10947f --- /dev/null +++ b/packages/s2-core/__tests__/data/data-multi-line-text.ts @@ -0,0 +1,532 @@ +import type { S2DataConfig } from '../../src'; + +export const PivotSheetMultiLineTextDataCfg: S2DataConfig = { + fields: { + rows: ['province', 'city'], + columns: ['type', 'sub_type'], + values: ['number'], + valueInCols: true, + }, + meta: [ + { + field: 'number', + name: '数量数量数量数量数量数量数量数量数量数量数量', + description: '数量说明。。', + }, + { + field: 'province', + name: '省份', + description: '省份说明。。', + }, + { + field: 'city', + name: '城市城市城市城市城市城市城市城市城市城市城市城市', + description: '城市说明。。', + }, + { + field: 'type', + name: '类别类别类别类别类别类别类别类别类别类别', + description: '类别说明。。', + }, + { + field: 'sub_type', + name: '子类别', + description: '子类别说明。。', + }, + { + field: 'area', + name: '地区', + description: '地区说明。。', + }, + { + field: 'money', + name: '金额', + description: '金额说明。。', + }, + ], + data: [ + { + number: 236723672361111, + province: '浙江省', + city: '绍兴市', + type: '家具', + sub_type: '桌子', + }, + { + number: '7789778977897789778977897789', + province: '浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省', + city: '杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市', + type: '家具家具家具家具家具家具家具家具家具家具家具家具家具家具', + sub_type: '桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子', + }, + { + number: 236723672361111, + province: '浙江省', + city: '绍兴市', + type: '家具', + sub_type: '桌子', + }, + { + number: 3877, + province: '浙江省', + city: '宁波市', + type: '家具', + sub_type: '桌子', + }, + { + number: 4342, + province: '浙江省', + city: '舟山市', + type: '家具', + sub_type: '桌子', + }, + { + number: 5343, + province: '浙江省', + city: '杭州市', + type: '家具', + sub_type: '沙发', + }, + { + number: 632, + province: '浙江省', + city: '绍兴市', + type: '家具', + sub_type: '沙发', + }, + { + number: 7234, + province: '浙江省', + city: '宁波市', + type: '家具', + sub_type: '沙发', + }, + { + number: 834, + province: '浙江省', + city: '舟山市', + type: '家具', + sub_type: '沙发', + }, + { + number: 945, + province: '浙江省', + city: '杭州市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 1304, + province: '浙江省', + city: '绍兴市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 1145, + province: '浙江省', + city: '宁波市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 1432, + province: '浙江省', + city: '舟山市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 1343, + province: '浙江省', + city: '杭州市', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 1354, + province: '浙江省', + city: '绍兴市', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 1523, + province: '浙江省', + city: '宁波市', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 1634, + province: '浙江省', + city: '舟山市', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 1723, + province: '四川省', + city: '成都市', + type: '家具', + sub_type: '桌子', + }, + { + number: 1822, + province: '四川省', + city: '绵阳市', + type: '家具', + sub_type: '桌子', + }, + { + number: 1943, + province: '四川省', + city: '南充市', + type: '家具', + sub_type: '桌子', + }, + { + number: 2330, + province: '四川省', + city: '乐山市', + type: '家具', + sub_type: '桌子', + }, + { + number: 2451, + province: '四川省', + city: '成都市', + type: '家具', + sub_type: '沙发', + }, + { + number: 2244, + province: '四川省', + city: '绵阳市', + type: '家具', + sub_type: '沙发', + }, + { + number: 2333, + province: '四川省', + city: '南充市', + type: '家具', + sub_type: '沙发', + }, + { + number: 2445, + province: '四川省', + city: '乐山市', + type: '家具', + sub_type: '沙发', + }, + { + number: 2335, + province: '四川省', + city: '成都市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 245, + province: '四川省', + city: '绵阳市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 2457, + province: '四川省', + city: '南充市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 2458, + province: '四川省', + city: '乐山市', + type: '办公用品', + sub_type: '笔', + }, + { + number: 4004, + province: '四川省', + city: '成都市', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 3077, + province: '四川省', + city: '绵阳市', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 3551, + province: '四川省', + city: '南充市', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 352, + province: '四川省', + city: '乐山市', + type: '办公用品', + sub_type: '纸张', + }, + ], + totalData: [ + { + number: 26193, + type: '家具', + sub_type: '桌子', + }, + { + number: 49709, + type: '家具', + }, + { + number: 23516, + type: '家具', + sub_type: '沙发', + }, + { + number: 29159, + type: '办公用品', + }, + { + number: 12321, + type: '办公用品', + sub_type: '笔', + }, + { + number: 16838, + type: '办公用品', + sub_type: '纸张', + }, + { + number: 18375, + province: '浙江省', + type: '家具', + sub_type: '桌子', + }, + { + number: 14043, + province: '浙江省', + type: '家具', + sub_type: '沙发', + }, + { + number: 4826, + province: '浙江省', + type: '办公用品', + sub_type: '笔', + }, + { + number: 5854, + province: '浙江省', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 7818, + province: '四川省', + type: '家具', + sub_type: '桌子', + }, + { + number: 9473, + province: '四川省', + type: '家具', + sub_type: '沙发', + }, + { + number: 7495, + province: '四川省', + type: '办公用品', + sub_type: '笔', + }, + { + number: 10984, + province: '四川省', + type: '办公用品', + sub_type: '纸张', + }, + { + number: 13132, + province: '浙江省', + city: '杭州市', + type: '家具', + }, + { + number: 2288, + province: '浙江省', + city: '杭州市', + type: '办公用品', + }, + { + number: 15420, + province: '浙江省', + city: '杭州市', + }, + { + number: 2999, + province: '浙江省', + city: '绍兴市', + type: '家具', + }, + { + number: 2658, + province: '浙江省', + city: '绍兴市', + type: '办公用品', + }, + { + number: 5657, + province: '浙江省', + city: '绍兴市', + }, + { + number: 11111, + province: '浙江省', + city: '宁波市', + type: '家具', + }, + { + number: 2668, + province: '浙江省', + city: '宁波市', + type: '办公用品', + }, + { + number: 13779, + province: '浙江省', + city: '宁波市', + }, + { + number: 5176, + province: '浙江省', + city: '舟山市', + type: '家具', + }, + { + number: 3066, + province: '浙江省', + city: '舟山市', + type: '办公用品', + }, + { + number: 8242, + province: '浙江省', + city: '舟山市', + }, + { + number: 4174, + province: '四川省', + city: '成都市', + type: '家具', + }, + { + number: 6339, + province: '四川省', + city: '成都市', + type: '办公用品', + }, + { + number: 10513, + province: '四川省', + city: '成都市', + }, + { + number: 4066, + province: '四川省', + city: '绵阳市', + type: '家具', + }, + { + number: 3322, + province: '四川省', + city: '绵阳市', + type: '办公用品', + }, + { + number: 7388, + province: '四川省', + city: '绵阳市', + }, + { + number: 4276, + province: '四川省', + city: '南充市', + type: '家具', + }, + { + number: 6008, + province: '四川省', + city: '南充市', + type: '办公用品', + }, + { + number: 10284, + province: '四川省', + city: '南充市', + }, + { + number: 4775, + province: '四川省', + city: '乐山市', + type: '家具', + }, + { + number: 2810, + province: '四川省', + city: '乐山市', + type: '办公用品', + }, + { + number: 7585, + province: '四川省', + city: '乐山市', + }, + { + number: 32418, + province: '浙江省', + type: '家具', + }, + { + number: 10680, + province: '浙江省', + type: '办公用品', + }, + { + number: 43098, + province: '浙江省', + }, + { + number: 17291, + province: '四川省', + type: '家具', + }, + { + number: 18479, + province: '四川省', + type: '办公用品', + }, + { + number: 35770, + province: '四川省', + }, + { + number: 78868, + }, + ], +}; + +export const TableSheetMultiLineTextDataCfg = { + ...PivotSheetMultiLineTextDataCfg, + fields: { + columns: ['province', 'city', 'type', 'sub_type', 'number'], + }, +}; diff --git a/packages/s2-core/__tests__/spreadsheet/__snapshots__/custom-table-col-spec.ts.snap b/packages/s2-core/__tests__/spreadsheet/__snapshots__/custom-table-col-spec.ts.snap index f14925d59e..e607dd4387 100644 --- a/packages/s2-core/__tests__/spreadsheet/__snapshots__/custom-table-col-spec.ts.snap +++ b/packages/s2-core/__tests__/spreadsheet/__snapshots__/custom-table-col-spec.ts.snap @@ -44,7 +44,7 @@ Array [ "value": "类型", }, Object { - "height": 30, + "height": 100, "value": "金额", }, Object { diff --git a/packages/s2-core/__tests__/spreadsheet/__snapshots__/multi-line-text-spec.ts.snap b/packages/s2-core/__tests__/spreadsheet/__snapshots__/multi-line-text-spec.ts.snap new file mode 100644 index 0000000000..6e1f64174a --- /dev/null +++ b/packages/s2-core/__tests__/spreadsheet/__snapshots__/multi-line-text-spec.ts.snap @@ -0,0 +1,7167 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom three max text lines 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 53, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 53, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 96, + }, + Object { + "actualText": "城市城市城市城市城市城市城市城市城...", + "actualTextHeight": 48, + "actualTextWidth": 217, + "height": 53, + "multiLineActualTexts": Array [ + "城市城市城市", + "城市城市城市", + "城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 96, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 16, + "actualTextWidth": 241, + "height": 56, + "multiLineActualTexts": Array [ + "类别类别类别类别类别类别类别类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 272, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 56, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 272, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom three max text lines 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 189, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 53, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom three max text lines 3`] = ` +Array [ + Object { + "actualText": "家具", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 56, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 192, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 56, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数量数量数量数...", + "actualTextHeight": 45, + "actualTextWidth": 217, + "height": 53, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 56, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数量数量数量数...", + "actualTextHeight": 45, + "actualTextWidth": 217, + "height": 53, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom three max text lines 4`] = ` +Array [ + Object { + "actualText": "浙江省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 189, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 96, + }, + Object { + "actualText": "浙江省浙江省浙江省浙江省浙江省浙江...", + "actualTextHeight": 48, + "actualTextWidth": 217, + "height": 53, + "multiLineActualTexts": Array [ + "浙江省浙江省", + "浙江省浙江省", + "浙江省浙江...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom three max text lines 5`] = ` +Array [ + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 99, + "height": 30, + "multiLineActualTexts": Array [ + "23672367236", + "1111", + ], + "originalText": "236723672361111", + "width": 96, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 53, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 96, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 53, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 53, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 53, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 96, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 53, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 96, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 53, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 96, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 53, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 53, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom two max text lines 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 38, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 38, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 96, + }, + Object { + "actualText": "城市城市城市城市城市城...", + "actualTextHeight": 32, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "城市城市城市", + "城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 96, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 16, + "actualTextWidth": 241, + "height": 40, + "multiLineActualTexts": Array [ + "类别类别类别类别类别类别类别类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 272, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 40, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 272, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom two max text lines 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 144, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 38, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 152, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom two max text lines 3`] = ` +Array [ + Object { + "actualText": "家具", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 192, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数...", + "actualTextHeight": 30, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数...", + "actualTextHeight": 30, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom two max text lines 4`] = ` +Array [ + Object { + "actualText": "浙江省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 144, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 96, + }, + Object { + "actualText": "浙江省浙江省浙江省浙江...", + "actualTextHeight": 32, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "浙江省浙江省", + "浙江省浙江...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 96, + }, + Object { + "actualText": "四川省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 152, + "multiLineActualTexts": Array [ + "四川省", + ], + "originalText": "四川省", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should custom two max text lines 5`] = ` +Array [ + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 99, + "height": 30, + "multiLineActualTexts": Array [ + "23672367236", + "1111", + ], + "originalText": "236723672361111", + "width": 96, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 96, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 38, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 38, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "1723", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "1723", + ], + "originalText": "1723", + "width": 96, + }, + Object { + "actualText": "1822", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "1822", + ], + "originalText": "1822", + "width": 96, + }, + Object { + "actualText": "1943", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "1943", + ], + "originalText": "1943", + "width": 96, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 96, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 96, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 38, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 96, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 38, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "2451", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "2451", + ], + "originalText": "2451", + "width": 96, + }, + Object { + "actualText": "2244", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "2244", + ], + "originalText": "2244", + "width": 96, + }, + Object { + "actualText": "2333", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "2333", + ], + "originalText": "2333", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should default render one line text 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 96, + }, + Object { + "actualText": "城市城市城...", + "actualTextHeight": 16, + "actualTextWidth": 71, + "height": 30, + "multiLineActualTexts": Array [ + "城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 96, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 16, + "actualTextWidth": 241, + "height": 30, + "multiLineActualTexts": Array [ + "类别类别类别类别类别类别类别类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 272, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 272, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should default render one line text 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 120, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 120, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should default render one line text 3`] = ` +Array [ + Object { + "actualText": "家具", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 192, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 96, + }, + Object { + "actualText": "数量数量数...", + "actualTextHeight": 15, + "actualTextWidth": 71, + "height": 30, + "multiLineActualTexts": Array [ + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 96, + }, + Object { + "actualText": "数量数量数...", + "actualTextHeight": 15, + "actualTextWidth": 71, + "height": 30, + "multiLineActualTexts": Array [ + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should default render one line text 4`] = ` +Array [ + Object { + "actualText": "浙江省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 120, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 96, + }, + Object { + "actualText": "浙江省浙江...", + "actualTextHeight": 16, + "actualTextWidth": 71, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省浙江...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 96, + }, + Object { + "actualText": "四川省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 120, + "multiLineActualTexts": Array [ + "四川省", + ], + "originalText": "四川省", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should default render one line text 5`] = ` +Array [ + Object { + "actualText": "2367236723...", + "actualTextHeight": 15, + "actualTextWidth": 77, + "height": 30, + "multiLineActualTexts": Array [ + "2367236723...", + ], + "originalText": "236723672361111", + "width": 96, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 96, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "1723", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1723", + ], + "originalText": "1723", + "width": 96, + }, + Object { + "actualText": "1822", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1822", + ], + "originalText": "1822", + "width": 96, + }, + Object { + "actualText": "1943", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1943", + ], + "originalText": "1943", + "width": 96, + }, + Object { + "actualText": "2330", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2330", + ], + "originalText": "2330", + "width": 96, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 96, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 96, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 96, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "2451", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2451", + ], + "originalText": "2451", + "width": 96, + }, + Object { + "actualText": "2244", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2244", + ], + "originalText": "2244", + "width": 96, + }, + Object { + "actualText": "2333", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2333", + ], + "originalText": "2333", + "width": 96, + }, + Object { + "actualText": "2445", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2445", + ], + "originalText": "2445", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should force adaptive adjust cell height if custom cell style less than actual text height 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 38, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 38, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 96, + }, + Object { + "actualText": "城市城市城市城市城市城...", + "actualTextHeight": 32, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "城市城市城市", + "城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 96, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 16, + "actualTextWidth": 241, + "height": 40, + "multiLineActualTexts": Array [ + "类别类别类别类别类别类别类别类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 272, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 40, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 272, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should force adaptive adjust cell height if custom cell style less than actual text height 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 137, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 38, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 152, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should force adaptive adjust cell height if custom cell style less than actual text height 3`] = ` +Array [ + Object { + "actualText": "家具", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 192, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数...", + "actualTextHeight": 30, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数...", + "actualTextHeight": 30, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should force adaptive adjust cell height if custom cell style less than actual text height 4`] = ` +Array [ + Object { + "actualText": "浙江省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 137, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 96, + }, + Object { + "actualText": "浙江省浙江省浙江省浙江...", + "actualTextHeight": 32, + "actualTextWidth": 144, + "height": 38, + "multiLineActualTexts": Array [ + "浙江省浙江省", + "浙江省浙江...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 96, + }, + Object { + "actualText": "四川省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 152, + "multiLineActualTexts": Array [ + "四川省", + ], + "originalText": "四川省", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should force adaptive adjust cell height if custom cell style less than actual text height 5`] = ` +Array [ + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 99, + "height": 23, + "multiLineActualTexts": Array [ + "23672367236", + "1111", + ], + "originalText": "236723672361111", + "width": 96, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 96, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 38, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 38, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "1723", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "1723", + ], + "originalText": "1723", + "width": 96, + }, + Object { + "actualText": "1822", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "1822", + ], + "originalText": "1822", + "width": 96, + }, + Object { + "actualText": "1943", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "1943", + ], + "originalText": "1943", + "width": 96, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 23, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 96, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 96, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 38, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 96, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 38, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "2451", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "2451", + ], + "originalText": "2451", + "width": 96, + }, + Object { + "actualText": "2244", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "2244", + ], + "originalText": "2244", + "width": 96, + }, + Object { + "actualText": "2333", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 38, + "multiLineActualTexts": Array [ + "2333", + ], + "originalText": "2333", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not adaptive adjust cell height if custom cell style more than actual text height 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 70, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 70, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 96, + }, + Object { + "actualText": "城市城市城市城市城市城...", + "actualTextHeight": 32, + "actualTextWidth": 144, + "height": 70, + "multiLineActualTexts": Array [ + "城市城市城市", + "城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 96, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 16, + "actualTextWidth": 241, + "height": 70, + "multiLineActualTexts": Array [ + "类别类别类别类别类别类别类别类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 272, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 70, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 272, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not adaptive adjust cell height if custom cell style more than actual text height 2`] = ` +Array [ + Object { + "actualText": "数量数量数量数量数量数...", + "actualTextHeight": 30, + "actualTextWidth": 144, + "height": 70, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数...", + "actualTextHeight": 30, + "actualTextWidth": 144, + "height": 70, + "multiLineActualTexts": Array [ + "数量数量数量", + "数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not adaptive adjust cell height if custom cell style more than actual text height 3`] = `Array []`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not adaptive adjust cell height if custom cell style more than actual text height 4`] = ` +Array [ + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 99, + "height": 70, + "multiLineActualTexts": Array [ + "23672367236", + "1111", + ], + "originalText": "236723672361111", + "width": 96, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 70, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 96, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 70, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 96, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 70, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 96, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 70, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 96, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 70, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not render word wrap text 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 96, + }, + Object { + "actualText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "actualTextHeight": 16, + "actualTextWidth": 289, + "height": 30, + "multiLineActualTexts": Array [ + "城市城市城市城市城市城市城市城市城市城市城市城市", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 96, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 16, + "actualTextWidth": 241, + "height": 30, + "multiLineActualTexts": Array [ + "类别类别类别类别类别类别类别类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 272, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 272, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not render word wrap text 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 120, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 120, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not render word wrap text 3`] = ` +Array [ + Object { + "actualText": "家具", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 192, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数量数量数量数量数量数量", + "actualTextHeight": 15, + "actualTextWidth": 265, + "height": 30, + "multiLineActualTexts": Array [ + "数量数量数量数量数量数量数量数量数量数量数量", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 96, + }, + Object { + "actualText": "数量数量数量数量数量数量数量数量数量数量数量", + "actualTextHeight": 15, + "actualTextWidth": 265, + "height": 30, + "multiLineActualTexts": Array [ + "数量数量数量数量数量数量数量数量数量数量数量", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not render word wrap text 4`] = ` +Array [ + Object { + "actualText": "浙江省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 120, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 96, + }, + Object { + "actualText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "actualTextHeight": 16, + "actualTextWidth": 361, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 96, + }, + Object { + "actualText": "四川省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 120, + "multiLineActualTexts": Array [ + "四川省", + ], + "originalText": "四川省", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should not render word wrap text 5`] = ` +Array [ + Object { + "actualText": "236723672361111", + "actualTextHeight": 15, + "actualTextWidth": 98, + "height": 30, + "multiLineActualTexts": Array [ + "236723672361111", + ], + "originalText": "236723672361111", + "width": 96, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 96, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "1723", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1723", + ], + "originalText": "1723", + "width": 96, + }, + Object { + "actualText": "1822", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1822", + ], + "originalText": "1822", + "width": 96, + }, + Object { + "actualText": "1943", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1943", + ], + "originalText": "1943", + "width": 96, + }, + Object { + "actualText": "2330", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2330", + ], + "originalText": "2330", + "width": 96, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 96, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 96, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 96, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "2451", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2451", + ], + "originalText": "2451", + "width": 96, + }, + Object { + "actualText": "2244", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2244", + ], + "originalText": "2244", + "width": 96, + }, + Object { + "actualText": "2333", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2333", + ], + "originalText": "2333", + "width": 96, + }, + Object { + "actualText": "2445", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2445", + ], + "originalText": "2445", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should render custom text overflow text 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 96, + }, + Object { + "actualText": "城我是省略号", + "actualTextHeight": 16, + "actualTextWidth": 73, + "height": 30, + "multiLineActualTexts": Array [ + "城我是省略号", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 96, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 16, + "actualTextWidth": 241, + "height": 30, + "multiLineActualTexts": Array [ + "类别类别类别类别类别类别类别类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 272, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 272, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should render custom text overflow text 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 120, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 120, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should render custom text overflow text 3`] = ` +Array [ + Object { + "actualText": "家具", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 192, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 96, + }, + Object { + "actualText": "数量数量数😸", + "actualTextHeight": 15, + "actualTextWidth": 73, + "height": 30, + "multiLineActualTexts": Array [ + "数量数量数😸", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 96, + }, + Object { + "actualText": "数量数量数😸", + "actualTextHeight": 15, + "actualTextWidth": 73, + "height": 30, + "multiLineActualTexts": Array [ + "数量数量数😸", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should render custom text overflow text 4`] = ` +Array [ + Object { + "actualText": "浙江省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 120, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 96, + }, + Object { + "actualText": "浙我是省略号", + "actualTextHeight": 16, + "actualTextWidth": 73, + "height": 30, + "multiLineActualTexts": Array [ + "浙我是省略号", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 96, + }, + Object { + "actualText": "四川省", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 120, + "multiLineActualTexts": Array [ + "四川省", + ], + "originalText": "四川省", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests PivotSheet should render custom text overflow text 5`] = ` +Array [ + Object { + "actualText": "236723@@@", + "actualTextHeight": 15, + "actualTextWidth": 77, + "height": 30, + "multiLineActualTexts": Array [ + "236723@@@", + ], + "originalText": "236723672361111", + "width": 96, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 96, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "1723", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1723", + ], + "originalText": "1723", + "width": 96, + }, + Object { + "actualText": "1822", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1822", + ], + "originalText": "1822", + "width": 96, + }, + Object { + "actualText": "1943", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1943", + ], + "originalText": "1943", + "width": 96, + }, + Object { + "actualText": "2330", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2330", + ], + "originalText": "2330", + "width": 96, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 96, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 96, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 96, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 96, + }, + Object { + "actualText": "-", + "actualTextHeight": 15, + "actualTextWidth": 4, + "height": 30, + "multiLineActualTexts": Array [ + "-", + ], + "originalText": "-", + "width": 96, + }, + Object { + "actualText": "2451", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2451", + ], + "originalText": "2451", + "width": 96, + }, + Object { + "actualText": "2244", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2244", + ], + "originalText": "2244", + "width": 96, + }, + Object { + "actualText": "2333", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2333", + ], + "originalText": "2333", + "width": 96, + }, + Object { + "actualText": "2445", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "2445", + ], + "originalText": "2445", + "width": 96, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom three max text lines 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 56, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom three max text lines 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom three max text lines 3`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 56, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 56, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 103, + }, + Object { + "actualText": "城市城市城市城市城市城市城市城市城市城市...", + "actualTextHeight": 48, + "actualTextWidth": 253, + "height": 56, + "multiLineActualTexts": Array [ + "城市城市城市城", + "市城市城市城市", + "城市城市城市...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 103, + }, + Object { + "actualText": "类别类别类别类别类别类别类别类别类别类别", + "actualTextHeight": 48, + "actualTextWidth": 243, + "height": 56, + "multiLineActualTexts": Array [ + "类别类别类别类", + "别类别类别类别", + "类别类别类别", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 103, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 56, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 103, + }, + Object { + "actualText": "数量数量数量数量数量数量数量数量数量数量...", + "actualTextHeight": 48, + "actualTextWidth": 253, + "height": 56, + "multiLineActualTexts": Array [ + "数量数量数量数", + "量数量数量数量", + "数量数量数量...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom three max text lines 4`] = `Array []`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom three max text lines 5`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江...", + "actualTextHeight": 45, + "actualTextWidth": 253, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省浙江省浙", + "江省浙江省浙江", + "省浙江省浙江...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "杭州市杭州市杭州市杭州市杭州市杭州市杭州...", + "actualTextHeight": 45, + "actualTextWidth": 253, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市杭州市杭", + "州市杭州市杭州", + "市杭州市杭州...", + ], + "originalText": "杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具家具家具家具家具家具家具家具家具家具...", + "actualTextHeight": 45, + "actualTextWidth": 253, + "height": 30, + "multiLineActualTexts": Array [ + "家具家具家具家", + "具家具家具家具", + "家具家具家具...", + ], + "originalText": "家具家具家具家具家具家具家具家具家具家具家具家具家具家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子...", + "actualTextHeight": 45, + "actualTextWidth": 253, + "height": 30, + "multiLineActualTexts": Array [ + "桌子桌子桌子桌", + "子桌子桌子桌子", + "桌子桌子桌子...", + ], + "originalText": "桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 100, + "height": 30, + "multiLineActualTexts": Array [ + "236723672361", + "111", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "7789778977897789778977897789", + "actualTextHeight": 45, + "actualTextWidth": 189, + "height": 30, + "multiLineActualTexts": Array [ + "778977897789", + "778977897789", + "7789", + ], + "originalText": "7789778977897789778977897789", + "width": 103, + }, + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 100, + "height": 30, + "multiLineActualTexts": Array [ + "236723672361", + "111", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 103, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 103, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 103, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 103, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 103, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 103, + }, + Object { + "actualText": "945", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "945", + ], + "originalText": "945", + "width": 103, + }, + Object { + "actualText": "1304", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1304", + ], + "originalText": "1304", + "width": 103, + }, + Object { + "actualText": "1145", + "actualTextHeight": 15, + "actualTextWidth": 26, + "height": 30, + "multiLineActualTexts": Array [ + "1145", + ], + "originalText": "1145", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom two max text lines 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom two max text lines 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom two max text lines 3`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 103, + }, + Object { + "actualText": "城市城市城市城市城市城市城...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 40, + "multiLineActualTexts": Array [ + "城市城市城市城", + "市城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 103, + }, + Object { + "actualText": "类别类别类别类别类别类别类...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 40, + "multiLineActualTexts": Array [ + "类别类别类别类", + "别类别类别类...", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 103, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 40, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 103, + }, + Object { + "actualText": "数量数量数量数量数量数量数...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 40, + "multiLineActualTexts": Array [ + "数量数量数量数", + "量数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom two max text lines 4`] = `Array []`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should custom two max text lines 5`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省浙江省浙江省浙江省浙...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省浙江省浙", + "江省浙江省浙...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "杭州市杭州市杭州市杭州市杭...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市杭州市杭", + "州市杭州市杭...", + ], + "originalText": "杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具家具家具家具家具家具家...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 30, + "multiLineActualTexts": Array [ + "家具家具家具家", + "具家具家具家...", + ], + "originalText": "家具家具家具家具家具家具家具家具家具家具家具家具家具家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子桌子桌子桌子桌子桌子桌...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 30, + "multiLineActualTexts": Array [ + "桌子桌子桌子桌", + "子桌子桌子桌...", + ], + "originalText": "桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 100, + "height": 30, + "multiLineActualTexts": Array [ + "236723672361", + "111", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "77897789778977897789778...", + "actualTextHeight": 30, + "actualTextWidth": 165, + "height": 30, + "multiLineActualTexts": Array [ + "778977897789", + "77897789778...", + ], + "originalText": "7789778977897789778977897789", + "width": 103, + }, + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 100, + "height": 30, + "multiLineActualTexts": Array [ + "236723672361", + "111", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 103, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 103, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 103, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 103, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 103, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 103, + }, + Object { + "actualText": "945", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "945", + ], + "originalText": "945", + "width": 103, + }, + Object { + "actualText": "1304", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1304", + ], + "originalText": "1304", + "width": 103, + }, + Object { + "actualText": "1145", + "actualTextHeight": 15, + "actualTextWidth": 26, + "height": 30, + "multiLineActualTexts": Array [ + "1145", + ], + "originalText": "1145", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should default render one line text 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should default render one line text 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, + Object { + "actualText": "13", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "13", + ], + "originalText": "13", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should default render one line text 3`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 103, + }, + Object { + "actualText": "城市城市城市...", + "actualTextHeight": 16, + "actualTextWidth": 83, + "height": 30, + "multiLineActualTexts": Array [ + "城市城市城市...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 103, + }, + Object { + "actualText": "类别类别类别...", + "actualTextHeight": 16, + "actualTextWidth": 83, + "height": 30, + "multiLineActualTexts": Array [ + "类别类别类别...", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 103, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 103, + }, + Object { + "actualText": "数量数量数量...", + "actualTextHeight": 16, + "actualTextWidth": 83, + "height": 30, + "multiLineActualTexts": Array [ + "数量数量数量...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should default render one line text 4`] = `Array []`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should default render one line text 5`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 30, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, + Object { + "actualText": "13", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 30, + "multiLineActualTexts": Array [ + "13", + ], + "originalText": "13", + "width": 80, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省浙江省...", + "actualTextHeight": 15, + "actualTextWidth": 83, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省浙江省...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "杭州市杭州市...", + "actualTextHeight": 15, + "actualTextWidth": 83, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市杭州市...", + ], + "originalText": "杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 30, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具家具家具...", + "actualTextHeight": 15, + "actualTextWidth": 83, + "height": 30, + "multiLineActualTexts": Array [ + "家具家具家具...", + ], + "originalText": "家具家具家具家具家具家具家具家具家具家具家具家具家具家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 30, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子桌子桌子...", + "actualTextHeight": 15, + "actualTextWidth": 83, + "height": 30, + "multiLineActualTexts": Array [ + "桌子桌子桌子...", + ], + "originalText": "桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 30, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 30, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "23672367236...", + "actualTextHeight": 15, + "actualTextWidth": 84, + "height": 30, + "multiLineActualTexts": Array [ + "23672367236...", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "77897789778...", + "actualTextHeight": 15, + "actualTextWidth": 84, + "height": 30, + "multiLineActualTexts": Array [ + "77897789778...", + ], + "originalText": "7789778977897789778977897789", + "width": 103, + }, + Object { + "actualText": "23672367236...", + "actualTextHeight": 15, + "actualTextWidth": 84, + "height": 30, + "multiLineActualTexts": Array [ + "23672367236...", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 103, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 103, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 103, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 103, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 103, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 103, + }, + Object { + "actualText": "945", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 30, + "multiLineActualTexts": Array [ + "945", + ], + "originalText": "945", + "width": 103, + }, + Object { + "actualText": "1304", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1304", + ], + "originalText": "1304", + "width": 103, + }, + Object { + "actualText": "1145", + "actualTextHeight": 15, + "actualTextWidth": 26, + "height": 30, + "multiLineActualTexts": Array [ + "1145", + ], + "originalText": "1145", + "width": 103, + }, + Object { + "actualText": "1432", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 30, + "multiLineActualTexts": Array [ + "1432", + ], + "originalText": "1432", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should force adaptive adjust cell height if custom cell style less than actual text height 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should force adaptive adjust cell height if custom cell style less than actual text height 2`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 20, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, + Object { + "actualText": "13", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "13", + ], + "originalText": "13", + "width": 80, + }, + Object { + "actualText": "14", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "14", + ], + "originalText": "14", + "width": 80, + }, + Object { + "actualText": "15", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "15", + ], + "originalText": "15", + "width": 80, + }, + Object { + "actualText": "16", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "16", + ], + "originalText": "16", + "width": 80, + }, + Object { + "actualText": "17", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "17", + ], + "originalText": "17", + "width": 80, + }, + Object { + "actualText": "18", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "18", + ], + "originalText": "18", + "width": 80, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should force adaptive adjust cell height if custom cell style less than actual text height 3`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 40, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 103, + }, + Object { + "actualText": "城市城市城市城市城市城市城...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 40, + "multiLineActualTexts": Array [ + "城市城市城市城", + "市城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 103, + }, + Object { + "actualText": "类别类别类别类别类别类别类...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 40, + "multiLineActualTexts": Array [ + "类别类别类别类", + "别类别类别类...", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 103, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 40, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 103, + }, + Object { + "actualText": "数量数量数量数量数量数量数...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 40, + "multiLineActualTexts": Array [ + "数量数量数量数", + "量数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should force adaptive adjust cell height if custom cell style less than actual text height 4`] = `Array []`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should force adaptive adjust cell height if custom cell style less than actual text height 5`] = ` +Array [ + Object { + "actualText": "1", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "1", + ], + "originalText": "1", + "width": 80, + }, + Object { + "actualText": "2", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "2", + ], + "originalText": "2", + "width": 80, + }, + Object { + "actualText": "3", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "3", + ], + "originalText": "3", + "width": 80, + }, + Object { + "actualText": "4", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "4", + ], + "originalText": "4", + "width": 80, + }, + Object { + "actualText": "5", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "5", + ], + "originalText": "5", + "width": 80, + }, + Object { + "actualText": "6", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "6", + ], + "originalText": "6", + "width": 80, + }, + Object { + "actualText": "7", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "7", + ], + "originalText": "7", + "width": 80, + }, + Object { + "actualText": "8", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "8", + ], + "originalText": "8", + "width": 80, + }, + Object { + "actualText": "9", + "actualTextHeight": 15, + "actualTextWidth": 7, + "height": 20, + "multiLineActualTexts": Array [ + "9", + ], + "originalText": "9", + "width": 80, + }, + Object { + "actualText": "10", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "10", + ], + "originalText": "10", + "width": 80, + }, + Object { + "actualText": "11", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 20, + "multiLineActualTexts": Array [ + "11", + ], + "originalText": "11", + "width": 80, + }, + Object { + "actualText": "12", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "12", + ], + "originalText": "12", + "width": 80, + }, + Object { + "actualText": "13", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "13", + ], + "originalText": "13", + "width": 80, + }, + Object { + "actualText": "14", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "14", + ], + "originalText": "14", + "width": 80, + }, + Object { + "actualText": "15", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "15", + ], + "originalText": "15", + "width": 80, + }, + Object { + "actualText": "16", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "16", + ], + "originalText": "16", + "width": 80, + }, + Object { + "actualText": "17", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "17", + ], + "originalText": "17", + "width": 80, + }, + Object { + "actualText": "18", + "actualTextHeight": 15, + "actualTextWidth": 14, + "height": 20, + "multiLineActualTexts": Array [ + "18", + ], + "originalText": "18", + "width": 80, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省浙江省浙江省浙江省浙...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省浙江省浙", + "江省浙江省浙...", + ], + "originalText": "浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "浙江省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "浙江省", + ], + "originalText": "浙江省", + "width": 103, + }, + Object { + "actualText": "四川省", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "四川省", + ], + "originalText": "四川省", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "杭州市杭州市杭州市杭州市杭...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 20, + "multiLineActualTexts": Array [ + "杭州市杭州市杭", + "州市杭州市杭...", + ], + "originalText": "杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "杭州市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "杭州市", + ], + "originalText": "杭州市", + "width": 103, + }, + Object { + "actualText": "绍兴市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "绍兴市", + ], + "originalText": "绍兴市", + "width": 103, + }, + Object { + "actualText": "宁波市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "宁波市", + ], + "originalText": "宁波市", + "width": 103, + }, + Object { + "actualText": "舟山市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "舟山市", + ], + "originalText": "舟山市", + "width": 103, + }, + Object { + "actualText": "成都市", + "actualTextHeight": 15, + "actualTextWidth": 37, + "height": 20, + "multiLineActualTexts": Array [ + "成都市", + ], + "originalText": "成都市", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具家具家具家具家具家具家...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 20, + "multiLineActualTexts": Array [ + "家具家具家具家", + "具家具家具家...", + ], + "originalText": "家具家具家具家具家具家具家具家具家具家具家具家具家具家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "办公用品", + "actualTextHeight": 15, + "actualTextWidth": 49, + "height": 20, + "multiLineActualTexts": Array [ + "办公用品", + ], + "originalText": "办公用品", + "width": 103, + }, + Object { + "actualText": "家具", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "家具", + ], + "originalText": "家具", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子桌子桌子桌子桌子桌子桌...", + "actualTextHeight": 30, + "actualTextWidth": 168, + "height": 20, + "multiLineActualTexts": Array [ + "桌子桌子桌子桌", + "子桌子桌子桌...", + ], + "originalText": "桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "沙发", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "沙发", + ], + "originalText": "沙发", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 20, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 20, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 20, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "笔", + "actualTextHeight": 15, + "actualTextWidth": 13, + "height": 20, + "multiLineActualTexts": Array [ + "笔", + ], + "originalText": "笔", + "width": 103, + }, + Object { + "actualText": "纸张", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "纸张", + ], + "originalText": "纸张", + "width": 103, + }, + Object { + "actualText": "纸张", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "纸张", + ], + "originalText": "纸张", + "width": 103, + }, + Object { + "actualText": "纸张", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "纸张", + ], + "originalText": "纸张", + "width": 103, + }, + Object { + "actualText": "纸张", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "纸张", + ], + "originalText": "纸张", + "width": 103, + }, + Object { + "actualText": "桌子", + "actualTextHeight": 15, + "actualTextWidth": 25, + "height": 20, + "multiLineActualTexts": Array [ + "桌子", + ], + "originalText": "桌子", + "width": 103, + }, + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 100, + "height": 20, + "multiLineActualTexts": Array [ + "236723672361", + "111", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "77897789778977897789778...", + "actualTextHeight": 30, + "actualTextWidth": 165, + "height": 20, + "multiLineActualTexts": Array [ + "778977897789", + "77897789778...", + ], + "originalText": "7789778977897789778977897789", + "width": 103, + }, + Object { + "actualText": "236723672361111", + "actualTextHeight": 30, + "actualTextWidth": 100, + "height": 20, + "multiLineActualTexts": Array [ + "236723672361", + "111", + ], + "originalText": "236723672361111", + "width": 103, + }, + Object { + "actualText": "3877", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "3877", + ], + "originalText": "3877", + "width": 103, + }, + Object { + "actualText": "4342", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "4342", + ], + "originalText": "4342", + "width": 103, + }, + Object { + "actualText": "5343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "5343", + ], + "originalText": "5343", + "width": 103, + }, + Object { + "actualText": "632", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 20, + "multiLineActualTexts": Array [ + "632", + ], + "originalText": "632", + "width": 103, + }, + Object { + "actualText": "7234", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "7234", + ], + "originalText": "7234", + "width": 103, + }, + Object { + "actualText": "834", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 20, + "multiLineActualTexts": Array [ + "834", + ], + "originalText": "834", + "width": 103, + }, + Object { + "actualText": "945", + "actualTextHeight": 15, + "actualTextWidth": 21, + "height": 20, + "multiLineActualTexts": Array [ + "945", + ], + "originalText": "945", + "width": 103, + }, + Object { + "actualText": "1304", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "1304", + ], + "originalText": "1304", + "width": 103, + }, + Object { + "actualText": "1145", + "actualTextHeight": 15, + "actualTextWidth": 26, + "height": 20, + "multiLineActualTexts": Array [ + "1145", + ], + "originalText": "1145", + "width": 103, + }, + Object { + "actualText": "1432", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "1432", + ], + "originalText": "1432", + "width": 103, + }, + Object { + "actualText": "1343", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "1343", + ], + "originalText": "1343", + "width": 103, + }, + Object { + "actualText": "1354", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "1354", + ], + "originalText": "1354", + "width": 103, + }, + Object { + "actualText": "1523", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "1523", + ], + "originalText": "1523", + "width": 103, + }, + Object { + "actualText": "1634", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "1634", + ], + "originalText": "1634", + "width": 103, + }, + Object { + "actualText": "1723", + "actualTextHeight": 15, + "actualTextWidth": 27, + "height": 20, + "multiLineActualTexts": Array [ + "1723", + ], + "originalText": "1723", + "width": 103, + }, +] +`; + +exports[`SpreadSheet Multi Line Text Tests TableSheet should not adaptive adjust cell height if custom cell style more than actual text height 1`] = ` +Array [ + Object { + "actualText": "序号", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 70, + "multiLineActualTexts": Array [ + "序号", + ], + "originalText": "序号", + "width": 80, + }, + Object { + "actualText": "省份", + "actualTextHeight": 16, + "actualTextWidth": 25, + "height": 70, + "multiLineActualTexts": Array [ + "省份", + ], + "originalText": "省份", + "width": 103, + }, + Object { + "actualText": "城市城市城市城市城市城市城...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 70, + "multiLineActualTexts": Array [ + "城市城市城市城", + "市城市城市城...", + ], + "originalText": "城市城市城市城市城市城市城市城市城市城市城市城市", + "width": 103, + }, + Object { + "actualText": "类别类别类别类别类别类别类...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 70, + "multiLineActualTexts": Array [ + "类别类别类别类", + "别类别类别类...", + ], + "originalText": "类别类别类别类别类别类别类别类别类别类别", + "width": 103, + }, + Object { + "actualText": "子类别", + "actualTextHeight": 16, + "actualTextWidth": 37, + "height": 70, + "multiLineActualTexts": Array [ + "子类别", + ], + "originalText": "子类别", + "width": 103, + }, + Object { + "actualText": "数量数量数量数量数量数量数...", + "actualTextHeight": 32, + "actualTextWidth": 168, + "height": 70, + "multiLineActualTexts": Array [ + "数量数量数量数", + "量数量数量数...", + ], + "originalText": "数量数量数量数量数量数量数量数量数量数量数量", + "width": 103, + }, +] +`; diff --git a/packages/s2-core/__tests__/spreadsheet/__snapshots__/theme-spec.ts.snap b/packages/s2-core/__tests__/spreadsheet/__snapshots__/theme-spec.ts.snap index 5c58a90cbd..309bd54147 100644 --- a/packages/s2-core/__tests__/spreadsheet/__snapshots__/theme-spec.ts.snap +++ b/packages/s2-core/__tests__/spreadsheet/__snapshots__/theme-spec.ts.snap @@ -12,9 +12,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#3471F9", @@ -75,18 +78,24 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#FFFFFF", "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "cornerCell": Object { @@ -95,9 +104,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#3471F9", @@ -128,9 +140,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "dataCell": Object { @@ -140,9 +155,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -252,9 +270,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "mergedCell": Object { @@ -264,9 +285,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -376,9 +400,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "prepareSelectMask": Object { @@ -400,6 +427,8 @@ Object { "backgroundOpacity": 1, }, }, + "minCellHeight": 40, + "minCellWidth": 42, "size": 3, }, "rowCell": Object { @@ -409,9 +438,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#F5F8FF", @@ -471,9 +503,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "seriesNumberWidth": 80, "seriesText": Object { @@ -482,9 +517,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#000000", @@ -492,9 +530,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#2C60D4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "scrollBar": Object { @@ -536,9 +577,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#133aad", @@ -599,18 +643,24 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#ffffff", "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "cornerCell": Object { @@ -619,9 +669,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#133aad", @@ -652,9 +705,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "dataCell": Object { @@ -664,9 +720,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#191919", @@ -776,9 +835,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "mergedCell": Object { @@ -788,9 +850,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#191919", @@ -900,9 +965,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "prepareSelectMask": Object { @@ -924,6 +992,8 @@ Object { "backgroundOpacity": 1, }, }, + "minCellHeight": 40, + "minCellWidth": 42, "size": 3, }, "rowCell": Object { @@ -933,9 +1003,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#151a27", @@ -995,9 +1068,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "seriesNumberWidth": 80, "seriesText": Object { @@ -1006,9 +1082,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#dcdcdc", @@ -1016,9 +1095,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#4b91ff", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "scrollBar": Object { @@ -1060,9 +1142,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#E0E9FD", @@ -1123,18 +1208,24 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#000000", "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "cornerCell": Object { @@ -1143,9 +1234,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#E0E9FD", @@ -1176,9 +1270,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "dataCell": Object { @@ -1188,9 +1285,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -1300,9 +1400,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "mergedCell": Object { @@ -1312,9 +1415,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -1424,9 +1530,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "prepareSelectMask": Object { @@ -1448,6 +1557,8 @@ Object { "backgroundOpacity": 1, }, }, + "minCellHeight": 40, + "minCellWidth": 42, "size": 3, }, "rowCell": Object { @@ -1457,9 +1568,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#F5F8FE", @@ -1519,9 +1633,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "seriesNumberWidth": 80, "seriesText": Object { @@ -1530,9 +1647,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#000000", @@ -1540,9 +1660,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "scrollBar": Object { @@ -1584,9 +1707,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#E0E9FD", @@ -1647,18 +1773,24 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#000000", "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "cornerCell": Object { @@ -1667,9 +1799,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#E0E9FD", @@ -1700,9 +1835,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "dataCell": Object { @@ -1712,9 +1850,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -1824,9 +1965,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "mergedCell": Object { @@ -1836,9 +1980,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -1948,9 +2095,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "prepareSelectMask": Object { @@ -1972,6 +2122,8 @@ Object { "backgroundOpacity": 1, }, }, + "minCellHeight": 40, + "minCellWidth": 42, "size": 3, }, "rowCell": Object { @@ -1981,9 +2133,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#F5F8FE", @@ -2043,9 +2198,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "seriesNumberWidth": 80, "seriesText": Object { @@ -2054,9 +2212,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#000000", @@ -2064,9 +2225,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#326EF4", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "scrollBar": Object { @@ -2108,9 +2272,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#F0F2F4", @@ -2171,18 +2338,24 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#000000", "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": "normal", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "cornerCell": Object { @@ -2191,9 +2364,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#F0F2F4", @@ -2224,9 +2400,12 @@ Object { "fontFamily": "Roboto, PingFangSC, Microsoft YaHei, Arial, sans-serif", "fontSize": 12, "fontWeight": 700, + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "dataCell": Object { @@ -2236,9 +2415,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -2348,9 +2530,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "mergedCell": Object { @@ -2360,9 +2545,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FFFFFF", @@ -2472,9 +2660,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "right", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "prepareSelectMask": Object { @@ -2496,6 +2687,8 @@ Object { "backgroundOpacity": 1, }, }, + "minCellHeight": 40, + "minCellWidth": 42, "size": 3, }, "rowCell": Object { @@ -2505,9 +2698,12 @@ Object { "fontSize": 12, "fontWeight": 700, "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "cell": Object { "backgroundColor": "#FAFBFB", @@ -2567,9 +2763,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "seriesNumberWidth": 80, "seriesText": Object { @@ -2578,9 +2777,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "center", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, "text": Object { "fill": "#000000", @@ -2588,9 +2790,12 @@ Object { "fontSize": 12, "fontWeight": "normal", "linkTextFill": "#565C64", + "maxLines": 1, "opacity": 1, "textAlign": "left", "textBaseline": "middle", + "textOverflow": "ellipsis", + "wordWrap": true, }, }, "scrollBar": Object { diff --git a/packages/s2-core/__tests__/spreadsheet/hidden-columns-spec.ts b/packages/s2-core/__tests__/spreadsheet/hidden-columns-spec.ts index 091737f76d..ac6c7760e1 100644 --- a/packages/s2-core/__tests__/spreadsheet/hidden-columns-spec.ts +++ b/packages/s2-core/__tests__/spreadsheet/hidden-columns-spec.ts @@ -2,10 +2,10 @@ import { difference, pick } from 'lodash'; import * as mockDataConfig from 'tests/data/mock-dataset.json'; import * as mockPivotDataConfig from 'tests/data/simple-data.json'; import * as mockTableDataConfig from 'tests/data/simple-table-data.json'; -import { getContainer } from 'tests/util/helpers'; import { waitForRender } from 'tests/util'; -import { customColMultipleColumns } from '../data/custom-table-col-fields'; +import { getContainer } from 'tests/util/helpers'; import { customColGridSimpleFields } from '../data/custom-grid-simple-fields'; +import { customColMultipleColumns } from '../data/custom-table-col-fields'; import { PivotSheet, TableSheet } from '@/sheet-type'; import type { HiddenColumnsInfo, S2Options } from '@/common'; @@ -46,8 +46,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { test('should hide column correctly', async () => { const hiddenColumns = ['cost']; - await waitForRender(tableSheet, () => { - tableSheet.interaction.hideColumns(hiddenColumns); + await waitForRender(tableSheet, async () => { + await tableSheet.interaction.hideColumns(hiddenColumns); }); const hiddenColumnsDetail = tableSheet.store.get( @@ -72,8 +72,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { test('should hide multiple columns correctly', async () => { const hiddenColumns = ['price', 'city']; - await waitForRender(tableSheet, () => { - tableSheet.interaction.hideColumns(hiddenColumns); + await waitForRender(tableSheet, async () => { + await tableSheet.interaction.hideColumns(hiddenColumns); }); const hiddenColumnsDetail = tableSheet.store.get( @@ -110,8 +110,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { test('should hide closer group columns correctly', async () => { const hiddenColumns = ['cost', 'province']; - await waitForRender(tableSheet, () => { - tableSheet.interaction.hideColumns(hiddenColumns); + await waitForRender(tableSheet, async () => { + await tableSheet.interaction.hideColumns(hiddenColumns); }); const hiddenColumnsDetail = tableSheet.store.get( @@ -161,6 +161,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { expect(costDetail.displaySiblingNode.next?.field).toEqual('province'); expect(costDetail.hideColumnNodes).toHaveLength(1); expect(costDetail.hideColumnNodes[0].field).toEqual('cost'); + + sheet.destroy(); }); test('should hide columns for multiple columns', async () => { @@ -175,8 +177,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { }, }); await tableSheet.render(); - await waitForRender(tableSheet, () => { - tableSheet.interaction.hideColumns(hiddenColumns); + await waitForRender(tableSheet, async () => { + await tableSheet.interaction.hideColumns(hiddenColumns); }); const hiddenColumnsDetail = tableSheet.store.get( @@ -240,8 +242,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { test('should hide column correctly', async () => { const hiddenColumns = [typePriceColumnId]; - await waitForRender(pivotSheet, () => { - pivotSheet.interaction.hideColumns(hiddenColumns); + await waitForRender(pivotSheet, async () => { + await pivotSheet.interaction.hideColumns(hiddenColumns); }); const hiddenColumnsDetail = pivotSheet.store.get( @@ -268,8 +270,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { test('should hide multiple columns correctly', async () => { const hiddenColumns = [typePriceColumnId, cityPriceColumnId]; - await waitForRender(pivotSheet, () => { - pivotSheet.interaction.hideColumns(hiddenColumns); + await waitForRender(pivotSheet, async () => { + await pivotSheet.interaction.hideColumns(hiddenColumns); }); const hiddenColumnsDetail = pivotSheet.store.get( 'hiddenColumnsDetail', @@ -360,6 +362,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { ); expect(priceDetail.hideColumnNodes).toHaveLength(1); expect(priceDetail.hideColumnNodes[0].id).toEqual(typePriceColumnId); + + sheet.destroy(); }); // https://github.com/antvis/S2/issues/1993 @@ -390,8 +394,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { }, }); await pivotSheet.render(); - await waitForRender(pivotSheet, () => { - pivotSheet.interaction.hideColumns([nodeId]); + await waitForRender(pivotSheet, async () => { + await pivotSheet.interaction.hideColumns([nodeId]); }); const grandTotalsNode = pivotSheet.facet @@ -426,8 +430,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { fields: customColGridSimpleFields, }); await pivotSheet.render(); - await waitForRender(pivotSheet, () => { - pivotSheet.interaction.hideColumns(hiddenColumns); + await waitForRender(pivotSheet, async () => { + await pivotSheet.interaction.hideColumns(hiddenColumns); }); const hiddenColumnsDetail = pivotSheet.store.get( @@ -504,8 +508,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { { id: 'root[&]总计', x: 0, width: 288 }, { id: 'root[&]家具[&]小计', x: 96, width: 192 }, ])('should hide totals node for %o', async ({ id, x, width }) => { - await waitForRender(sheet, () => { - sheet.interaction.hideColumns([id]); + await waitForRender(sheet, async () => { + await sheet.interaction.hideColumns([id]); }); const totalsSiblingNode = sheet.facet @@ -526,8 +530,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { 'root[&]办公用品[&]笔[&]number', ]; - await waitForRender(sheet, () => { - sheet.interaction.hideColumns(nodeIds); + await waitForRender(sheet, async () => { + await sheet.interaction.hideColumns(nodeIds); }); expect( @@ -540,13 +544,13 @@ describe('SpreadSheet Hidden Columns Tests', () => { test('should render correct row corner after hide measure node', async () => { const nodeIds = [ 'root[&]总计', - 'root[&]小计', + 'root[&]家具[&]小计', 'root[&]家具[&]桌子[&]number', 'root[&]办公用品[&]笔[&]number', ]; - await waitForRender(sheet, () => { - sheet.interaction.hideColumns(nodeIds); + await waitForRender(sheet, async () => { + await sheet.interaction.hideColumns(nodeIds); }); const cornerNodes = sheet.facet.getCornerNodes(); @@ -555,32 +559,34 @@ describe('SpreadSheet Hidden Columns Tests', () => { ); // 避免采样的节点被隐藏后, 影响角头坐标计算 - expect( - sheet.facet.getLayoutResult().colsHierarchy.sampleNodeForLastLevel?.y, - ).toStrictEqual(60); + const { colsHierarchy } = sheet.facet.getLayoutResult(); + + expect(colsHierarchy.sampleNodeForLastLevel?.height).toStrictEqual(30); + expect(colsHierarchy.sampleNodeForLastLevel?.y).toStrictEqual(60); + expect(colsHierarchy.height).toStrictEqual(90); expect(colCornerNodesMeta).toMatchInlineSnapshot(` Array [ Object { "height": 30, - "width": 99, + "width": 119, "x": 0, "y": 60, }, Object { "height": 30, - "width": 99, - "x": 99, + "width": 119, + "x": 119, "y": 60, }, Object { "height": 30, - "width": 198, + "width": 238, "x": 0, "y": 0, }, Object { "height": 30, - "width": 198, + "width": 238, "x": 0, "y": 30, }, @@ -602,8 +608,8 @@ describe('SpreadSheet Hidden Columns Tests', () => { }, }); await sheet.render(); - await waitForRender(sheet, () => { - sheet.interaction.hideColumns([nodeId]); + await waitForRender(sheet, async () => { + await sheet.interaction.hideColumns([nodeId]); }); const leafNodes = sheet.facet.getColLeafNodes(); diff --git a/packages/s2-core/__tests__/spreadsheet/layout-hooks-spec.ts b/packages/s2-core/__tests__/spreadsheet/layout-hooks-spec.ts index 7539423bc2..f65d059715 100644 --- a/packages/s2-core/__tests__/spreadsheet/layout-hooks-spec.ts +++ b/packages/s2-core/__tests__/spreadsheet/layout-hooks-spec.ts @@ -136,10 +136,6 @@ const s2Options: S2Options = { collapseAll: false, width: 120, }, - colCell: { - widthByField: {}, - heightByField: {}, - }, dataCell: { height: 32, }, @@ -164,7 +160,7 @@ describe('layout hooks spec', () => { test('layout arrange hook', () => { const rowLeafNodes = s2.facet.getRowLeafNodes(); - let arrangeValues; + let arrangeValues: string[]; if (s2.isHierarchyTreeType()) { arrangeValues = rowLeafNodes.slice(2, 5).map((v) => v.value); @@ -177,7 +173,7 @@ describe('layout hooks spec', () => { test('layout hierarchy hook', () => { const rowLeafNodes = s2.facet.getRowLeafNodes(); - let addValues; + let addValues: string[]; if (s2.isHierarchyTreeType()) { addValues = rowLeafNodes.slice(5, 8).map((v) => v.value); diff --git a/packages/s2-core/__tests__/spreadsheet/multi-line-text-spec.ts b/packages/s2-core/__tests__/spreadsheet/multi-line-text-spec.ts new file mode 100644 index 0000000000..051971d89d --- /dev/null +++ b/packages/s2-core/__tests__/spreadsheet/multi-line-text-spec.ts @@ -0,0 +1,399 @@ +/* eslint-disable jest/expect-expect */ +import { getContainer } from 'tests/util/helpers'; +import { PivotSheet, TableSheet, type SpreadSheet } from '../../src'; +import type { DefaultCellTheme, S2CellType, S2Options } from '../../src/common'; +import { + PivotSheetMultiLineTextDataCfg, + TableSheetMultiLineTextDataCfg, +} from '../data/data-multi-line-text'; + +describe('SpreadSheet Multi Line Text Tests', () => { + let s2: SpreadSheet; + + const mapCells = (cells: S2CellType[]) => { + return cells.map((cell) => { + const meta = cell.getMeta(); + + return { + actualText: cell.getActualText(), + originalText: cell.getOriginalText(), + actualTextWidth: Math.floor(cell.getMultiLineActualTextWidth()), + actualTextHeight: Math.floor(cell.getMultiLineActualTextHeight()), + multiLineActualTexts: cell.getMultiLineActualTexts(), + width: meta.width, + height: meta.height, + }; + }); + }; + + const updateTheme = (maxLines: number) => { + const cellTheme: DefaultCellTheme = { + text: { + maxLines, + }, + bolderText: { + maxLines, + }, + measureText: { + maxLines, + }, + }; + + s2.setTheme({ + seriesNumberCell: cellTheme, + colCell: cellTheme, + cornerCell: cellTheme, + rowCell: cellTheme, + dataCell: cellTheme, + }); + }; + + const expectHierarchyHeight = ( + height: number, + lastLevelY: number = 60, + lastLevelHeight: number = 30, + sampleNodesForAllLevelsTotals = 3, + ) => { + const { colsHierarchy } = s2.facet.getLayoutResult(); + + expect(colsHierarchy.height).toEqual(height); + expect(colsHierarchy.sampleNodesForAllLevels).toHaveLength( + sampleNodesForAllLevelsTotals, + ); + expect(colsHierarchy.sampleNodeForLastLevel?.y).toEqual(lastLevelY); + expect(colsHierarchy.sampleNodeForLastLevel?.height).toEqual( + lastLevelHeight, + ); + }; + + const setupTotalsOptions = (showGrandTotals = true, showSubTotals = true) => { + s2.setOptions({ + totals: { + col: { + showGrandTotals, + showSubTotals, + reverseGrandTotalsLayout: true, + reverseSubTotalsLayout: true, + subTotalsDimensions: ['type'], + }, + row: { + showGrandTotals, + showSubTotals, + reverseGrandTotalsLayout: true, + reverseSubTotalsLayout: true, + subTotalsDimensions: ['province'], + }, + }, + }); + + s2.changeSheetSize(600, 400); + }; + + const getCells = () => [ + s2.facet.getCornerCells(), + s2.facet.getSeriesNumberCells(), + s2.facet.getColCells(), + s2.facet.getRowCells(), + s2.facet.getDataCells(), + ]; + + describe('PivotSheet', () => { + const s2Options: S2Options = { + width: 300, + height: 400, + showSeriesNumber: true, + }; + + beforeEach(async () => { + s2 = new PivotSheet( + getContainer(), + PivotSheetMultiLineTextDataCfg, + s2Options, + ); + await s2.render(); + }); + + afterEach(() => { + s2.destroy(); + }); + + test('should default render one line text', () => { + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + expectHierarchyHeight(90); + }); + + test('should custom two max text lines', async () => { + updateTheme(2); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + expectHierarchyHeight(118, 80, 38); + }); + + test('should custom three max text lines', async () => { + updateTheme(3); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + + expectHierarchyHeight(165, 112, 53); + }); + + test('should render custom text overflow text', async () => { + const cellTheme: DefaultCellTheme = { + text: { + textOverflow: '@@@', + maxLines: 1, + }, + bolderText: { + textOverflow: '我是省略号', + maxLines: 1, + }, + measureText: { + textOverflow: '😸', + maxLines: 1, + }, + }; + + s2.setTheme({ + seriesNumberCell: cellTheme, + colCell: cellTheme, + cornerCell: cellTheme, + rowCell: cellTheme, + dataCell: cellTheme, + }); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + expectHierarchyHeight(90); + }); + + test('should not render word wrap text', async () => { + const cellTheme: DefaultCellTheme = { + text: { + wordWrap: false, + }, + bolderText: { + wordWrap: false, + }, + measureText: { + wordWrap: false, + }, + }; + + s2.setTheme({ + seriesNumberCell: cellTheme, + colCell: cellTheme, + cornerCell: cellTheme, + rowCell: cellTheme, + dataCell: cellTheme, + }); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + + // wordWrap 关闭时, 不会渲染省略号 + cells.forEach((cell) => { + expect(cell.getActualText()).not.toContain('...'); + }); + }); + expectHierarchyHeight(90); + }); + + test('should force adaptive adjust cell height if custom cell style less than actual text height', async () => { + s2.setOptions({ + style: { + rowCell: { + height: 20, + heightByField: { + city: 10, + }, + }, + colCell: { + height: 20, + }, + dataCell: { + height: 20, + }, + }, + }); + + updateTheme(2); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + expectHierarchyHeight(118, 80, 38); + }); + + test('should not adaptive adjust cell height if custom cell style more than actual text height', async () => { + const CUSTOM_CELL_HEIGHT = 70; + + s2.setOptions({ + style: { + rowCell: { + height: CUSTOM_CELL_HEIGHT, + }, + colCell: { + height: CUSTOM_CELL_HEIGHT, + }, + dataCell: { + height: CUSTOM_CELL_HEIGHT, + }, + }, + }); + + updateTheme(2); + await s2.render(false); + + [ + s2.facet.getCornerCells(), + s2.facet.getColLeafCells(), + s2.facet.getRowLeafCells(), + s2.facet.getDataCells(), + ].forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + + cells.forEach((cell) => { + expect(cell.getMeta().height).toEqual(CUSTOM_CELL_HEIGHT); + }); + }); + + expectHierarchyHeight(210, 140, 70); + }); + + test('should render correctly layout if enable totals', async () => { + setupTotalsOptions(); + await s2.render(false); + + expectHierarchyHeight(90, 60, 30); + }); + + test('should render correctly layout if enable totals for multiple text lines', async () => { + setupTotalsOptions(); + updateTheme(3); + await s2.render(false); + + expectHierarchyHeight(165, 112, 53); + }); + + test('should render correctly layout if only enable grand totals', async () => { + setupTotalsOptions(true, false); + await s2.render(false); + + expectHierarchyHeight(90, 60, 30); + }); + + test('should render correctly layout if only enable sub totals', async () => { + setupTotalsOptions(false, true); + await s2.render(false); + + expectHierarchyHeight(90, 60, 30); + }); + }); + + describe('TableSheet', () => { + const s2Options: S2Options = { + width: 600, + height: 400, + showSeriesNumber: true, + }; + + beforeEach(async () => { + s2 = new TableSheet( + getContainer(), + TableSheetMultiLineTextDataCfg, + s2Options, + ); + await s2.render(); + }); + + afterEach(() => { + s2.destroy(); + }); + + test('should default render one line text', () => { + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + expectHierarchyHeight(30, 0, 30, 1); + }); + + test('should custom two max text lines', async () => { + updateTheme(2); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + expectHierarchyHeight(40, 0, 40, 1); + }); + + test('should custom three max text lines', async () => { + updateTheme(3); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + + expectHierarchyHeight(56, 0, 56, 1); + }); + + test('should force adaptive adjust cell height if custom cell style less than actual text height', async () => { + s2.setOptions({ + style: { + colCell: { + height: 20, + }, + dataCell: { + height: 20, + }, + }, + }); + + updateTheme(2); + await s2.render(false); + + getCells().forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + }); + expectHierarchyHeight(40, 0, 40, 1); + }); + + test('should not adaptive adjust cell height if custom cell style more than actual text height', async () => { + const CUSTOM_CELL_HEIGHT = 70; + + s2.setOptions({ + style: { + colCell: { + height: CUSTOM_CELL_HEIGHT, + }, + }, + }); + + updateTheme(2); + await s2.render(false); + + [s2.facet.getColLeafCells()].forEach((cells) => { + expect(mapCells(cells)).toMatchSnapshot(); + + cells.forEach((cell) => { + expect(cell.getMeta().height).toEqual(CUSTOM_CELL_HEIGHT); + }); + }); + + expectHierarchyHeight(70, 0, 70, 1); + }); + }); +}); diff --git a/packages/s2-core/__tests__/unit/cell/data-cell-spec.ts b/packages/s2-core/__tests__/unit/cell/data-cell-spec.ts index 4f6f24f8fa..e3a531b48d 100644 --- a/packages/s2-core/__tests__/unit/cell/data-cell-spec.ts +++ b/packages/s2-core/__tests__/unit/cell/data-cell-spec.ts @@ -5,13 +5,13 @@ import { createPivotSheet, createTableSheet } from 'tests/util/helpers'; import { DataCell } from '@/cell'; import type { TextAlign } from '@/common'; import { + CellType, GuiIcon, - type Formatter, - type ViewMeta, S2Event, + type Formatter, type OriginalEvent, type S2CellType, - CellType, + type ViewMeta, } from '@/common'; import { EXTRA_FIELD, VALUE_FIELD } from '@/common/constant/basic'; import { @@ -21,7 +21,6 @@ import { import { PivotDataSet } from '@/data-set'; import type { PivotFacet } from '@/facet'; import { PivotSheet, SpreadSheet } from '@/sheet-type'; -import { renderText } from '@/utils/g-renders'; const MockPivotSheet = PivotSheet as unknown as jest.Mock; const MockPivotDataSet = PivotDataSet as unknown as jest.Mock; @@ -189,9 +188,8 @@ describe('Data Cell Tests', () => { test('should add text shape', () => { const dataCell = new DataCell(meta, s2); - const textShape = renderText(dataCell, [], { x: 0, y: 0, text: 'test' }); - dataCell.addTextShape(textShape); + dataCell.renderTextShape({ x: 0, y: 0, text: 'test' }); expect(dataCell.getTextShapes()).toHaveLength(2); }); @@ -209,6 +207,7 @@ describe('Data Cell Tests', () => { expect(dataCell.getConditionIconShapes()).toBeEmpty(); }); }); + describe('Condition by formattedValue Tests', () => { const s2 = createPivotSheet( { diff --git a/packages/s2-core/__tests__/unit/facet/pivot-facet-spec.ts b/packages/s2-core/__tests__/unit/facet/pivot-facet-spec.ts index 0890e45174..83d37f218b 100644 --- a/packages/s2-core/__tests__/unit/facet/pivot-facet-spec.ts +++ b/packages/s2-core/__tests__/unit/facet/pivot-facet-spec.ts @@ -7,7 +7,7 @@ import { size, find } from 'lodash'; import { Renderer } from '@antv/g-canvas'; import { getMockPivotMeta } from './util'; import { Node } from '@/facet/layout/node'; -import { DEFAULT_TREE_ROW_WIDTH } from '@/common/constant/options'; +import { DEFAULT_TREE_ROW_CELL_WIDTH } from '@/common/constant/options'; import type { PanelScrollGroup } from '@/group/panel-scroll-group'; import { SpreadSheet } from '@/sheet-type'; import { PivotDataSet } from '@/data-set/pivot-data-set'; @@ -239,11 +239,11 @@ describe('Pivot Mode Facet Test', () => { expect(rowsHierarchy.getLeaves()).toHaveLength(8); expect(rowsHierarchy.getNodes()).toHaveLength(10); - expect(rowsHierarchy.width).toBe(DEFAULT_TREE_ROW_WIDTH); + expect(rowsHierarchy.width).toBe(DEFAULT_TREE_ROW_CELL_WIDTH); expect(rowCell?.width).toBeUndefined(); rowsHierarchy.getNodes().forEach((node, index) => { - expect(node.width).toBe(DEFAULT_TREE_ROW_WIDTH); + expect(node.width).toBe(DEFAULT_TREE_ROW_CELL_WIDTH); expect(node.height).toBe(dataCell!.height!); expect(node.x).toBe(0); expect(node.y).toBe(node.height * index); diff --git a/packages/s2-core/__tests__/unit/facet/table-facet-spec.ts b/packages/s2-core/__tests__/unit/facet/table-facet-spec.ts index 1b1615755e..7a8f38966f 100644 --- a/packages/s2-core/__tests__/unit/facet/table-facet-spec.ts +++ b/packages/s2-core/__tests__/unit/facet/table-facet-spec.ts @@ -46,12 +46,13 @@ jest.mock('@/sheet-type', () => { isTableMode: jest.fn().mockReturnValue(true), isPivotMode: jest.fn(), getTotalsConfig: jest.fn(), - getLayoutWidthType: jest.fn().mockRejectedValue('adaptive'), + getLayoutWidthType: jest.fn().mockReturnValue('adaptive'), emit: jest.fn(), facet: { getColLeafNodes: jest.fn().mockReturnValue([]), getColNodes: jest.fn().mockReturnValue([]), getHiddenColumnsInfo: jest.fn(), + getColNodeHeight: jest.fn(), }, isHierarchyTreeType: jest.fn(), getCanvasElement: () => @@ -59,6 +60,8 @@ jest.mock('@/sheet-type', () => { hideTooltip: jest.fn(), interaction: { clearHoverTimer: jest.fn(), + getState: jest.fn(), + getCells: jest.fn(() => []), }, enableFrozenHeaders() { return false; diff --git a/packages/s2-core/__tests__/unit/interaction/base-interaction/click/row-column-click-spec.ts b/packages/s2-core/__tests__/unit/interaction/base-interaction/click/row-column-click-spec.ts index 162cc08ad0..b911a822af 100644 --- a/packages/s2-core/__tests__/unit/interaction/base-interaction/click/row-column-click-spec.ts +++ b/packages/s2-core/__tests__/unit/interaction/base-interaction/click/row-column-click-spec.ts @@ -277,7 +277,7 @@ describe('Interaction Row & Column Cell Click Tests', () => { expect(s2.render).toHaveBeenCalled(); }); - test('should hidden columns correctly', () => { + test('should hidden columns correctly', async () => { const resetSpy = jest .spyOn(s2.interaction, 'reset') .mockImplementationOnce(() => {}); @@ -287,7 +287,7 @@ describe('Interaction Row & Column Cell Click Tests', () => { s2.on(S2Event.COL_CELL_HIDDEN, columnsHidden); // trigger hidden icon click - rowColumnClick.hideSelectedColumns(); + await rowColumnClick.hideSelectedColumns(); // emit event expect(columnsHidden).toHaveBeenCalledWith( diff --git a/packages/s2-core/__tests__/unit/interaction/base-interaction/hover-spec.ts b/packages/s2-core/__tests__/unit/interaction/base-interaction/hover-spec.ts index 85c1b16cab..42bfa5ec4d 100644 --- a/packages/s2-core/__tests__/unit/interaction/base-interaction/hover-spec.ts +++ b/packages/s2-core/__tests__/unit/interaction/base-interaction/hover-spec.ts @@ -1,5 +1,9 @@ import { omit } from 'lodash'; -import { createFakeSpreadSheet, sleep } from 'tests/util/helpers'; +import { + createFakeSpreadSheet, + createFederatedMouseEvent, + sleep, +} from 'tests/util/helpers'; import type { GEvent } from '@/index'; import type { CellEventTarget, S2Options, ViewMeta } from '@/common/interface'; import { HoverEvent } from '@/interaction/base-interaction/hover'; @@ -47,6 +51,7 @@ describe('Interaction Hover Tests', () => { return mockCell; }, + isTextOverflowing: jest.fn(() => true), getActualText: () => ELLIPSIS_SYMBOL, getFieldValue: () => '', cellType: 'dataCell', @@ -166,12 +171,9 @@ describe('Interaction Hover Tests', () => { // click date cell before will trigger hover focus await sleep(HOVER_FOCUS_DURATION - 200); - const mockEvent = { - preventDefault: () => {}, - originalEvent: {}, - }; + const event = createFederatedMouseEvent(s2, OriginEventType.MOUSE_DOWN); - s2.container.emit(OriginEventType.MOUSE_DOWN, mockEvent); + s2.container.dispatchEvent(event); await sleep(200); @@ -304,8 +306,9 @@ describe('Interaction Hover Tests', () => { return mockCell; }, - getActualText: () => 'test', + getActualText: () => `test`, getFieldValue: () => 'test', + isTextOverflowing: jest.fn(() => false), cellType: 'dataCell', }) as any; diff --git a/packages/s2-core/__tests__/unit/interaction/event-controller-spec.ts b/packages/s2-core/__tests__/unit/interaction/event-controller-spec.ts index f18aad9fe1..ba67172c53 100644 --- a/packages/s2-core/__tests__/unit/interaction/event-controller-spec.ts +++ b/packages/s2-core/__tests__/unit/interaction/event-controller-spec.ts @@ -137,6 +137,7 @@ describe('Interaction Event Controller Tests', () => { ); spreadsheet.interaction.reset = jest.fn(); spreadsheet.interaction.removeIntercepts = jest.fn(); + spreadsheet.interaction.hasIntercepts = jest.fn(); spreadsheet.interaction.intercepts.clear(); spreadsheet.getCell = () => ({}) as any; spreadsheet.options = s2Options; @@ -483,6 +484,7 @@ describe('Interaction Event Controller Tests', () => { spreadsheet.interaction.addIntercepts([ InterceptType.DATA_CELL_BRUSH_SELECTION, ]); + spreadsheet.interaction.hasIntercepts = jest.fn(() => true); const reset = jest.fn(); spreadsheet.on(S2Event.GLOBAL_RESET, reset); @@ -491,6 +493,7 @@ describe('Interaction Event Controller Tests', () => { expect(spreadsheet.interaction.removeIntercepts).toHaveBeenCalled(); expect(reset).not.toHaveBeenCalled(); + spreadsheet.interaction.hasIntercepts = jest.fn(); }); test('should not reset if current mouse on the canvas container', () => { diff --git a/packages/s2-core/__tests__/unit/interaction/root-spec.ts b/packages/s2-core/__tests__/unit/interaction/root-spec.ts index 0b3965782e..e35b3123e0 100644 --- a/packages/s2-core/__tests__/unit/interaction/root-spec.ts +++ b/packages/s2-core/__tests__/unit/interaction/root-spec.ts @@ -231,12 +231,12 @@ describe('RootInteraction Tests', () => { expect(unmergeCell).toHaveBeenCalled(); }); - test('should call hideColumns', () => { + test('should call hideColumns', async () => { const hideColumnsSpy = jest .spyOn(rootInteraction, 'hideColumns') - .mockImplementation(() => {}); + .mockImplementation(() => Promise.resolve()); - rootInteraction.hideColumns(['field1']); + await rootInteraction.hideColumns(['field1']); expect(hideColumnsSpy).toHaveBeenCalledTimes(1); }); diff --git a/packages/s2-core/__tests__/unit/interaction/row-column-resize-spec.ts b/packages/s2-core/__tests__/unit/interaction/row-column-resize-spec.ts index 1e299d9600..26b133a534 100644 --- a/packages/s2-core/__tests__/unit/interaction/row-column-resize-spec.ts +++ b/packages/s2-core/__tests__/unit/interaction/row-column-resize-spec.ts @@ -260,7 +260,7 @@ describe('Interaction Row Column Resize Tests', () => { height: 0, isResizeArea: true, effect: ResizeAreaEffect.Cell, - resizedWidth: 40, + resizedWidth: 42, resizedHeight: 0, size: 3, meta: { @@ -304,9 +304,9 @@ describe('Interaction Row Column Resize Tests', () => { info: resizeInfo, style: { colCell: { - width: 40, + width: resizeInfo.resizedWidth!, widthByField: { - [resizeInfo.meta.field!]: 40, + [resizeInfo.meta.field!]: resizeInfo.resizedWidth!, }, }, }, @@ -317,11 +317,11 @@ describe('Interaction Row Column Resize Tests', () => { // update style options expect(s2.options.style!.colCell).toEqual({ - width: 40, + width: resizeInfo.resizedWidth!, height: 30, heightByField: null, widthByField: { - [resizeInfo.meta.field!]: 40, + [resizeInfo.meta.field!]: resizeInfo.resizedWidth!, }, }); @@ -768,7 +768,7 @@ describe('Interaction Row Column Resize Tests', () => { expect(disable).toHaveBeenCalledWith({ ...resizeInfo, resizedWidth: 0, - resizedHeight: 16, + resizedHeight: 40, }); emitResizeEvent( diff --git a/packages/s2-core/__tests__/unit/sheet-type/pivot-sheet-spec.ts b/packages/s2-core/__tests__/unit/sheet-type/pivot-sheet-spec.ts index 2597b9380e..1b02c7e310 100644 --- a/packages/s2-core/__tests__/unit/sheet-type/pivot-sheet-spec.ts +++ b/packages/s2-core/__tests__/unit/sheet-type/pivot-sheet-spec.ts @@ -40,7 +40,7 @@ jest.mock('@/utils/hide-columns'); import { hideColumnsByThunkGroup } from '@/utils/hide-columns'; const mockHideColumnsByThunkGroup = - hideColumnsByThunkGroup as jest.Mock; + hideColumnsByThunkGroup as unknown as jest.Mock; const originalDataCfg = cloneDeep(dataCfg); @@ -944,7 +944,7 @@ describe('PivotSheet Tests', () => { .mockImplementation((_, __, options) => { return { forceRender: options?.forceRender, - }; + } as unknown as void; }); const nodeMeta = new Node({ id: '1', field: '1', value: 'testValue' }); diff --git a/packages/s2-core/__tests__/unit/utils/hide-columns-spec.ts b/packages/s2-core/__tests__/unit/utils/hide-columns-spec.ts index 53a69970df..fd08727dc0 100644 --- a/packages/s2-core/__tests__/unit/utils/hide-columns-spec.ts +++ b/packages/s2-core/__tests__/unit/utils/hide-columns-spec.ts @@ -323,8 +323,8 @@ describe('Hide Columns Tests', () => { ]); }); - test('should hidden group columns', () => { - hideColumnsByThunkGroup(mockSpreadSheetInstance, ['1', '3']); + test('should hidden group columns', async () => { + await hideColumnsByThunkGroup(mockSpreadSheetInstance, ['1', '3']); expect(mockSpreadSheetInstance.store.get('hiddenColumnsDetail')).toEqual([ { @@ -344,18 +344,18 @@ describe('Hide Columns Tests', () => { ]); }); - test('should skip hidden group columns if hidden column fields not change', () => { - hideColumnsByThunkGroup(mockSpreadSheetInstance, []); + test('should skip hidden group columns if hidden column fields not change', async () => { + await hideColumnsByThunkGroup(mockSpreadSheetInstance, []); expect(mockSpreadSheetInstance.render).not.toHaveBeenCalled(); }); - test('should clear hidden group columns detail and options if hidden column fields isEmpty and enable force update', () => { + test('should clear hidden group columns detail and options if hidden column fields isEmpty and enable force update', async () => { mockSpreadSheetInstance.store.set('hiddenColumnsDetail', [ null, ] as unknown as HiddenColumnsInfo[]); - hideColumnsByThunkGroup(mockSpreadSheetInstance, [], true); + await hideColumnsByThunkGroup(mockSpreadSheetInstance, [], true); expect(mockSpreadSheetInstance.render).toHaveReturnedTimes(1); expect(mockSpreadSheetInstance.interaction.reset).toHaveBeenCalledTimes(1); diff --git a/packages/s2-core/__tests__/util/helpers.ts b/packages/s2-core/__tests__/util/helpers.ts index 53c0ba652e..35e9226cda 100644 --- a/packages/s2-core/__tests__/util/helpers.ts +++ b/packages/s2-core/__tests__/util/helpers.ts @@ -161,30 +161,6 @@ export const createFakeSpreadSheet = () => { return s2; }; -// 可借助 tiny gradient 完成功能更全面的颜色过渡 -export function getGradient( - rate: number, - startColor: string, - endColor: string, -) { - function toGgb(color: string) { - color = color.slice(1); - const r = parseInt(color.substring(0, 2), 16); - const g = parseInt(color.substring(2, 4), 16); - const b = parseInt(color.substring(4, 6), 16); - - return [r, g, b]; - } - - const start = toGgb(startColor); - const end = toGgb(endColor); - const r = start[0] + (end[0] - start[0]) * rate; - const g = start[1] + (end[1] - start[1]) * rate; - const b = start[2] + (end[2] - start[2]) * rate; - - return `rgb(${r},${g},${b})`; -} - export const createMockCellInfo = ( cellId: string, { colIndex = 0, rowIndex = 0, colId = '0', level = 0 } = {}, @@ -234,6 +210,7 @@ export const createMockCellInfo = ( getFieldValue: jest.fn(), hideInteractionShape: jest.fn(), updateByState: jest.fn(), + isTextOverflowing: jest.fn(), } as unknown as S2CellType; const getNode = () => mockCellViewMeta as unknown as Node; diff --git a/packages/s2-core/__tests__/util/index.ts b/packages/s2-core/__tests__/util/index.ts index a3c22e2703..ef6dfcd39d 100644 --- a/packages/s2-core/__tests__/util/index.ts +++ b/packages/s2-core/__tests__/util/index.ts @@ -52,7 +52,7 @@ export const TOTALS_OPTIONS: S2Options['totals'] = { */ export const waitForRender = async ( spreadsheet: SpreadSheet, - executeBlock: () => void, + executeBlock: () => void | Promise, ) => { const renderPromise = new Promise((r) => { spreadsheet.once(S2Event.LAYOUT_AFTER_RENDER, () => r(true)); diff --git a/packages/s2-core/package.json b/packages/s2-core/package.json index 57d6949850..69f5d7b1a2 100644 --- a/packages/s2-core/package.json +++ b/packages/s2-core/package.json @@ -60,9 +60,10 @@ "tsc": "tsc --noEmit" }, "dependencies": { + "@antv/g-lite": "^1.2.19", "@antv/event-emitter": "^0.1.3", - "@antv/g": "^5.16.13", - "@antv/g-canvas": "^1.9.41", + "@antv/g": "^5.18.21", + "@antv/g-canvas": "^1.11.24", "d3-ease": "^3.0.1", "d3-interpolate": "^1.3.2", "d3-timer": "^1.0.9", diff --git a/packages/s2-core/src/cell/base-cell.ts b/packages/s2-core/src/cell/base-cell.ts index 66829ec00c..01d216bfcf 100644 --- a/packages/s2-core/src/cell/base-cell.ts +++ b/packages/s2-core/src/cell/base-cell.ts @@ -5,6 +5,7 @@ import type { Polygon, Rect, Text, + TextStyleProps, } from '@antv/g'; import { Group } from '@antv/g'; import { @@ -17,8 +18,8 @@ import { isNumber, keys, pickBy, + sumBy, } from 'lodash'; -import type { SimpleBBox } from '../engine'; import { CellType, DEFAULT_FONT_COLOR, @@ -27,31 +28,43 @@ import { SHAPE_ATTRS_MAP, SHAPE_STYLE_MAP, } from '../common/constant'; +import type { GuiIcon } from '../common/icons/gui-icon'; import { + CellBorderPosition, + CellClipBox, + type Condition, + type ConditionMappingResult, + type Conditions, type DefaultCellTheme, type FormatResult, - type ResizeInteractionOptions, + type HeaderActionNameOptions, + type IconCondition, + type IconPosition, + type InteractionStateTheme, + type InternalFullyCellTheme, + type InternalFullyTheme, + type RenderTextShapeOptions, type ResizeArea, + type ResizeInteractionOptions, type S2CellType, type StateShapeLayer, type TextTheme, - type Conditions, - type Condition, - type ConditionMappingResult, - CellClipBox, - CellBorderPosition, - type InteractionStateTheme, - type HeaderActionNameOptions, - type IconPosition, - type InternalFullyTheme, - type InternalFullyCellTheme, - type IconCondition, } from '../common/interface'; +import type { ViewMeta } from '../common/interface/basic'; +import type { SimpleBBox } from '../engine'; +import type { CustomText } from '../engine/CustomText'; +import type { Node } from '../facet/layout/node'; import type { SpreadSheet } from '../sheet-type'; import { getBorderPositionAndStyle, getCellBoxByType, } from '../utils/cell/cell'; +import { + getIconTotalWidth, + type GroupedIcons, +} from '../utils/cell/header-cell'; +import { shouldReverseFontColor } from '../utils/color'; +import { getIconPosition } from '../utils/condition/condition'; import { renderIcon, renderLine, @@ -59,19 +72,12 @@ import { renderText, updateShapeAttr, } from '../utils/g-renders'; +import { checkIsLinkField } from '../utils/interaction/link-field'; import { isMobile } from '../utils/is-mobile'; -import { getEllipsisText, getEmptyPlaceholder } from '../utils/text'; -import type { GuiIcon } from '../common/icons/gui-icon'; -import type { CustomText } from '../engine/CustomText'; -import { shouldReverseFontColor } from '../utils/color'; -import { getIconPosition } from '../utils/condition/condition'; import { - getIconTotalWidth, - type GroupedIcons, -} from '../utils/cell/header-cell'; -import { checkIsLinkField } from '../utils/interaction/link-field'; -import type { Node } from '../facet/layout/node'; -import type { ViewMeta } from '../common/interface/basic'; + getDisplayText, + getEmptyPlaceholder as getEmptyPlaceholderInner, +} from '../utils/text'; export abstract class BaseCell extends Group { // cell's data meta info @@ -94,11 +100,9 @@ export abstract class BaseCell extends Group { // link text underline shape protected linkFieldShape: Line; - // actualText protected actualText: string; - // actual text width after be ellipsis - protected actualTextWidth = 0; + protected originalText: string; protected conditions: Conditions; @@ -113,6 +117,45 @@ export abstract class BaseCell extends Group { // interactive control shapes, unify read and manipulate operations protected stateShapes = new Map(); + /* -------------------------------------------------------------------------- */ + /* abstract functions that must be implemented by subtype */ + /* -------------------------------------------------------------------------- */ + + /** + * Return the type of the cell + */ + public abstract get cellType(): CellType; + + /** + * Determine how to render this cell area + */ + protected abstract initCell(): void; + + /** + * Update cell's selected state + */ + public abstract update(): void; + + protected abstract getBorderPositions(): CellBorderPosition[]; + + protected abstract getTextStyle(): TextTheme; + + protected abstract getFormattedFieldValue(): FormatResult; + + protected abstract getMaxTextWidth(): number; + + protected abstract getTextPosition(): PointLike; + + protected abstract getIconPosition(): PointLike; + + protected abstract findFieldCondition( + conditions: Condition[] | undefined, + ): Condition | undefined; + + protected abstract mappingValue( + condition: Condition, + ): ConditionMappingResult | undefined | null; + public constructor( meta: T, spreadsheet: SpreadSheet, @@ -130,6 +173,17 @@ export abstract class BaseCell extends Group { } } + /** + * in case there are more params to be handled + * @param options any type's rest params + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + protected handleRestOptions(...options: unknown[]) {} + + /* -------------------------------------------------------------------------- */ + /* common functions that will be used in subtype */ + /* -------------------------------------------------------------------------- */ + public getMeta(): T { return this.meta; } @@ -142,69 +196,89 @@ export abstract class BaseCell extends Group { return this.theme[this.cellType]?.icon; } - public getActualText() { + /** + * 获取实际渲染的文本 (含省略号) + */ + public getActualText(): string { return this.actualText; } - public getActualTextWidth() { - return this.actualTextWidth; + /** + * 实际渲染的文本宽度, 如果是多行文本, 取最大的一行宽度 + */ + public getActualTextWidth(): number { + return this.textShape?.getComputedTextLength() || 0; } - public getFieldValue() { - return this.getFormattedFieldValue().formattedValue; + /** + * 实际渲染的文本宽度, 如果是多行文本, 取每一行文本高度的总和) + * @alias getMultiLineActualTextHeight + */ + public getActualTextHeight(): number { + return this.getMultiLineActualTextHeight(); } /** - * in case there are more params to be handled - * @param options any type's rest params + * 获取实际渲染的多行文本 (含省略号) */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - protected handleRestOptions(...options: unknown[]) { - // default do nothing + public getMultiLineActualTexts(): string[] { + return this.textShape?.parsedStyle.metrics?.lines || []; } - /* -------------------------------------------------------------------------- */ - /* abstract functions that must be implemented by subtype */ - /* -------------------------------------------------------------------------- */ - /** - * Return the type of the cell + * 实际渲染的多行文本宽度 (每一行文本宽度的总和) */ - public abstract get cellType(): CellType; + public getMultiLineActualTextWidth(): number { + return sumBy(this.getTextLineBoundingRects(), 'width') || 0; + } /** - * Determine how to render this cell area + * 实际渲染的多行文本高度 (每一行文本高度的总和) + * @alias getActualTextHeight */ - protected abstract initCell(): void; + public getMultiLineActualTextHeight(): number { + return sumBy(this.getTextLineBoundingRects(), 'height') || 0; + } /** - * Update cell's selected state + * 获取原始的文本 (不含省略号) */ - public abstract update(): void; - - protected abstract getBorderPositions(): CellBorderPosition[]; - - protected abstract getTextStyle(): TextTheme; - - protected abstract getFormattedFieldValue(): FormatResult; + public getOriginalText(): string { + return this.originalText; + } - protected abstract getMaxTextWidth(): number; + /** + * 文本是否溢出 (有省略号) + */ + public isTextOverflowing() { + return this.textShape?.isOverflowing(); + } - protected abstract getTextPosition(): PointLike; + /** + * 是否是多行文本 + */ + public isMultiLineText() { + return this.getTextLineBoundingRects().length > 1; + } - protected abstract getIconPosition(): PointLike; + public getEmptyPlaceholder() { + const { + options: { placeholder }, + } = this.spreadsheet; - protected abstract findFieldCondition( - conditions: Condition[] | undefined, - ): Condition | undefined; + return getEmptyPlaceholderInner(this, placeholder); + } - protected abstract mappingValue( - condition: Condition, - ): ConditionMappingResult | undefined | null; + /** + * 获取文本包围盒 + */ + public getTextLineBoundingRects() { + return this.textShape?.getLineBoundingRects() || []; + } - /* -------------------------------------------------------------------------- */ - /* common functions that will be used in subtype */ - /* -------------------------------------------------------------------------- */ + public getFieldValue() { + return this.getFormattedFieldValue().formattedValue; + } protected shouldInit() { const { width, height } = this.meta; @@ -317,34 +391,65 @@ export abstract class BaseCell extends Group { ); } - protected drawTextShape() { - const { formattedValue } = this.getFormattedFieldValue(); - const maxTextWidth = this.getMaxTextWidth(); - const textStyle = this.getTextStyle(); - const { - options: { placeholder }, - measureTextWidth, - } = this.spreadsheet; - const emptyPlaceholder = getEmptyPlaceholder(this, placeholder); - const ellipsisText = getEllipsisText({ - measureTextWidth, - text: formattedValue, - maxWidth: maxTextWidth, - fontParam: textStyle, - placeholder: emptyPlaceholder, + public renderTextShape( + style: TextStyleProps, + options?: RenderTextShapeOptions, + ): CustomText { + const text = getDisplayText(style.text, this.getEmptyPlaceholder()); + + this.textShape = renderText({ + group: this, + textShape: options?.shallowRender ? undefined : this.textShape, + style: { + ...style, + text, + }, }); - this.actualText = ellipsisText; - this.actualTextWidth = measureTextWidth(ellipsisText, textStyle); - const position = this.getTextPosition(); + this.addTextShape(this.textShape); + + if (options?.shallowRender) { + return this.textShape; + } + + // 兼容多行文本 + const actualText = this.getMultiLineActualTexts().join(''); + + this.actualText = actualText; + this.originalText = text; + + return this.textShape; + } + + public updateTextPosition(position?: PointLike) { + const defaultPosition = this.getTextPosition(); + + this.textShape?.attr('x', position?.x ?? defaultPosition?.x); + this.textShape?.attr('y', position?.y ?? defaultPosition?.y); + } + + public drawTextShape(options?: RenderTextShapeOptions) { + // G 遵循浏览器的规范, 空间不足以展示省略号时, 会裁剪文字, 而不是展示省略号 https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow#ellipsis + const maxTextWidth = Math.max(this.getMaxTextWidth(), 0); + const textStyle = this.getTextStyle(); + + // 在坐标计算 (getTextPosition) 之前, 预渲染一次, 提前生成 textShape, 获得文字宽度, 用于计算 icon 绘制坐标 + this.renderTextShape( + { + ...textStyle, + x: 0, + y: 0, + text: this.getFieldValue(), + wordWrapWidth: maxTextWidth, + }, + options, + ); + + if (options?.shallowRender) { + return; + } - this.textShape = renderText(this, [this.textShape], { - x: position.x, - y: position.y, - text: ellipsisText, - ...textStyle, - }) as CustomText; - this.textShapes.push(this.textShape); + this.updateTextPosition(); } protected drawLinkFieldShape( @@ -355,20 +460,21 @@ export abstract class BaseCell extends Group { return; } - const device = this.spreadsheet.options.device; + const { device } = this.spreadsheet.options; // 配置了链接跳转 if (!isMobile(device)) { const textStyle = this.getTextStyle(); const position = this.getTextPosition(); + const actualTextWidth = this.getActualTextWidth(); // 默认居左,其他align方式需要调整 let startX = position.x; if (textStyle.textAlign === 'center') { - startX -= this.actualTextWidth / 2; + startX -= actualTextWidth / 2; } else if (textStyle.textAlign === 'right') { - startX -= this.actualTextWidth; + startX -= actualTextWidth; } const { bottom: maxY } = this.textShape.getBBox(); @@ -377,7 +483,7 @@ export abstract class BaseCell extends Group { x1: startX, y1: maxY + 1, // 不用 bbox 的 maxX,因为 g-base 文字宽度预估偏差较大 - x2: startX + this.actualTextWidth, + x2: startX + actualTextWidth, y2: maxY + 1, stroke: linkFillColor, lineWidth: 1, @@ -387,7 +493,7 @@ export abstract class BaseCell extends Group { this.textShape.style.fill = linkFillColor; this.textShape.style.cursor = 'pointer'; this.textShape.appendInfo = { - // 标记为行头(明细表行头其实就是Data Cell)文本,方便做链接跳转直接识别 + // 标记为行头(明细表行头其实就是 Data Cell)文本,方便做链接跳转直接识别 isLinkFieldText: true, cellData: this.meta, }; diff --git a/packages/s2-core/src/cell/col-cell.ts b/packages/s2-core/src/cell/col-cell.ts index 225d73129e..60236dc167 100644 --- a/packages/s2-core/src/cell/col-cell.ts +++ b/packages/s2-core/src/cell/col-cell.ts @@ -35,9 +35,7 @@ import { import { isEqualDisplaySiblingNodeId } from './../utils/hide-columns'; import { HeaderCell } from './header-cell'; -export class ColCell extends HeaderCell { - protected declare headerConfig: ColHeaderConfig; - +export class ColCell extends HeaderCell { public get cellType() { return CellType.COL_CELL; } @@ -103,7 +101,7 @@ export class ColCell extends HeaderCell { protected getTextPosition(): PointLike { const { isLeaf } = this.meta; - const { width, cornerWidth = 0, scrollX = 0 } = this.headerConfig || {}; + const { width, cornerWidth = 0, scrollX = 0 } = this.getHeaderConfig(); const scrollContainsRowHeader = !this.spreadsheet.isFrozenRowHeader(); const textStyle = this.getTextStyle(); @@ -121,7 +119,7 @@ export class ColCell extends HeaderCell { if (isLeaf) { const { textX, leftIconX, rightIconX } = getHorizontalTextIconPosition({ bbox: contentBox, - textWidth: this.actualTextWidth, + textWidth: this.getActualTextWidth(), textAlign: textStyle.textAlign!, groupedIcons: this.groupedIcons, iconStyle, @@ -170,7 +168,7 @@ export class ColCell extends HeaderCell { { align: normalizeTextAlign(textAlign!), size: { - textSize: this.actualTextWidth, + textSize: this.getActualTextWidth(), iconStartSize: this.getActionAndConditionIconWidth('left'), iconEndSize: this.getActionAndConditionIconWidth('right'), }, @@ -282,7 +280,8 @@ export class ColCell extends HeaderCell { } private getResizeAreaWidth() { - const { cornerWidth = 0, viewportWidth: headerWidth } = this.headerConfig; + const { cornerWidth = 0, viewportWidth: headerWidth } = + this.getHeaderConfig(); return ( Frame.getVerticalBorderWidth(this.spreadsheet) + cornerWidth + headerWidth @@ -297,10 +296,9 @@ export class ColCell extends HeaderCell { cornerWidth = 0, height: headerHeight, width: headerWidth, - spreadsheet, - } = this.headerConfig; + } = this.getHeaderConfig(); - const scrollContainsRowHeader = !spreadsheet.isFrozenRowHeader(); + const scrollContainsRowHeader = !this.spreadsheet.isFrozenRowHeader(); const resizeStyle = this.getResizeAreaStyle(); const resizeAreaBBox: SimpleBBox = { @@ -325,11 +323,11 @@ export class ColCell extends HeaderCell { protected getVerticalResizeAreaOffset() { const { x, y } = this.meta; - const { scrollX = 0, position } = this.headerConfig; + const { scrollX = 0, position } = this.getHeaderConfig(); return { - x: position.x + x - scrollX, - y: position.y + y, + x: position?.x + x - scrollX, + y: position?.y + y, }; } diff --git a/packages/s2-core/src/cell/corner-cell.ts b/packages/s2-core/src/cell/corner-cell.ts index d7bbbca211..d58bf95726 100644 --- a/packages/s2-core/src/cell/corner-cell.ts +++ b/packages/s2-core/src/cell/corner-cell.ts @@ -1,38 +1,38 @@ import type { PointLike } from '@antv/g'; -import { isEmpty, last, max } from 'lodash'; +import { last } from 'lodash'; import { CellType, - ELLIPSIS_SYMBOL, KEY_GROUP_CORNER_RESIZE_AREA, ResizeAreaEffect, ResizeDirectionType, S2Event, } from '../common/constant'; +import type { + FormatResult, + RenderTextShapeOptions, + TextTheme, +} from '../common/interface'; import { CellBorderPosition, CellClipBox } from '../common/interface'; -import type { FormatResult, TextTheme } from '../common/interface'; import { CornerNodeType } from '../common/interface/node'; +import { CustomRect } from '../engine'; +import type { CornerHeaderConfig } from '../facet/header/interface'; import { getHorizontalTextIconPosition, getVerticalIconPosition, } from '../utils/cell/cell'; import { formattedFieldValue } from '../utils/cell/header-cell'; -import { renderText, renderTreeIcon } from '../utils/g-renders'; +import { renderTreeIcon } from '../utils/g-renders'; import { getOrCreateResizeAreaGroupById, getResizeAreaAttrs, } from '../utils/interaction/resize'; -import { isIPhoneX } from '../utils/is-mobile'; -import { getEllipsisText, getEmptyPlaceholder } from '../utils/text'; -import type { CornerHeaderConfig } from '../facet/header/interface'; -import { CustomRect } from '../engine'; import { shouldAddResizeArea } from './../utils/interaction/resize'; import { HeaderCell } from './header-cell'; -export class CornerCell extends HeaderCell { - /* 角头类型 */ - public cornerType: CornerNodeType; - - protected declare headerConfig: CornerHeaderConfig; +export class CornerCell extends HeaderCell { + public get cellType() { + return CellType.CORNER_CELL; + } protected isBolderText() { const { cornerType } = this.meta; @@ -40,10 +40,6 @@ export class CornerCell extends HeaderCell { return cornerType === CornerNodeType.Col; } - public get cellType() { - return CellType.CORNER_CELL; - } - protected getBorderPositions(): CellBorderPosition[] { return [CellBorderPosition.TOP, CellBorderPosition.LEFT]; } @@ -61,52 +57,11 @@ export class CornerCell extends HeaderCell { this.drawResizeArea(); } - protected drawTextShape() { + public drawTextShape(options?: RenderTextShapeOptions) { const { x, y, height, width } = this.getBBoxByType(CellClipBox.CONTENT_BOX); - const textStyle = this.getTextStyle(); - const cornerText = this.getCornerText(); - + const cornerText = this.getFieldValue(); const maxWidth = this.getMaxTextWidth(); - const emptyPlaceholder = getEmptyPlaceholder( - this.meta, - this.spreadsheet.options.placeholder, - ); - const { measureTextWidth } = this.spreadsheet; - const text = getEllipsisText({ - measureTextWidth, - text: cornerText, - maxWidth, - fontParam: textStyle, - placeholder: emptyPlaceholder, - }); - - this.actualText = text; - const ellipseIndex = text.indexOf(ELLIPSIS_SYMBOL); - - let firstLine: string = text; - let secondLine = ''; - - // 存在文字的省略号 & 展示为tree结构 - if (ellipseIndex !== -1 && this.spreadsheet.isHierarchyTreeType()) { - // 剪裁到 ... 最有点的后1个像素位置 - const lastIndex = ellipseIndex + (isIPhoneX() ? 1 : 0); - - firstLine = cornerText.slice(0, lastIndex); - secondLine = cornerText.slice(lastIndex); - // 第二行重新计算...逻辑 - secondLine = getEllipsisText({ - measureTextWidth, - text: secondLine, - maxWidth, - fontParam: textStyle, - }); - } - - this.actualTextWidth = max([ - measureTextWidth(firstLine, textStyle), - measureTextWidth(secondLine, textStyle), - ])!; const { textX, leftIconX, rightIconX } = getHorizontalTextIconPosition({ bbox: { @@ -116,35 +71,24 @@ export class CornerCell extends HeaderCell { height, }, textAlign: textStyle.textAlign!, - textWidth: this.actualTextWidth, + textWidth: this.getActualTextWidth(), groupedIcons: this.groupedIcons, iconStyle: this.getIconStyle()!, }); - const textY = y + (isEmpty(secondLine) ? height / 2 : height / 4); + const textY = y + height / 2; - // first line - this.addTextShape( - renderText(this, [this.textShapes[0]], { + this.renderTextShape( + { + ...textStyle, x: textX, y: textY, - text: firstLine, - ...textStyle, - }), + text: cornerText, + wordWrapWidth: maxWidth, + }, + options, ); - // second line - if (!isEmpty(secondLine)) { - this.addTextShape( - renderText(this, [this.textShapes[1]], { - x: textX, - y: y + height * 0.75, - text: secondLine, - ...textStyle, - }), - ); - } - const { size = 0 } = this.getStyle()!.icon!; const iconY = getVerticalIconPosition( size, @@ -240,7 +184,7 @@ export class CornerCell extends HeaderCell { scrollY = 0, width: headerWidth, height: headerHeight, - } = this.headerConfig || {}; + } = this.getHeaderConfig(); const { x, y, width, height } = this.getBBoxByType(); const { cornerType } = this.meta; @@ -321,7 +265,7 @@ export class CornerCell extends HeaderCell { return { ...textStyle, - // 角头因为要折行,所以在都是按照middle来计算,这里写死,不然用户配置了baseline,会导致计算错误 + // 角头因为要折行,所以在都是按照 middle 来计算,这里写死,不然用户配置了 baseline,会导致计算错误 textBaseline: 'middle', }; } @@ -341,17 +285,11 @@ export class CornerCell extends HeaderCell { }; } - // corner cell 不需要使用formatter进行格式化 + // CornerCell 不需要使用 formatter 进行格式化 protected getFormattedFieldValue(): FormatResult { return formattedFieldValue( this.meta, this.spreadsheet.dataSet.getFieldName(this.meta.field), ); } - - protected getCornerText(): string { - const { formattedValue } = this.getFormattedFieldValue(); - - return formattedValue; - } } diff --git a/packages/s2-core/src/cell/data-cell.ts b/packages/s2-core/src/cell/data-cell.ts index 11e4de0f0a..31814695d3 100644 --- a/packages/s2-core/src/cell/data-cell.ts +++ b/packages/s2-core/src/cell/data-cell.ts @@ -12,6 +12,7 @@ import { type HeaderActionNameOptions, type IconCondition, type InteractionStateTheme, + type RenderTextShapeOptions, } from '../common/interface'; import type { CellMeta, @@ -199,10 +200,12 @@ export class DataCell extends BaseCell { this.initCell(); } - // draw text - protected drawTextShape() { - super.drawTextShape(); - this.drawLinkField(this.meta); + public drawTextShape(options?: RenderTextShapeOptions) { + super.drawTextShape(options); + + if (!options?.shallowRender) { + this.drawLinkField(this.meta); + } } protected initCell() { @@ -248,9 +251,8 @@ export class DataCell extends BaseCell { protected getTextStyle(): TextTheme { const { isTotals } = this.meta; - const textStyle = isTotals - ? this.theme.dataCell?.bolderText - : this.theme.dataCell?.text; + const { dataCell } = this.theme; + const textStyle = isTotals ? dataCell?.bolderText : dataCell?.text; return this.getContainConditionMappingResultTextStyle(textStyle); } @@ -316,7 +318,7 @@ export class DataCell extends BaseCell { const { textX, leftIconX, rightIconX } = getHorizontalTextIconPosition({ bbox: contentBox, iconStyle, - textWidth: this.actualTextWidth, + textWidth: this.getActualTextWidth(), textAlign: textStyle.textAlign!, groupedIcons: this.groupedIcons, }); diff --git a/packages/s2-core/src/cell/header-cell.ts b/packages/s2-core/src/cell/header-cell.ts index 89b12de67b..ae93cca3fd 100644 --- a/packages/s2-core/src/cell/header-cell.ts +++ b/packages/s2-core/src/cell/header-cell.ts @@ -45,8 +45,10 @@ import { import { renderIcon } from '../utils/g-renders'; import { getSortTypeIcon } from '../utils/sort-action'; -export abstract class HeaderCell extends BaseCell { - protected headerConfig: BaseHeaderConfig; +export abstract class HeaderCell< + T extends BaseHeaderConfig = BaseHeaderConfig, +> extends BaseCell { + protected headerConfig: T; protected actionIconConfig: InternalFullyHeaderActionIcon | undefined; @@ -68,8 +70,13 @@ export abstract class HeaderCell extends BaseCell { protected abstract isBolderText(): boolean; - protected handleRestOptions(...[headerConfig]: [BaseHeaderConfig]) { + public getHeaderConfig() { + return this.headerConfig || ({} as T); + } + + protected handleRestOptions(...[headerConfig]: [T]) { this.headerConfig = { ...headerConfig }; + const { value, query } = this.meta; const sortParams = this.spreadsheet.dataCfg.sortParams || []; // 该单元格是否为需要展示排序 icon 单元格 @@ -100,9 +107,9 @@ export abstract class HeaderCell extends BaseCell { protected generateIconConfig() { this.conditionIconMappingResult = this.getIconConditionResult(); - const { sortParam } = this.headerConfig || {}; - // 为什么有排序参数就不展示 actionIcon 了?背景不清楚,先照旧处理 + const { sortParam } = this.getHeaderConfig(); + // 为什么有排序参数就不展示 actionIcon 了?背景不清楚,先照旧处理 if (this.showSortIcon()) { this.actionIconConfig = { icons: [{ name: get(sortParam, 'type', 'none'), position: 'right' }], @@ -143,10 +150,10 @@ export abstract class HeaderCell extends BaseCell { const isEmptyValues = isEmpty(dataCfg.fields.values); if (options.showDefaultHeaderActionIcon && !isEmptyValues) { - const { sortParam } = this.headerConfig; + const { sortParam } = this.getHeaderConfig(); const query = this.meta.query; - // sortParam的query,和type本身可能会 undefined + // sortParam 的 query,和 type 本身可能会 undefined return ( query && isEqual(sortParam?.query, query) && diff --git a/packages/s2-core/src/cell/merged-cell.ts b/packages/s2-core/src/cell/merged-cell.ts index a50b6f3ef5..fb1e3b3594 100644 --- a/packages/s2-core/src/cell/merged-cell.ts +++ b/packages/s2-core/src/cell/merged-cell.ts @@ -1,6 +1,6 @@ import { isEmpty, isObject } from 'lodash'; import { CellType } from '../common/constant'; -import type { ViewMeta } from '../common/interface'; +import type { RenderTextShapeOptions, ViewMeta } from '../common/interface'; import type { S2CellType } from '../common/interface/interaction'; import type { SpreadSheet } from '../sheet-type'; import { renderPolygon } from '../utils/g-renders'; @@ -14,6 +14,10 @@ import { DataCell } from './data-cell'; export class MergedCell extends DataCell { public cells: S2CellType[]; + public get cellType() { + return CellType.MERGED_CELL; + } + public constructor( spreadsheet: SpreadSheet, cells: S2CellType[], @@ -26,10 +30,6 @@ export class MergedCell extends DataCell { this.cells = cells; } - public get cellType() { - return CellType.MERGED_CELL; - } - public update() {} protected initCell() { @@ -54,10 +54,7 @@ export class MergedCell extends DataCell { }); } - /** - * Render data text - */ - public drawTextShape() { + public drawTextShape(options?: RenderTextShapeOptions) { if (isEmpty(this.meta)) { return; } @@ -65,7 +62,7 @@ export class MergedCell extends DataCell { if (isObject(this.meta.fieldValue)) { drawObjectText(this); } else { - super.drawTextShape(); + super.drawTextShape(options); } } } diff --git a/packages/s2-core/src/cell/row-cell.ts b/packages/s2-core/src/cell/row-cell.ts index 9d89fe324f..12ae43b982 100644 --- a/packages/s2-core/src/cell/row-cell.ts +++ b/packages/s2-core/src/cell/row-cell.ts @@ -7,13 +7,15 @@ import { ResizeDirectionType, S2Event, } from '../common/constant'; -import type { RowHeaderConfig } from '../facet/header'; import { CellBorderPosition, CellClipBox, type AreaRange, + type RenderTextShapeOptions, type ViewMeta, } from '../common/interface'; +import { CustomRect } from '../engine'; +import type { RowHeaderConfig } from '../facet/header'; import { getHorizontalTextIconPosition, getVerticalIconPosition, @@ -25,16 +27,13 @@ import { getResizeAreaAttrs, } from '../utils/interaction/resize'; import { isMobile } from '../utils/is-mobile'; -import { CustomRect } from '../engine'; import type { SimpleBBox } from './../engine/interface'; +import { adjustTextIconPositionWhileScrolling } from './../utils/cell/text-scrolling'; import { shouldAddResizeArea } from './../utils/interaction/resize'; -import { HeaderCell } from './header-cell'; import { normalizeTextAlign } from './../utils/normalize'; -import { adjustTextIconPositionWhileScrolling } from './../utils/cell/text-scrolling'; - -export class RowCell extends HeaderCell { - protected declare headerConfig: RowHeaderConfig; +import { HeaderCell } from './header-cell'; +export class RowCell extends HeaderCell { public get cellType() { return CellType.ROW_CELL; } @@ -101,7 +100,7 @@ export class RowCell extends HeaderCell { return; } - // 折叠行头时因scrollY没变,导致底层出现空白 + // 折叠行头时因 scrollY 没变,导致底层出现空白 if (!isCollapsed) { const { scrollY: oldScrollY } = this.spreadsheet.facet.getScrollOffset(); // 可视窗口高度 @@ -131,7 +130,6 @@ export class RowCell extends HeaderCell { }); } - // draw tree icon protected drawTreeIcon() { if (!this.showTreeIcon()) { return; @@ -162,7 +160,7 @@ export class RowCell extends HeaderCell { }, }); - // in mobile, we use this cell + // 移动端, 点击热区为整个单元格 if (isMobile()) { this.addEventListener('click', () => { this.emitCollapseEvent(); @@ -203,10 +201,11 @@ export class RowCell extends HeaderCell { return (!isLeaf && level === 0) || isTotals; } - // draw text - protected drawTextShape() { - super.drawTextShape(); - this.drawLinkField(this.meta); + public drawTextShape(options?: RenderTextShapeOptions) { + super.drawTextShape(options); + if (!options?.shallowRender) { + this.drawLinkField(this.meta); + } } protected drawResizeAreaInLeaf() { @@ -234,7 +233,7 @@ export class RowCell extends HeaderCell { viewportHeight: headerHeight, scrollX = 0, scrollY = 0, - } = this.headerConfig; + } = this.getHeaderConfig(); const resizeAreaBBox: SimpleBBox = { x, @@ -358,7 +357,7 @@ export class RowCell extends HeaderCell { } protected getTextPosition(): PointLike { - const { scrollY, viewportHeight } = this.headerConfig; + const { scrollY, viewportHeight } = this.getHeaderConfig(); const textArea = this.getTextArea(); const textStyle = this.getTextStyle(); const { cell, icon: iconStyle } = this.getStyle(); @@ -388,10 +387,10 @@ export class RowCell extends HeaderCell { const { textX, leftIconX, rightIconX } = getHorizontalTextIconPosition({ bbox: textArea, - textWidth: this.actualTextWidth, + textWidth: this.getActualTextWidth(), textAlign: textStyle.textAlign!, groupedIcons: this.groupedIcons, - iconStyle: iconStyle!, + iconStyle, }); const iconY = getVerticalIconPosition( diff --git a/packages/s2-core/src/cell/series-number-cell.ts b/packages/s2-core/src/cell/series-number-cell.ts index 632f1546f7..1235470b25 100644 --- a/packages/s2-core/src/cell/series-number-cell.ts +++ b/packages/s2-core/src/cell/series-number-cell.ts @@ -22,6 +22,10 @@ export class SeriesNumberCell extends BaseCell { this.headerConfig = { ...headerConfig }; } + public getHeaderConfig() { + return this.headerConfig || {}; + } + public get cellType() { return CellType.ROW_CELL; } @@ -102,7 +106,7 @@ export class SeriesNumberCell extends BaseCell { const { textX } = getHorizontalTextIconPosition({ bbox: textArea, textAlign: textStyle.textAlign!, - textWidth: this.actualTextWidth, + textWidth: this.getActualTextWidth(), iconStyle: this.getIconStyle()!, groupedIcons: this.groupedIcons, }); diff --git a/packages/s2-core/src/cell/table-col-cell.ts b/packages/s2-core/src/cell/table-col-cell.ts index 9ea763c01e..8f8875f506 100644 --- a/packages/s2-core/src/cell/table-col-cell.ts +++ b/packages/s2-core/src/cell/table-col-cell.ts @@ -36,12 +36,12 @@ export class TableColCell extends ColCell { protected isFrozenCell() { const { colCount = 0, trailingColCount = 0 } = this.spreadsheet.options.frozen!; - const colNodes = this.spreadsheet.facet.getColNodes(0); + const colNodes = this.spreadsheet.facet?.getColNodes(0); const { colIndex } = getNodeRoot(this.meta); return ( isFrozenCol(colIndex, colCount) || - isFrozenTrailingCol(colIndex, trailingColCount, colNodes.length) + isFrozenTrailingCol(colIndex, trailingColCount, colNodes?.length) ); } @@ -62,7 +62,7 @@ export class TableColCell extends ColCell { scrollY, width: headerWidth, height: headerHeight, - } = this.headerConfig; + } = this.getHeaderConfig(); const { x, y, width, height } = this.getBBoxByType(); const resizeStyle = this.getResizeAreaStyle(); @@ -95,18 +95,18 @@ export class TableColCell extends ColCell { protected getVerticalResizeAreaOffset() { const { x, y } = this.meta; - const { scrollX = 0, position } = this.headerConfig || {}; + const { scrollX = 0, position } = this.getHeaderConfig(); if (this.isFrozenCell()) { return { - x: position.x + x, - y: position.y + y, + x: position?.x + x, + y: position?.y + y, }; } return { - x: position.x + x - scrollX, - y: position.y + y, + x: position?.x + x - scrollX, + y: position?.y + y, }; } diff --git a/packages/s2-core/src/common/constant/basic.ts b/packages/s2-core/src/common/constant/basic.ts index fed224ae21..afdf8dd69b 100644 --- a/packages/s2-core/src/common/constant/basic.ts +++ b/packages/s2-core/src/common/constant/basic.ts @@ -1,6 +1,5 @@ import { i18n } from '../i18n'; -// 值字段的 id 是固定的! export const VALUE_FIELD = '$$value$$'; export const EXTRA_FIELD = '$$extra$$'; export const EXTRA_COLUMN_FIELD = '$$extra_column$$'; @@ -29,7 +28,6 @@ export const FRONT_GROUND_GROUP_BRUSH_SELECTION_Z_INDEX = 5; export const PANEL_GROUP_GROUP_CONTAINER_Z_INDEX = 1; export const PANEL_GROUP_SCROLL_GROUP_Z_INDEX = 1; export const PANEL_GROUP_FROZEN_GROUP_Z_INDEX = 2; -export const PANEL_GROUP_HOVER_BOX_GROUP_Z_INDEX = 1; // group's key export const KEY_GROUP_BACK_GROUND = 'backGroundGroup'; @@ -50,29 +48,15 @@ export const KEY_GROUP_ROW_INDEX_RESIZE_AREA = 'rowIndexResizeAreaGroup'; export const KEY_GROUP_CORNER_RESIZE_AREA = 'cornerResizeAreaGroup'; export const KEY_GROUP_COL_RESIZE_AREA = 'colResizeAreaGroup'; export const KEY_GROUP_FROZEN_COL_RESIZE_AREA = 'colFrozenResizeAreaGroup'; -export const KEY_GROUP_COL_HORIZONTAL_RESIZE_AREA = - 'colHorizontalResizeAreaGroup'; export const KEY_GROUP_COL_SCROLL = 'colScrollGroup'; export const KEY_GROUP_COL_FROZEN = 'colFrozenGroup'; export const KEY_GROUP_COL_FROZEN_TRAILING = 'colFrozenTrailingGroup'; export const KEY_GROUP_GRID_GROUP = 'gridGroup'; export const HORIZONTAL_RESIZE_AREA_KEY_PRE = 'horizontal-resize-area-'; -export const TABLE_COL_HORIZONTAL_RESIZE_AREA_KEY = - 'table-col-horizontal-resize-area'; - -export const KEY_COL_REAL_WIDTH_INFO = 'col-real-width-info'; export const EMPTY_PLACEHOLDER = '-'; -export const PADDING_TOP = 0; -export const PADDING_RIGHT = 1; -export const PADDING_DOWN = 2; -export const PADDING_LEFT = 3; - -export const MIN_CELL_WIDTH = 28; -export const MIN_CELL_HEIGHT = 16; - // data precision export const PRECISION = 16; diff --git a/packages/s2-core/src/common/constant/options.ts b/packages/s2-core/src/common/constant/options.ts index 2e9e8168c7..cedbb959ba 100644 --- a/packages/s2-core/src/common/constant/options.ts +++ b/packages/s2-core/src/common/constant/options.ts @@ -18,14 +18,10 @@ export enum LayoutWidthTypes { export const SPLIT_LINE_WIDTH = 1; -export const DEFAULT_TREE_ROW_WIDTH = 120; +export const DEFAULT_TREE_ROW_CELL_WIDTH = 120; export const DEFAULT_STYLE: S2Style = { layoutWidthType: LayoutWidthTypes.Adaptive, - dataCell: { - width: 96, - height: 30, - }, rowCell: { showTreeLeafNodeAlignDot: false, widthByField: null, @@ -36,7 +32,11 @@ export const DEFAULT_STYLE: S2Style = { widthByField: null, heightByField: null, }, -}; + dataCell: { + width: 96, + height: 30, + }, +} as const; export const DEFAULT_OPTIONS: S2Options = { width: 600, @@ -128,4 +128,4 @@ export const DEFAULT_MOBILE_OPTIONS: S2Options = { rangeSelection: false, }, device: DeviceType.MOBILE, -}; +} as const; diff --git a/packages/s2-core/src/common/interface/index.ts b/packages/s2-core/src/common/interface/index.ts index 54d221785e..8183cf5f81 100644 --- a/packages/s2-core/src/common/interface/index.ts +++ b/packages/s2-core/src/common/interface/index.ts @@ -16,3 +16,4 @@ export * from './tooltip'; export * from './facet'; export * from './style'; export * from './collapse'; +export * from './text'; diff --git a/packages/s2-core/src/common/interface/text.ts b/packages/s2-core/src/common/interface/text.ts new file mode 100644 index 0000000000..f550f4f383 --- /dev/null +++ b/packages/s2-core/src/common/interface/text.ts @@ -0,0 +1,6 @@ +export interface RenderTextShapeOptions { + /** + * 只渲染文本, 不记录 textShape 信息 + */ + shallowRender: boolean; +} diff --git a/packages/s2-core/src/common/interface/theme.ts b/packages/s2-core/src/common/interface/theme.ts index 5a39ef5db0..e9fd0691b2 100644 --- a/packages/s2-core/src/common/interface/theme.ts +++ b/packages/s2-core/src/common/interface/theme.ts @@ -1,4 +1,4 @@ -import type { LineStyleProps } from '@antv/g'; +import type { LineStyleProps, TextStyleProps } from '@antv/g'; import type { CellType } from '../../common/constant/interaction'; import type { InteractionStateName } from '../constant'; import type { PALETTE_MAP } from '../constant/theme'; @@ -40,7 +40,7 @@ export interface PaletteMeta { } export interface Palette extends PaletteMeta { - /* + /** * 基础色值(共15个) * * 1. 角头字体、列头字体 @@ -58,7 +58,6 @@ export interface Palette extends PaletteMeta { * 13. 横向大分割线 * 14. 数据格字体 * 15. 行头字体、数据格交互色(hover) - * */ basicColors: string[]; } @@ -74,6 +73,7 @@ export interface Background { opacity?: number; color?: string; } + export interface InteractionStateTheme { /** 背景透明度 */ backgroundOpacity?: number; @@ -108,24 +108,30 @@ export interface TextAlignStyle { textBaseline?: TextBaseline; } -export interface TextTheme extends TextAlignStyle { - /** 字体 */ - fontFamily?: string; - +export interface TextTheme + extends TextAlignStyle, + Pick< + TextStyleProps, + | 'fontFamily' + | 'fontSize' + | 'fontWeight' + | 'fill' + | 'opacity' + | 'wordWrap' + | 'maxLines' + | 'lineHeight' + | 'textOverflow' + | 'fontStyle' + | 'fontVariant' + > { /** 字体大小 */ fontSize?: number; - /** 字体粗细 */ - fontWeight?: number | 'normal' | 'bold' | 'bolder' | 'lighter'; - /** 字体颜色 */ fill?: string; /** 链接文本颜色 */ linkTextFill?: string; - - /** 字体透明度 */ - opacity?: number; } export interface CellTheme { @@ -195,6 +201,12 @@ export interface ResizeArea { /** 交互态 */ interactionState?: InteractionState; + + /** 单元格可拖拽最小宽度 */ + minCellWidth?: number; + + /** 单元格可拖拽最小高度 */ + minCellHeight?: number; } export interface ScrollBarTheme { diff --git a/packages/s2-core/src/facet/base-facet.ts b/packages/s2-core/src/facet/base-facet.ts index 8f22c95cb5..106ff35aa5 100644 --- a/packages/s2-core/src/facet/base-facet.ts +++ b/packages/s2-core/src/facet/base-facet.ts @@ -8,6 +8,7 @@ import { interpolateArray } from 'd3-interpolate'; import { timer, type Timer } from 'd3-timer'; import { clamp, + compact, concat, debounce, each, @@ -19,6 +20,7 @@ import { isNil, isUndefined, last, + maxBy, reduce, sumBy, } from 'lodash'; @@ -26,6 +28,7 @@ import { ColCell, CornerCell, DataCell, + HeaderCell, MergedCell, RowCell, SeriesNumberCell, @@ -175,6 +178,11 @@ export abstract class BaseFacet { colIndex: number, ): ViewMeta | null; + protected abstract getColNodeHeight( + colNode: Node, + colsHierarchy: Hierarchy, + ): number; + protected scrollFrameId: ReturnType | null = null; @@ -288,15 +296,71 @@ export abstract class BaseFacet { ); } - protected getDefaultColNodeHeight(colNode: Node): number { + protected getDefaultColNodeHeight( + colNode: Node, + colsHierarchy: Hierarchy, + ): number { const { colCell } = this.spreadsheet.options.style!; + // 当前层级高度最大的单元格 + const sampleMaxHeight = + colsHierarchy?.sampleNodesForAllLevels?.find( + (node) => node.level === colNode.level, + )?.height || 0; + // 优先级: 列头拖拽 > 列头自定义高度 > 通用单元格高度 - return ( + const defaultHeight = this.getColCellDraggedHeight(colNode) ?? this.getCellCustomSize(colNode, colCell?.height) ?? - 0 + 0; + + return Math.max(defaultHeight, sampleMaxHeight); + } + + protected getCellAdaptiveHeight(cell: HeaderCell, defaultHeight: number) { + if (!cell) { + return defaultHeight; + } + + const { padding } = cell.getStyle().cell; + + cell.drawTextShape({ + shallowRender: true, + }); + const textHeight = cell.getActualTextHeight(); + const adaptiveHeight = textHeight + padding.top + padding.bottom; + + return textHeight >= defaultHeight ? adaptiveHeight : defaultHeight; + } + + /** + * 将每一层级的采样节点更新为高度最大的节点 (未隐藏, 非汇总节点) + */ + protected updateColsHierarchySampleMaxHeightNodes(colsHierarchy: Hierarchy) { + const sampleMaxHeightNodesForAllLevels = + colsHierarchy.sampleNodesForAllLevels.map((sampleNode) => { + const maxHeightNode = maxBy( + colsHierarchy + .getNodes(sampleNode.level) + .filter((node) => !node.isTotals), + (levelSampleNode) => { + return this.getColNodeHeight(levelSampleNode, colsHierarchy); + }, + )!; + + return maxHeightNode!; + }); + + colsHierarchy.sampleNodesForAllLevels = compact( + sampleMaxHeightNodesForAllLevels, ); + colsHierarchy.sampleNodesForAllLevels.forEach((levelSampleNode) => { + levelSampleNode.height = this.getColNodeHeight( + levelSampleNode, + colsHierarchy, + ); + colsHierarchy.height += levelSampleNode.height; + }); } hideScrollBar = () => { @@ -1548,6 +1612,7 @@ export abstract class BaseFacet { }); colsHierarchy.sampleNodesForAllLevels = nodes; + colsHierarchy.height = sumBy(nodes, 'height'); } /** diff --git a/packages/s2-core/src/facet/header/base.ts b/packages/s2-core/src/facet/header/base.ts index d34b9d9864..fd678047be 100644 --- a/packages/s2-core/src/facet/header/base.ts +++ b/packages/s2-core/src/facet/header/base.ts @@ -1,4 +1,6 @@ import { Group } from '@antv/g'; +import type { S2CellType } from '../../common'; +import type { Node } from '../layout/node'; import type { BaseHeaderConfig } from './interface'; /** @@ -7,16 +9,27 @@ import type { BaseHeaderConfig } from './interface'; * use {@see headerConfig} instead */ export abstract class BaseHeader extends Group { + // header all cells layout + protected abstract layout(): void; + + // header group offset + protected abstract offset(): void; + + // header group clip + protected abstract clip(): void; + + protected abstract getCellInstance(node: Node): S2CellType; + // protected offset: number; protected headerConfig: T; - protected constructor(cfg: T) { + protected constructor(config: T) { super(); - this.headerConfig = cfg; + this.headerConfig = config; } public getHeaderConfig() { - return this.headerConfig; + return this.headerConfig || ({} as T); } /** @@ -66,15 +79,6 @@ export abstract class BaseHeader extends Group { this.render(type); } - // header all cells layout - protected abstract layout(): void; - - // header group offset - protected abstract offset(): void; - - // header group clip - protected abstract clip(): void; - public clear() { super.removeChildren(); } diff --git a/packages/s2-core/src/facet/header/col.ts b/packages/s2-core/src/facet/header/col.ts index 7ced0e905d..e043204c0a 100644 --- a/packages/s2-core/src/facet/header/col.ts +++ b/packages/s2-core/src/facet/header/col.ts @@ -6,7 +6,6 @@ import { KEY_GROUP_COL_SCROLL, } from '../../common/constant'; import type { S2CellType } from '../../common/interface'; -import type { SpreadSheet } from '../../sheet-type'; import type { Node } from '../layout/node'; import { translateGroupX } from '../utils'; import { BaseHeader } from './base'; @@ -20,12 +19,22 @@ export class ColHeader extends BaseHeader { protected background: DisplayObject; - constructor(cfg: ColHeaderConfig) { - super(cfg); + constructor(config: ColHeaderConfig) { + super(config); this.initScrollGroup(); } + protected getCellInstance(node: Node): S2CellType { + const { spreadsheet } = this.getHeaderConfig(); + const { colCell } = spreadsheet.options; + + return ( + colCell?.(node, spreadsheet, this.headerConfig) || + new ColCell(node, spreadsheet, this.headerConfig) + ); + } + private initScrollGroup() { this.scrollGroup = this.appendChild( new Group({ @@ -49,7 +58,7 @@ export class ColHeader extends BaseHeader { } protected clip() { - const { height, spreadsheet } = this.headerConfig; + const { height, spreadsheet } = this.getHeaderConfig(); this.scrollGroup.style.clipPath = new Rect({ style: { @@ -66,21 +75,18 @@ export class ColHeader extends BaseHeader { this.background?.remove(); } - protected getCellInstance( - node: Node, - spreadsheet: SpreadSheet, - headerConfig: ColHeaderConfig, - ): S2CellType { - return new ColCell(node, spreadsheet, headerConfig); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars protected getCellGroup(node: Node): Group { return this.scrollGroup; } protected isColCellInRect(node: Node): boolean { - const { spreadsheet, cornerWidth, width, scrollX = 0 } = this.headerConfig; + const { + spreadsheet, + cornerWidth, + width, + scrollX = 0, + } = this.getHeaderConfig(); return ( // don't care about scrollY, because there is only freeze col-header exist @@ -91,14 +97,11 @@ export class ColHeader extends BaseHeader { } protected layout() { - const { nodes, spreadsheet } = this.headerConfig; - const { colCell } = spreadsheet.options; + const { nodes } = this.getHeaderConfig(); each(nodes, (node) => { if (this.isColCellInRect(node)) { - const cell = - colCell?.(node, spreadsheet, this.headerConfig) || - this.getCellInstance(node, spreadsheet, this.headerConfig); + const cell = this.getCellInstance(node); node.belongsCell = cell; @@ -110,7 +113,7 @@ export class ColHeader extends BaseHeader { } protected offset() { - const { position, scrollX = 0 } = this.headerConfig; + const { position, scrollX = 0 } = this.getHeaderConfig(); // 暂时不考虑移动 y translateGroupX(this.scrollGroup, position.x - scrollX); diff --git a/packages/s2-core/src/facet/header/corner.ts b/packages/s2-core/src/facet/header/corner.ts index 7d8fe9c1fb..0309060a90 100644 --- a/packages/s2-core/src/facet/header/corner.ts +++ b/packages/s2-core/src/facet/header/corner.ts @@ -1,5 +1,5 @@ -import { Rect, type Group, type PointLike } from '@antv/g'; -import { includes, isEmpty } from 'lodash'; +import { Rect, type PointLike } from '@antv/g'; +import { includes } from 'lodash'; import { CornerCell } from '../../cell/corner-cell'; import type { S2CellType } from '../../common/interface'; import { CornerNodeType } from '../../common/interface/node'; @@ -18,6 +18,21 @@ import type { BaseCornerOptions, CornerHeaderConfig } from './interface'; * Corner Header for SpreadSheet */ export class CornerHeader extends BaseHeader { + constructor(config: CornerHeaderConfig) { + super(config); + } + + protected getCellInstance(node: Node): S2CellType { + const headerConfig = this.getHeaderConfig(); + const { spreadsheet } = headerConfig; + const { cornerCell } = spreadsheet.options; + + return ( + cornerCell?.(node, spreadsheet, headerConfig) || + new CornerCell(node, spreadsheet, headerConfig) + ); + } + /** * Get corner Header by config */ @@ -112,9 +127,6 @@ export class CornerHeader extends BaseHeader { const cornerNodes: Node[] = []; const leafNode = colsHierarchy?.sampleNodeForLastLevel; - /* - * check if show series number node - */ if (seriesNumberWidth) { const sNode: Node = new Node({ id: '', @@ -134,7 +146,6 @@ export class CornerHeader extends BaseHeader { cornerNodes.push(sNode); } - // spreadsheet type tree mode if (spreadsheet.isHierarchyTreeType()) { const cornerText = this.getTreeCornerText(options); const cornerNode: Node = new Node({ @@ -213,10 +224,6 @@ export class CornerHeader extends BaseHeader { return cornerNodes; } - constructor(cfg: CornerHeaderConfig) { - super(cfg); - } - /** * Make cornerHeader scroll with hScrollBar * @param scrollX @@ -235,9 +242,8 @@ export class CornerHeader extends BaseHeader { } protected renderCells() { - const { nodes, spreadsheet } = this.headerConfig; + const { nodes, spreadsheet } = this.getHeaderConfig(); const cornerHeader = spreadsheet.options?.cornerHeader; - const cornerCell = spreadsheet?.options?.cornerCell; if (cornerHeader) { cornerHeader( @@ -250,36 +256,20 @@ export class CornerHeader extends BaseHeader { } nodes.forEach((node) => { - let cell: Group | null = null; - - if (cornerCell) { - cell = cornerCell( - node, - this.headerConfig.spreadsheet, - this.headerConfig, - ); - } - - if (isEmpty(cell)) { - cell = new CornerCell( - node, - this.headerConfig.spreadsheet, - this.headerConfig, - ); - } + const cell = this.getCellInstance(node); this.appendChild(cell); }); } protected offset() { - const { scrollX = 0 } = this.headerConfig; + const { scrollX = 0 } = this.getHeaderConfig(); translateGroupX(this, -scrollX); } protected clip(): void { - const { width, height } = this.headerConfig; + const { width, height } = this.getHeaderConfig(); this.style.clipPath = new Rect({ style: { diff --git a/packages/s2-core/src/facet/header/row.ts b/packages/s2-core/src/facet/header/row.ts index 673c625ca6..149bbda705 100644 --- a/packages/s2-core/src/facet/header/row.ts +++ b/packages/s2-core/src/facet/header/row.ts @@ -11,8 +11,19 @@ import type { RowHeaderConfig } from './interface'; * Row Header for SpreadSheet */ export class RowHeader extends BaseHeader { - constructor(cfg: RowHeaderConfig) { - super(cfg); + constructor(config: RowHeaderConfig) { + super(config); + } + + protected getCellInstance(node: Node): S2CellType { + const headerConfig = this.getHeaderConfig(); + const { spreadsheet } = headerConfig; + const { rowCell } = spreadsheet.options; + + return ( + rowCell?.(node, spreadsheet, headerConfig) || + new RowCell(node, spreadsheet, headerConfig) + ); } protected layout() { @@ -24,7 +35,7 @@ export class RowHeader extends BaseHeader { scrollY = 0, scrollX = 0, position, - } = this.headerConfig; + } = this.getHeaderConfig(); const rowCell = spreadsheet?.options?.rowCell; // row'cell only show when visible @@ -65,14 +76,14 @@ export class RowHeader extends BaseHeader { } protected offset() { - const { scrollX = 0, scrollY = 0, position } = this.headerConfig; + const { scrollX = 0, scrollY = 0, position } = this.getHeaderConfig(); - // 向右多移动的seriesNumberWidth是序号的宽度 + // 向右多移动的 seriesNumberWidth 是序号的宽度 translateGroup(this, position.x - scrollX, position.y - scrollY); } protected clip(): void { - const { width, height, viewportHeight } = this.headerConfig; + const { width, height, viewportHeight } = this.getHeaderConfig(); this.style.clipPath = new Rect({ style: { diff --git a/packages/s2-core/src/facet/header/series-number.ts b/packages/s2-core/src/facet/header/series-number.ts index 479f6c160f..cf09e628e6 100644 --- a/packages/s2-core/src/facet/header/series-number.ts +++ b/packages/s2-core/src/facet/header/series-number.ts @@ -1,17 +1,32 @@ import { Rect } from '@antv/g'; -import { each, isEmpty } from 'lodash'; +import { each } from 'lodash'; import { SeriesNumberCell } from '../../cell/series-number-cell'; +import type { S2CellType } from '../../common/interface'; import type { SpreadSheet } from '../../sheet-type/index'; import type { PanelBBox } from '../bbox/panelBBox'; -import { translateGroup } from '../utils'; import type { Hierarchy } from '../layout/hierarchy'; -import type { S2CellType } from '../../common/interface'; import type { Node } from '../layout/node'; +import { translateGroup } from '../utils'; import { BaseHeader } from './base'; import type { BaseHeaderConfig } from './interface'; import { getSeriesNumberNodes } from './util'; export class SeriesNumberHeader extends BaseHeader { + constructor(config: BaseHeaderConfig) { + super(config); + } + + protected getCellInstance(node: Node): S2CellType { + const headerConfig = this.getHeaderConfig(); + const { spreadsheet } = headerConfig; + const { seriesNumberCell } = spreadsheet.options; + + return ( + seriesNumberCell?.(node, spreadsheet, headerConfig) || + new SeriesNumberCell(node, spreadsheet, headerConfig) + ); + } + /** * Get seriesNumber header by config */ @@ -49,12 +64,8 @@ export class SeriesNumberHeader extends BaseHeader { }); } - constructor(cfg: BaseHeaderConfig) { - super(cfg); - } - public clip(): void { - const { width, height, viewportHeight } = this.headerConfig; + const { width, height, viewportHeight } = this.getHeaderConfig(); this.style.clipPath = new Rect({ style: { @@ -67,13 +78,7 @@ export class SeriesNumberHeader extends BaseHeader { } public layout() { - const { - nodes, - scrollY = 0, - viewportHeight, - spreadsheet, - } = this.headerConfig; - const seriesNumberCell = spreadsheet?.options?.seriesNumberCell; + const { nodes, scrollY = 0, viewportHeight } = this.getHeaderConfig(); each(nodes, (node) => { const { y, height: cellHeight } = node; @@ -83,21 +88,12 @@ export class SeriesNumberHeader extends BaseHeader { viewportPosition: scrollY, viewportSize: viewportHeight, }); - // 按需渲染:视窗内的才渲染 if (!isHeaderCellInViewport) { return; } - let cell: S2CellType | null = null; - - if (seriesNumberCell) { - cell = seriesNumberCell(node, spreadsheet, this.headerConfig); - } - - if (isEmpty(cell)) { - cell = new SeriesNumberCell(node, spreadsheet, this.headerConfig); - } + const cell = this.getCellInstance(node); node.belongsCell = cell; this.appendChild(cell); @@ -105,12 +101,14 @@ export class SeriesNumberHeader extends BaseHeader { } protected offset() { - const { scrollY = 0, scrollX = 0, position } = this.headerConfig; + const { scrollY = 0, scrollX = 0, position } = this.getHeaderConfig(); translateGroup(this, position.x - scrollX, position.y - scrollY); } public getNodes(): Node[] { - return this.headerConfig.nodes || []; + const { nodes } = this.getHeaderConfig(); + + return nodes || []; } } diff --git a/packages/s2-core/src/facet/header/table-col.ts b/packages/s2-core/src/facet/header/table-col.ts index 7c0af9d875..8df8a0d84d 100644 --- a/packages/s2-core/src/facet/header/table-col.ts +++ b/packages/s2-core/src/facet/header/table-col.ts @@ -11,10 +11,10 @@ import type { SpreadSheet } from '../../sheet-type'; import { getFrozenColWidth } from '../../utils/layout/frozen'; import type { Node } from '../layout/node'; import { - isFrozenCol, - isFrozenTrailingCol, getFrozenLeafNodesCount, getLeftLeafNode, + isFrozenCol, + isFrozenTrailingCol, translateGroupX, } from '../utils'; import { ColHeader } from './col'; @@ -28,17 +28,36 @@ export class TableColHeader extends ColHeader { public frozenTrailingColGroup: Group; - constructor(cfg: ColHeaderConfig) { - super(cfg); + constructor(config: ColHeaderConfig) { + super(config); this.initFrozenColGroups(); } + protected getCellInstance(node: Node) { + const headerConfig = this.getHeaderConfig(); + const { spreadsheet } = headerConfig; + const { seriesNumberCell, colCell } = spreadsheet.options; + + const args: [Node, SpreadSheet, ColHeaderConfig] = [ + node, + spreadsheet, + headerConfig, + ]; + + if (node.field === SERIES_NUMBER_FIELD) { + return seriesNumberCell?.(...args) || new TableCornerCell(...args); + } + + return colCell?.(...args) || new TableColCell(...args); + } + private initFrozenColGroups() { + const headerConfig = this.getHeaderConfig(); const { colCount: frozenColCount, trailingColCount: frozenTrailingColCount, - } = this.headerConfig.spreadsheet.options.frozen!; + } = headerConfig.spreadsheet.options.frozen!; if (frozenColCount) { this.frozenColGroup = this.appendChild( @@ -60,7 +79,7 @@ export class TableColHeader extends ColHeader { } protected isFrozenCell(meta: Node) { - const { spreadsheet } = this.headerConfig; + const { spreadsheet } = this.getHeaderConfig(); const { colCount: frozenColCount = 0, trailingColCount: frozenTrailingColCount = 0, @@ -80,7 +99,7 @@ export class TableColHeader extends ColHeader { this.frozenTrailingColGroup?.removeChildren(); this.frozenColGroup?.removeChildren(); - const { spreadsheet } = this.headerConfig; + const { spreadsheet } = this.getHeaderConfig(); // 额外清除冻结列的 Resizer Area const resizerArea = spreadsheet.facet?.foregroundGroup.getElementById( @@ -90,18 +109,8 @@ export class TableColHeader extends ColHeader { resizerArea?.removeChildren(); } - protected getCellInstance( - item: Node, - spreadsheet: SpreadSheet, - headerConfig: ColHeaderConfig, - ) { - return item.field === SERIES_NUMBER_FIELD - ? new TableCornerCell(item, spreadsheet, headerConfig) - : new TableColCell(item, spreadsheet, headerConfig); - } - private getColFrozenOptionsByNode(node: Node) { - const { spreadsheet } = this.headerConfig; + const { spreadsheet } = this.getHeaderConfig(); const { colCount = 0, trailingColCount = 0 } = spreadsheet.options.frozen!; const leftLeafNode = getLeftLeafNode(node); @@ -168,7 +177,7 @@ export class TableColHeader extends ColHeader { } public getScrollGroupClipBBox = (): RectStyleProps => { - const { width, height, spreadsheet } = this.headerConfig; + const { width, height, spreadsheet } = this.getHeaderConfig(); const topLevelNodes = spreadsheet.facet.getColNodes(0); const { frozenColWidth, frozenTrailingColWidth } = getFrozenColWidth( topLevelNodes, @@ -187,7 +196,7 @@ export class TableColHeader extends ColHeader { protected override offset() { super.offset(); - const { position } = this.headerConfig; + const { position } = this.getHeaderConfig(); translateGroupX(this.frozenColGroup, position.x); translateGroupX(this.frozenTrailingColGroup, position.x); diff --git a/packages/s2-core/src/facet/pivot-facet.ts b/packages/s2-core/src/facet/pivot-facet.ts index f153e22710..39c128a9e6 100644 --- a/packages/s2-core/src/facet/pivot-facet.ts +++ b/packages/s2-core/src/facet/pivot-facet.ts @@ -16,9 +16,9 @@ import { size, sumBy, } from 'lodash'; -import { SeriesNumberCell } from '../cell'; +import { ColCell, RowCell, SeriesNumberCell } from '../cell'; import { - DEFAULT_TREE_ROW_WIDTH, + DEFAULT_TREE_ROW_CELL_WIDTH, LAYOUT_SAMPLE_COUNT, type IconTheme, type MultiData, @@ -30,13 +30,14 @@ import { DebuggerUtil } from '../common/debug'; import type { LayoutResult } from '../common/interface'; import type { PivotDataSet } from '../data-set/pivot-data-set'; import type { SpreadSheet } from '../sheet-type'; +import { safeJsonParse } from '../utils'; import { getDataCellId } from '../utils/cell/data-cell'; import { getActionIconConfig } from '../utils/cell/header-cell'; import { getIndexRangeWithOffsets, getSubTotalNodeWidthOrHeightByLevel, } from '../utils/facet'; -import { getCellWidth, safeJsonParse } from '../utils/text'; +import { getCellWidth } from '../utils/text'; import { BaseFacet } from './base-facet'; import { Frame } from './header'; import { buildHeaderHierarchy } from './layout/build-header-hierarchy'; @@ -156,6 +157,14 @@ export class PivotFacet extends BaseFacet { return options.layoutCellMeta?.(cellMeta) ?? cellMeta; }; + private getPreLevelSampleNode(colNode: Node, colsHierarchy: Hierarchy) { + // 之前是采样每一级第一个节点, 现在 sampleNodesForAllLevels 是采样每一级高度最大的节点 + // 但是初始化布局时只有第一个节点有值, 所以这里需要适配下 + return colsHierarchy + .getNodes(colNode.level - 1) + .find((node) => !node.isTotals); + } + private calculateHeaderNodesCoordinate(layoutResult: LayoutResult) { this.calculateRowNodesCoordinate(layoutResult); this.calculateColNodesCoordinate(layoutResult); @@ -171,22 +180,17 @@ export class PivotFacet extends BaseFacet { const { rowLeafNodes, colLeafNodes, rowsHierarchy, colsHierarchy } = layoutResult; - let preLeafNode = Node.blankNode(); - const colNodes = colsHierarchy.getNodes(); - - colsHierarchy.sampleNodesForAllLevels.forEach((levelSampleNode) => { - levelSampleNode.height = this.getColNodeHeight(levelSampleNode); - colsHierarchy.height += levelSampleNode.height; - }); + this.updateColsHierarchySampleMaxHeightNodes(colsHierarchy); - let currentCollIndex = 0; + let preLeafNode = Node.blankNode(); + let currentColIndex = 0; - for (let i = 0; i < colNodes.length; i++) { - const currentNode = colNodes[i]; + const colNodes = colsHierarchy.getNodes(); + colNodes.forEach((currentNode) => { if (currentNode.isLeaf) { - currentNode.colIndex = currentCollIndex; - currentCollIndex += 1; + currentNode.colIndex = currentColIndex; + currentColIndex += 1; currentNode.x = preLeafNode.x + preLeafNode.width; currentNode.width = this.calculateColLeafNodesWidth( currentNode, @@ -201,20 +205,24 @@ export class PivotFacet extends BaseFacet { if (currentNode.level === 0) { currentNode.y = 0; } else { - const preLevelSample = colsHierarchy.sampleNodesForAllLevels.find( - (node) => node.level === currentNode.level - 1, + const preLevelSample = this.getPreLevelSampleNode( + currentNode, + colsHierarchy, ); currentNode.y = preLevelSample?.y! + preLevelSample?.height! ?? 0; } // 数值置于行头时, 列头的总计即叶子节点, 此时应该用列高: https://github.com/antvis/S2/issues/1715 + const colNodeHeight = this.getColNodeHeight(currentNode, colsHierarchy); + currentNode.height = currentNode.isGrandTotals && currentNode.isLeaf ? colsHierarchy.height - : this.getColNodeHeight(currentNode); + : colNodeHeight; + layoutCoordinate(this.spreadsheet, null, currentNode); - } + }); this.updateCustomFieldsSampleNodes(colsHierarchy); this.adjustColLeafNodesHeight({ @@ -224,7 +232,7 @@ export class PivotFacet extends BaseFacet { this.autoCalculateColNodeWidthAndX(colLeafNodes); if (!isEmpty(this.spreadsheet.options.totals?.col)) { - this.adjustTotalNodesCoordinate(colsHierarchy); + this.adjustGrandTotalNodesCoordinate(colsHierarchy); this.adjustSubTotalNodesCoordinate(colsHierarchy); } } @@ -363,7 +371,7 @@ export class PivotFacet extends BaseFacet { ); } - /* + /** * 4. 自适应 adaptive * 4.1 树状自定义 */ @@ -375,8 +383,22 @@ export class PivotFacet extends BaseFacet { return this.getAdaptGridColWidth(colLeafNodes, rowHeaderWidth); } - private getColNodeHeight(colNode: Node): number { - return this.getDefaultColNodeHeight(colNode); + private getRowNodeHeight(rowNode: Node): number { + const rowCell = new RowCell(rowNode, this.spreadsheet, {}); + const defaultHeight = this.getRowCellHeight(rowNode); + + return this.getCellAdaptiveHeight(rowCell, defaultHeight); + } + + protected getColNodeHeight(colNode: Node, colsHierarchy: Hierarchy): number { + if (!colNode) { + return 0; + } + + const colCell = new ColCell(colNode, this.spreadsheet, {}); + const defaultHeight = this.getDefaultColNodeHeight(colNode, colsHierarchy); + + return this.getCellAdaptiveHeight(colCell, defaultHeight); } /** @@ -465,7 +487,7 @@ export class PivotFacet extends BaseFacet { if (isLeaf) { // 1. 普通树状结构, 叶子节点各占一行, 2. 自定义树状结构 (平铺模式) const rowIndex = (preLeafNode?.rowIndex ?? -1) + 1; - const nodeHeight = this.getRowCellHeight(currentNode); + const nodeHeight = this.getRowNodeHeight(currentNode); currentNode.rowIndex ??= rowIndex; currentNode.colIndex ??= i; @@ -504,7 +526,7 @@ export class PivotFacet extends BaseFacet { }); this.autoCalculateRowNodeHeightAndY(rowLeafNodes); if (!isEmpty(this.spreadsheet.options.totals?.row)) { - this.adjustTotalNodesCoordinate(rowsHierarchy, true); + this.adjustGrandTotalNodesCoordinate(rowsHierarchy, true); this.adjustSubTotalNodesCoordinate(rowsHierarchy, true); } } @@ -541,7 +563,7 @@ export class PivotFacet extends BaseFacet { * @param hierarchy Hierarchy * @param isRowHeader boolean */ - private adjustTotalNodesCoordinate( + private adjustGrandTotalNodesCoordinate( hierarchy: Hierarchy, isRowHeader?: boolean, ) { @@ -577,7 +599,7 @@ export class PivotFacet extends BaseFacet { const grandTotalChildrenHeight = grandTotalChildren?.[0]?.height ?? 0; grandTotalNode.height = hierarchy.height - grandTotalChildrenHeight; - // 调整其叶子结点位置, 以非小计行为准 + // 调整其叶子节点位置, 以非小计行为准 const positionY = find(hierarchy.getNodes(maxLevel), (node: Node) => !node.isTotalMeasure) ?.y || 0; @@ -599,7 +621,7 @@ export class PivotFacet extends BaseFacet { ) { const subTotalNodes = hierarchy .getNodes() - .filter((node: Node) => node.isSubTotals); + .filter((node) => node.isSubTotals); if (isEmpty(subTotalNodes)) { return; @@ -608,7 +630,7 @@ export class PivotFacet extends BaseFacet { const { maxLevel } = hierarchy; forEach(subTotalNodes, (subTotalNode: Node) => { - const subTotalNodeChildren = subTotalNode.children; + const subTotalChildNode = subTotalNode.children; if (isRowHeader) { // 填充行总单元格宽度 @@ -618,8 +640,8 @@ export class PivotFacet extends BaseFacet { 'width', ); - // 调整其叶子结点位置 - forEach(subTotalNodeChildren, (node: Node) => { + // 调整其叶子节点位置 + forEach(subTotalChildNode, (node: Node) => { node.x = hierarchy.getNodes(maxLevel)[0].x; }); } else { @@ -629,22 +651,17 @@ export class PivotFacet extends BaseFacet { subTotalNode.level, 'height', ); - const subTotalNodeChildrenHeight = - subTotalNodeChildren?.[0]?.height ?? 0; + const subTotalNodeChildrenHeight = subTotalChildNode?.[0]?.height ?? 0; subTotalNode.height = totalHeight - subTotalNodeChildrenHeight; - // 调整其叶子结点位置,以非小计单元格为准 - forEach(subTotalNodeChildren, (node: Node) => { - node.y = hierarchy.getNodes(maxLevel)[0].y; - }); - // 调整其叶子结点位置, 以非小计行为准 + // 调整其叶子节点位置, 以非小计行为准 const positionY = find( hierarchy.getNodes(maxLevel), (node: Node) => !node.isTotalMeasure, )?.y || 0; - forEach(subTotalNodeChildren, (node: Node) => { + forEach(subTotalChildNode, (node: Node) => { node.y = positionY; }); } @@ -711,13 +728,13 @@ export class PivotFacet extends BaseFacet { private getColLabelLength(col: Node, rowLeafNodes: Node[]) { // 如果 label 字段形如 "["xx","xxx"]",直接获取其长度 - const labels = safeJsonParse(col?.value); + const labels = safeJsonParse(col?.value); if (isArray(labels)) { return labels.length; } - // 采样前50,根据指标个数获取单元格列宽 + // 采样前 50,根据指标个数获取单元格列宽 let maxLength = 1; for (let index = 0; index < LAYOUT_SAMPLE_COUNT; index++) { @@ -820,7 +837,7 @@ export class PivotFacet extends BaseFacet { this.rowCellTheme?.padding?.left! + this.rowCellTheme?.padding?.right!; - return Math.max(DEFAULT_TREE_ROW_WIDTH, maxLabelWidth); + return Math.max(DEFAULT_TREE_ROW_CELL_WIDTH, maxLabelWidth); } /** @@ -891,7 +908,6 @@ export class PivotFacet extends BaseFacet { rowNodeWidth > fieldNameNodeWidth ? maxLabel : fieldName, ); - // return max return Math.max(rowNodeWidth, fieldNameNodeWidth); } diff --git a/packages/s2-core/src/facet/table-facet.ts b/packages/s2-core/src/facet/table-facet.ts index d78f68c922..9d3ed42d4a 100644 --- a/packages/s2-core/src/facet/table-facet.ts +++ b/packages/s2-core/src/facet/table-facet.ts @@ -1,6 +1,6 @@ import { Group, Rect, type LineStyleProps } from '@antv/g'; import { isBoolean, isNumber, keys, last, maxBy, set } from 'lodash'; -import { TableSeriesNumberCell, TableDataCell } from '../cell'; +import { TableColCell, TableDataCell, TableSeriesNumberCell } from '../cell'; import { FRONT_GROUND_GROUP_COL_FROZEN_Z_INDEX, KEY_GROUP_FROZEN_ROW_RESIZE_AREA, @@ -349,23 +349,24 @@ export class TableFacet extends BaseFacet { return dataCell?.width ?? 0; } - private getColNodeHeight(colNode: Node) { - return this.getDefaultColNodeHeight(colNode); + protected getColNodeHeight(colNode: Node, colsHierarchy: Hierarchy) { + const colCell = new TableColCell(colNode, this.spreadsheet, {}); + const defaultHeight = this.getDefaultColNodeHeight(colNode, colsHierarchy); + + return this.getCellAdaptiveHeight(colCell, defaultHeight); } private calculateColNodesCoordinate( colLeafNodes: Node[], colsHierarchy: Hierarchy, ) { + this.updateColsHierarchySampleMaxHeightNodes(colsHierarchy); + let preLeafNode = Node.blankNode(); - const allNodes = colsHierarchy.getNodes(); + let currentCollIndex = 0; - for (const levelSample of colsHierarchy.sampleNodesForAllLevels) { - levelSample.height = this.getColNodeHeight(levelSample); - colsHierarchy.height += levelSample.height; - } + const allNodes = colsHierarchy.getNodes(); const adaptiveColWidth = this.getAdaptiveColWidth(colLeafNodes); - let currentCollIndex = 0; for (let i = 0; i < allNodes.length; i++) { const currentNode = allNodes[i]; @@ -390,7 +391,7 @@ export class TableFacet extends BaseFacet { currentNode?.parent?.y! + currentNode?.parent?.height! ?? 0; } - currentNode.height = this.getColNodeHeight(currentNode); + currentNode.height = this.getColNodeHeight(currentNode, colsHierarchy); } const topLevelNodes = colsHierarchy.getNodes(0); diff --git a/packages/s2-core/src/interaction/base-interaction/click/row-column-click.ts b/packages/s2-core/src/interaction/base-interaction/click/row-column-click.ts index d678513a13..1a7be05a58 100644 --- a/packages/s2-core/src/interaction/base-interaction/click/row-column-click.ts +++ b/packages/s2-core/src/interaction/base-interaction/click/row-column-click.ts @@ -178,7 +178,7 @@ export class RowColumnClick extends BaseEvent implements BaseEventImplement { * 2. [displaySiblingNode]: 当前这一组的列隐藏后, 需要将展开按钮显示到对应的兄弟节点 * 这样不用每次 render 的时候实时计算, 渲染列头单元格 直接取数据即可 */ - public hideSelectedColumns() { + public async hideSelectedColumns(): Promise { const { interaction } = this.spreadsheet; const selectedColumnNodes = interaction @@ -190,7 +190,7 @@ export class RowColumnClick extends BaseEvent implements BaseEventImplement { ) as string[]; // 兼容多选 - hideColumnsByThunkGroup(this.spreadsheet, selectedColumnFields, true); + await hideColumnsByThunkGroup(this.spreadsheet, selectedColumnFields, true); } private handleExpandIconClick(node: Node) { diff --git a/packages/s2-core/src/interaction/base-interaction/hover.ts b/packages/s2-core/src/interaction/base-interaction/hover.ts index ef2a79d228..ed8221937f 100644 --- a/packages/s2-core/src/interaction/base-interaction/hover.ts +++ b/packages/s2-core/src/interaction/base-interaction/hover.ts @@ -144,7 +144,9 @@ export class HoverEvent extends BaseEvent implements BaseEventImplement { } private showEllipsisTooltip(event: CanvasEvent, cell: S2CellType | null) { - if (!cell || cell.getActualText() === cell.getFieldValue()) { + if (!cell || !cell.isTextOverflowing()) { + this.spreadsheet.hideTooltip(); + return; } @@ -191,7 +193,7 @@ export class HoverEvent extends BaseEvent implements BaseEventImplement { public bindDataCellHover() { this.spreadsheet.on(S2Event.DATA_CELL_HOVER, (event: CanvasEvent) => { - const cell = this.spreadsheet.getCell(event.target) as S2CellType; + const cell = this.spreadsheet.getCell(event.target); if (isEmpty(cell)) { return; @@ -211,6 +213,8 @@ export class HoverEvent extends BaseEvent implements BaseEventImplement { stateName: InteractionStateName.HOVER, }); + this.showEllipsisTooltip(event, cell); + if (interactionOptions?.hoverHighlight) { // highlight all the row and column cells which the cell belongs to this.updateRowColCells(meta); diff --git a/packages/s2-core/src/interaction/event-controller.ts b/packages/s2-core/src/interaction/event-controller.ts index e7dff32610..6482d607b4 100644 --- a/packages/s2-core/src/interaction/event-controller.ts +++ b/packages/s2-core/src/interaction/event-controller.ts @@ -6,9 +6,7 @@ import { } from '@antv/g'; import { each, get, hasIn, isEmpty, isNil } from 'lodash'; import { CustomImage } from '../engine'; - import { GuiIcon } from '../common'; - import { CellType, GEventType, @@ -155,13 +153,13 @@ export class EventController { const { interaction } = this.spreadsheet; if ( - interaction.hasIntercepts([ + interaction?.hasIntercepts?.([ InterceptType.DATA_CELL_BRUSH_SELECTION, InterceptType.COL_CELL_BRUSH_SELECTION, InterceptType.ROW_CELL_BRUSH_SELECTION, ]) ) { - interaction.removeIntercepts([ + interaction?.removeIntercepts?.([ InterceptType.DATA_CELL_BRUSH_SELECTION, InterceptType.ROW_CELL_BRUSH_SELECTION, InterceptType.COL_CELL_BRUSH_SELECTION, @@ -178,7 +176,7 @@ export class EventController { } this.spreadsheet.emit(S2Event.GLOBAL_RESET, event); - interaction.reset(); + interaction?.reset(); } private isMouseEvent(event: Event): event is MouseEvent { diff --git a/packages/s2-core/src/interaction/root.ts b/packages/s2-core/src/interaction/root.ts index 620c529f82..7fa9e23ef8 100644 --- a/packages/s2-core/src/interaction/root.ts +++ b/packages/s2-core/src/interaction/root.ts @@ -313,8 +313,15 @@ export class RootInteraction { unmergeCell(this.spreadsheet, removedCells); }; - public hideColumns(hiddenColumnFields: string[] = [], forceRender = true) { - hideColumnsByThunkGroup(this.spreadsheet, hiddenColumnFields, forceRender); + public async hideColumns( + hiddenColumnFields: string[] = [], + forceRender = true, + ): Promise { + await hideColumnsByThunkGroup( + this.spreadsheet, + hiddenColumnFields, + forceRender, + ); } private getBrushSelectionInfo( diff --git a/packages/s2-core/src/interaction/row-column-resize.ts b/packages/s2-core/src/interaction/row-column-resize.ts index cd766ee417..a73e598085 100644 --- a/packages/s2-core/src/interaction/row-column-resize.ts +++ b/packages/s2-core/src/interaction/row-column-resize.ts @@ -7,8 +7,6 @@ import type { } from '../common'; import { InterceptType, - MIN_CELL_HEIGHT, - MIN_CELL_WIDTH, ResizeAreaEffect, ResizeDirectionType, ResizeType, @@ -491,11 +489,12 @@ export class RowColumnResize extends BaseEvent implements BaseEventImplement { end: ResizeGuideLinePath; }, ) { + const { minCellWidth } = this.getResizeAreaTheme(); let nextOffsetX = offsetX - this.resizeStartPosition.offsetX!; - if (resizeInfo.width + nextOffsetX < MIN_CELL_WIDTH) { + if (resizeInfo.width + nextOffsetX < minCellWidth) { // 禁止拖到最小宽度 - nextOffsetX = -(resizeInfo.width - MIN_CELL_WIDTH); + nextOffsetX = -(resizeInfo.width - minCellWidth); } const resizedOffsetX = resizeInfo.offsetX + resizeInfo.width + nextOffsetX; @@ -518,10 +517,11 @@ export class RowColumnResize extends BaseEvent implements BaseEventImplement { end: ResizeGuideLinePath; }, ) { + const { minCellHeight } = this.getResizeAreaTheme(); let nextOffsetY = offsetY - this.resizeStartPosition.offsetY!; - if (resizeInfo.height + nextOffsetY < MIN_CELL_HEIGHT) { - nextOffsetY = -(resizeInfo.height - MIN_CELL_HEIGHT); + if (resizeInfo.height + nextOffsetY < minCellHeight) { + nextOffsetY = -(resizeInfo.height - minCellHeight); } const resizedOffsetY = resizeInfo.offsetY + resizeInfo.height + nextOffsetY; diff --git a/packages/s2-core/src/sheet-type/index.ts b/packages/s2-core/src/sheet-type/index.ts index 1d58062e8f..f056884c5f 100644 --- a/packages/s2-core/src/sheet-type/index.ts +++ b/packages/s2-core/src/sheet-type/index.ts @@ -1,3 +1,6 @@ +// https://github.com/microsoft/TypeScript/issues/47663#issuecomment-1270716220 +import type {} from '@antv/g-lite'; + import { PivotSheet } from './pivot-sheet'; import { TableSheet } from './table-sheet'; import { SpreadSheet } from './spread-sheet'; diff --git a/packages/s2-core/src/sheet-type/spread-sheet.ts b/packages/s2-core/src/sheet-type/spread-sheet.ts index 901046634d..2456dbddff 100644 --- a/packages/s2-core/src/sheet-type/spread-sheet.ts +++ b/packages/s2-core/src/sheet-type/spread-sheet.ts @@ -4,7 +4,6 @@ import { FederatedPointerEvent as CanvasEvent, DisplayObject, runtime, - type CanvasConfig, } from '@antv/g'; import { Renderer } from '@antv/g-canvas'; import { @@ -64,7 +63,6 @@ import type { BaseDataSet } from '../data-set'; import type { BaseFacet } from '../facet'; import type { Node } from '../facet/layout/node'; import { RootInteraction } from '../interaction/root'; -import { getTheme } from '../theme'; import { HdAdapter } from '../ui/hd-adapter'; import { BaseTooltip } from '../ui/tooltip'; import { removeOffscreenCanvas } from '../utils/canvas'; @@ -78,6 +76,7 @@ import { } from '../utils/merge'; import { injectThemeVars } from '../utils/theme'; import { getTooltipData, getTooltipOptions } from '../utils/tooltip'; +import { getTheme } from '../theme'; /** * 关闭 CSS 解析的开关,可以提升首屏性能, @@ -303,7 +302,7 @@ export abstract class SpreadSheet extends EE { event: CanvasEvent | MouseEvent, cellInfos: TooltipData[], options?: TooltipOptions, - ) { + ): Promise | void { const { enable: showTooltip, content } = getTooltipOptions(this, event)!; if (!showTooltip) { @@ -323,7 +322,7 @@ export abstract class SpreadSheet extends EE { }, }); - this.showTooltip({ + return this.showTooltip({ data: tooltipData, position: { x: event.clientX, @@ -385,7 +384,7 @@ export abstract class SpreadSheet extends EE { this.registerIcons(); } - private doRender(reloadData = true, options: S2RenderOptions = {}) { + private async doRender(reloadData = true, options: S2RenderOptions = {}) { // 防止表格卸载后, 再次调用 render 函数的报错 if ( !this.getCanvasElement() || @@ -409,8 +408,9 @@ export abstract class SpreadSheet extends EE { } this.buildFacet(); + if (reBuildHiddenColumnsDetail) { - this.initHiddenColumnsDetail(); + await this.initHiddenColumnsDetail(); } this.emit(S2Event.LAYOUT_AFTER_RENDER); @@ -425,13 +425,16 @@ export abstract class SpreadSheet extends EE { this.doRender(reloadData, options); } - public async render(reloadData?: boolean, options?: S2RenderOptions) { + public async render( + reloadData?: boolean, + options?: S2RenderOptions, + ): Promise { if (this.destroyed) { return; } await this.container.ready; - this.doRender(reloadData, options); + await this.doRender(reloadData, options); } public destroy() { @@ -636,13 +639,14 @@ export abstract class SpreadSheet extends EE { devicePixelRatio = 1, } = this.options; - // base canvas group + const renderer = new Renderer(); + this.container = new Canvas({ container: this.getMountContainer(dom) as HTMLElement, width, height, devicePixelRatio: Math.max(devicePixelRatio, MIN_DEVICE_PIXEL_RATIO), - renderer: new Renderer() as unknown as CanvasConfig['renderer'], + renderer, supportsCSSTransform: supportCSSTransform, }); @@ -659,7 +663,7 @@ export abstract class SpreadSheet extends EE { } // 初次渲染时, 如果配置了隐藏列, 则生成一次相关配置信息 - private initHiddenColumnsDetail = () => { + private async initHiddenColumnsDetail() { const { hiddenColumnFields } = this.options.interaction!; const lastHiddenColumnsDetail = this.store.get('hiddenColumnsDetail'); @@ -668,8 +672,8 @@ export abstract class SpreadSheet extends EE { return; } - hideColumnsByThunkGroup(this, hiddenColumnFields, true); - }; + await hideColumnsByThunkGroup(this, hiddenColumnFields, true); + } private clearCanvasEvent() { const canvasEvents = this.getEvents(); diff --git a/packages/s2-core/src/theme/index.ts b/packages/s2-core/src/theme/index.ts index 4d4784528f..31ded99ace 100644 --- a/packages/s2-core/src/theme/index.ts +++ b/packages/s2-core/src/theme/index.ts @@ -2,7 +2,8 @@ import { FONT_FAMILY, INTERVAL_BAR_HEIGHT } from '../common/constant'; import type { DefaultCellTheme, - InternalFullyTheme, + S2Theme, + TextTheme, ThemeCfg, } from '../common/interface'; import type { SpreadSheet } from '../sheet-type'; @@ -15,7 +16,7 @@ import { getPalette } from '../utils/theme'; */ export const getTheme = ( themeCfg: Omit & { spreadsheet?: SpreadSheet }, -): InternalFullyTheme => { +): S2Theme => { const { basicColors, semanticColors, @@ -25,149 +26,163 @@ export const getTheme = ( const isTable = themeCfg?.spreadsheet?.isTableMode(); const boldTextDefaultFontWeight = isWindows() ? 'bold' : 700; - const getDataCell = () => - ({ - bolderText: { - fontFamily: FONT_FAMILY, - fontSize: 12, - fontWeight: boldTextDefaultFontWeight, - fill: basicColors[13], - opacity: 1, - textAlign: 'right', - textBaseline: 'middle', - linkTextFill: basicColors[6], - }, - text: { - fontFamily: FONT_FAMILY, - fontSize: 12, - fontWeight: 'normal', - fill: basicColors[13], - opacity: 1, - textAlign: 'right', - textBaseline: 'middle', - linkTextFill: basicColors[6], + const getHeaderCellTextOverflow = (): TextTheme => ({ + wordWrap: true, + maxLines: 1, + textOverflow: 'ellipsis', + }); + + const getDataCellTextOverflow = (): TextTheme => ({ + wordWrap: true, + // 数值单元格不建议文字换行, 通常是展示数值, 会有歧义 (明细表除外, 自行覆盖主题配置) + maxLines: 1, + textOverflow: 'ellipsis', + }); + + const getDataCell = (): DefaultCellTheme => ({ + bolderText: { + fontFamily: FONT_FAMILY, + fontSize: 12, + fontWeight: boldTextDefaultFontWeight, + fill: basicColors[13], + opacity: 1, + textAlign: 'right', + textBaseline: 'middle', + linkTextFill: basicColors[6], + ...getDataCellTextOverflow(), + }, + text: { + fontFamily: FONT_FAMILY, + fontSize: 12, + fontWeight: 'normal', + fill: basicColors[13], + opacity: 1, + textAlign: 'right', + textBaseline: 'middle', + linkTextFill: basicColors[6], + ...getDataCellTextOverflow(), + }, + cell: { + // ----------- background color ----------- + crossBackgroundColor: basicColors[1], + backgroundColor: basicColors[8], + backgroundColorOpacity: 1, + // ----------- border color -------------- + horizontalBorderColor: basicColors[9], + horizontalBorderColorOpacity: 1, + verticalBorderColor: basicColors[9], + verticalBorderColorOpacity: 1, + // ----------- border width -------------- + horizontalBorderWidth: 1, + verticalBorderWidth: 1, + // -------------- layout ----------------- + padding: { + top: 8, + right: 8, + bottom: 8, + left: 8, }, - cell: { - // ----------- background color ----------- - crossBackgroundColor: basicColors[1], - backgroundColor: basicColors[8], - backgroundColorOpacity: 1, - // ----------- border color -------------- - horizontalBorderColor: basicColors[9], - horizontalBorderColorOpacity: 1, - verticalBorderColor: basicColors[9], - verticalBorderColorOpacity: 1, - // ----------- border width -------------- - horizontalBorderWidth: 1, - verticalBorderWidth: 1, - // -------------- layout ----------------- - padding: { - top: 8, - right: 8, - bottom: 8, - left: 8, - }, - /* ---------- interaction state ----------- */ - interactionState: { - // -------------- hover ------------------- - hover: { - backgroundColor: basicColors[2], - backgroundOpacity: 0.6, - }, - // -------------- keep hover ------------------- - hoverFocus: { - backgroundColor: basicColors[2], - backgroundOpacity: 0.6, - borderColor: basicColors[14], - borderWidth: 1, - borderOpacity: 1, - }, - // -------------- selected ------------------- - selected: { - backgroundColor: basicColors[2], - backgroundOpacity: 0.6, - }, - // -------------- unselected ------------------- - unselected: { - backgroundOpacity: 0.3, - textOpacity: 0.3, - opacity: 0.3, - }, - // -------------- searchResult ------------------- - searchResult: { - backgroundColor: otherColors?.results ?? basicColors[2], - backgroundOpacity: 1, - }, - // -------------- highlight ------------------- - highlight: { - backgroundColor: otherColors?.highlight ?? basicColors[6], - backgroundOpacity: 1, - }, - // -------------- prepare select -------------- - prepareSelect: { - borderColor: basicColors[14], - borderOpacity: 1, - borderWidth: 1, - }, + /* ---------- interaction state ----------- */ + interactionState: { + // -------------- hover ------------------- + hover: { + backgroundColor: basicColors[2], + backgroundOpacity: 0.6, }, - }, - // ------------- mini chart --------------- - miniChart: { - // ------------- line graph ----------------- - line: { - point: { - size: 2.2, - fill: basicColors[6], - opacity: 1, - }, - linkLine: { - size: 1.5, - fill: basicColors[6], - opacity: 0.6, - }, + // -------------- keep hover ------------------- + hoverFocus: { + backgroundColor: basicColors[2], + backgroundOpacity: 0.6, + borderColor: basicColors[14], + borderWidth: 1, + borderOpacity: 1, + }, + // -------------- selected ------------------- + selected: { + backgroundColor: basicColors[2], + backgroundOpacity: 0.6, + }, + // -------------- unselected ------------------- + unselected: { + backgroundOpacity: 0.3, + textOpacity: 0.3, + opacity: 0.3, + }, + // -------------- searchResult ------------------- + searchResult: { + backgroundColor: otherColors?.results ?? basicColors[2], + backgroundOpacity: 1, + }, + // -------------- highlight ------------------- + highlight: { + backgroundColor: otherColors?.highlight ?? basicColors[6], + backgroundOpacity: 1, }, - // ------------- bar graph ----------------- - bar: { - intervalPadding: 4, + // -------------- prepare select -------------- + prepareSelect: { + borderColor: basicColors[14], + borderOpacity: 1, + borderWidth: 1, + }, + }, + }, + // ------------- mini chart --------------- + miniChart: { + // ------------- line graph ----------------- + line: { + point: { + size: 2.2, fill: basicColors[6], opacity: 1, }, - // ------------- bullet graph ----------------- - bullet: { - progressBar: { - widthPercent: 0.6, - height: 10, - innerHeight: 6, - }, - comparativeMeasure: { - width: 1, - height: 12, - fill: basicColors[13], - opacity: 0.25, - }, - rangeColors: { - good: semanticColors?.green, - satisfactory: semanticColors.yellow, - bad: semanticColors.red, - }, - backgroundColor: '#E9E9E9', - }, - // ------------ interval bar graph ----------------- - interval: { - height: INTERVAL_BAR_HEIGHT, - fill: basicColors[7], + linkLine: { + size: 1.5, + fill: basicColors[6], + opacity: 0.6, }, }, - icon: { - fill: basicColors[13], - size: 10, - margin: { - right: 4, - left: 4, + // ------------- bar graph ----------------- + bar: { + intervalPadding: 4, + fill: basicColors[6], + opacity: 1, + }, + // ------------- bullet graph ----------------- + bullet: { + progressBar: { + widthPercent: 0.6, + height: 10, + innerHeight: 6, + }, + comparativeMeasure: { + width: 1, + height: 12, + fill: basicColors[13], + opacity: 0.25, }, + rangeColors: { + good: semanticColors?.green, + satisfactory: semanticColors.yellow, + bad: semanticColors.red, + }, + backgroundColor: '#E9E9E9', + }, + // ------------ interval bar graph ----------------- + interval: { + height: INTERVAL_BAR_HEIGHT, + fill: basicColors[7], }, - }) as DefaultCellTheme; + }, + icon: { + fill: basicColors[13], + size: 10, + margin: { + right: 4, + left: 4, + }, + }, + }); return { // ------------- Headers ------------------- @@ -180,6 +195,7 @@ export const getTheme = ( opacity: 1, textAlign: isTable ? 'center' : 'left', textBaseline: 'middle', + ...getHeaderCellTextOverflow(), }, text: { fontFamily: FONT_FAMILY, @@ -189,6 +205,7 @@ export const getTheme = ( opacity: 1, textAlign: 'right', textBaseline: 'middle', + ...getHeaderCellTextOverflow(), }, cell: { // ----------- background color ----------- @@ -229,6 +246,9 @@ export const getTheme = ( opacity: 1, textBaseline: 'middle', textAlign: 'center', + ...getHeaderCellTextOverflow(), + // 序号不换行 + maxLines: 1, }, measureText: { fontFamily: FONT_FAMILY, @@ -239,6 +259,7 @@ export const getTheme = ( opacity: 1, textAlign: isTable ? 'center' : 'left', textBaseline: 'middle', + ...getHeaderCellTextOverflow(), }, bolderText: { fontFamily: FONT_FAMILY, @@ -249,6 +270,7 @@ export const getTheme = ( opacity: 1, textAlign: isTable ? 'center' : 'left', textBaseline: 'middle', + ...getHeaderCellTextOverflow(), }, text: { fontFamily: FONT_FAMILY, @@ -260,6 +282,7 @@ export const getTheme = ( textBaseline: 'middle', // default align center for row cell in table mode textAlign: isTable ? 'center' : 'left', + ...getHeaderCellTextOverflow(), }, cell: { // ----------- background color ----------- @@ -334,9 +357,11 @@ export const getTheme = ( fontWeight: 'normal', fill: basicColors[0], opacity: 1, - // 默认数值字段和 dataCell 数值对齐 + // 默认列头的数值字段和 dataCell 数值对齐 textAlign: 'right', textBaseline: 'middle', + ...getHeaderCellTextOverflow(), + // maxLines: 1, }, bolderText: { fontFamily: FONT_FAMILY, @@ -346,6 +371,7 @@ export const getTheme = ( opacity: 1, textAlign: 'center', textBaseline: 'middle', + ...getHeaderCellTextOverflow(), }, text: { fontFamily: FONT_FAMILY, @@ -355,6 +381,7 @@ export const getTheme = ( opacity: 1, textAlign: 'center', textBaseline: 'middle', + ...getHeaderCellTextOverflow(), }, cell: { // ----------- background color ----------- @@ -435,6 +462,8 @@ export const getTheme = ( guideLineColor: basicColors[7], guideLineDisableColor: 'rgba(0,0,0,0.25)', guideLineDash: [3, 3], + minCellWidth: 42, + minCellHeight: 40, /* ---------- interaction state ----------- */ interactionState: { @@ -480,5 +509,5 @@ export const getTheme = ( color: basicColors[8], opacity: 1, }, - } as InternalFullyTheme; + }; }; diff --git a/packages/s2-core/src/utils/cell/cell.ts b/packages/s2-core/src/utils/cell/cell.ts index 8c86530c1f..cb50d3f633 100644 --- a/packages/s2-core/src/utils/cell/cell.ts +++ b/packages/s2-core/src/utils/cell/cell.ts @@ -51,7 +51,7 @@ export const getVerticalIconPosition = ( } }; -// 获取text及其跟随icon的位置坐标 +// 获取 text 及其跟随 icon 的位置坐标 export const getHorizontalTextIconPosition = (options: { bbox: SimpleBBox; textWidth: number; diff --git a/packages/s2-core/src/utils/common.ts b/packages/s2-core/src/utils/common.ts new file mode 100644 index 0000000000..2d6ecf801f --- /dev/null +++ b/packages/s2-core/src/utils/common.ts @@ -0,0 +1,7 @@ +export const safeJsonParse = (val: string): T | null => { + try { + return JSON.parse(val); + } catch (err) { + return null; + } +}; diff --git a/packages/s2-core/src/utils/g-mini-charts.ts b/packages/s2-core/src/utils/g-mini-charts.ts index 5bd6e343c9..27edc51ee8 100644 --- a/packages/s2-core/src/utils/g-mini-charts.ts +++ b/packages/s2-core/src/utils/g-mini-charts.ts @@ -3,7 +3,9 @@ * https://github.com/antvis/g */ -import { get, isEmpty, isNil, map, max, min } from 'lodash'; +import { isEmpty, isNil, map, max, min } from 'lodash'; +import type { DataCell } from '..'; +import { CellType, MiniChartTypes } from '../common/constant'; import { CellClipBox, type BaseChartData, @@ -11,19 +13,19 @@ import { type MiniChartData, type S2CellType, } from '../common/interface'; -import type { DefaultCellTheme, RangeColors } from '../common/interface/theme'; +import type { + DefaultCellTheme, + InternalFullyCellTheme, + RangeColors, +} from '../common/interface/theme'; +import { getIntervalScale } from '../utils/condition/condition'; +import { parseNumberWithPrecision } from '../utils/formatter'; import { renderCircle, - renderPolyline, renderLine, + renderPolyline, renderRect, - renderText, } from '../utils/g-renders'; -import { CellType, MiniChartTypes } from '../common/constant'; -import { parseNumberWithPrecision } from '../utils/formatter'; -import { getIntervalScale } from '../utils/condition/condition'; -import type { DataCell } from '..'; -import { getEllipsisText, getEmptyPlaceholder } from './text'; interface FractionDigitsOptions { min: number; @@ -242,7 +244,7 @@ export const transformRatioToPercent = ( // ========================= 条件格式柱图相关 ============================== /** - * 绘制单元格内的 条件格式 柱图 + * 绘制单元格内的 条件格式 柱图 */ export const drawInterval = (cell: DataCell) => { if (isEmpty(cell)) { @@ -297,18 +299,20 @@ export const drawInterval = (cell: DataCell) => { }; /** - * 绘制单元格内的 mini子弹图 + * 绘制单元格内的 mini 子弹图 */ export const drawBullet = (value: BulletValue, cell: S2CellType) => { - const dataCellStyle = cell.getStyle(CellType.DATA_CELL); - const { x, y, height, width, spreadsheet } = cell.getMeta(); + const dataCellStyle: InternalFullyCellTheme = cell.getStyle( + CellType.DATA_CELL, + ); + const { x, y, height, width } = cell.getMeta(); if (isEmpty(value)) { - renderText(cell, [], { + cell.renderTextShape({ + ...dataCellStyle.text, x: x + width - dataCellStyle.cell.padding.right, y: y + height / 2, - text: getEmptyPlaceholder(cell, spreadsheet.options.placeholder)!, - ...dataCellStyle.text, + text: '', }); return; @@ -337,7 +341,7 @@ export const drawBullet = (value: BulletValue, cell: S2CellType) => { const padding = dataCellStyle.cell.padding; const contentWidth = width - padding.left - padding.right; - // 子弹图先占位(bulletWidth),剩下空间给文字(measureWidth) + // 子弹图先占位 (bulletWidth),剩下空间给文字 (measureWidth) const bulletWidth = widthPercent * contentWidth; const measureWidth = contentWidth - bulletWidth; @@ -358,11 +362,6 @@ export const drawBullet = (value: BulletValue, cell: S2CellType) => { }); // 2. 进度条 - const getRangeColor = get( - cell.getMeta(), - 'spreadsheet.options.bullet.getRangeColor', - ); - const displayBulletWidth = Math.max( Math.min(bulletWidth * displayMeasure, bulletWidth), 0, @@ -373,9 +372,7 @@ export const drawBullet = (value: BulletValue, cell: S2CellType) => { y: positionY + (progressBar.height - progressBar.innerHeight) / 2, width: displayBulletWidth, height: progressBar.innerHeight, - fill: - getRangeColor?.(displayMeasure, displayTarget) ?? - getBulletRangeColor(displayMeasure, displayTarget, rangeColors), + fill: getBulletRangeColor(displayMeasure, displayTarget, rangeColors), }); // 3.测量标记线 @@ -387,24 +384,20 @@ export const drawBullet = (value: BulletValue, cell: S2CellType) => { x2: lineX, y2: y + (height - comparativeMeasure.height) / 2 + comparativeMeasure.height, - stroke: comparativeMeasure?.fill || comparativeMeasure?.color, + stroke: comparativeMeasure?.fill, lineWidth: comparativeMeasure.width, opacity: comparativeMeasure?.opacity, }); // 4.绘制指标 - const text = getEllipsisText({ - measureTextWidth: spreadsheet.measureTextWidth, - text: measurePercent, - maxWidth: measureWidth - padding.right, - fontParam: dataCellStyle.text, - }); + const maxTextWidth = measureWidth - padding.right; - renderText(cell, [], { + cell.renderTextShape({ + ...dataCellStyle.text, x: positionX - padding.right, y: y + height / 2, - text, - ...dataCellStyle.text, + text: measurePercent, + wordWrapWidth: maxTextWidth, }); }; diff --git a/packages/s2-core/src/utils/g-renders.ts b/packages/s2-core/src/utils/g-renders.ts index 032447dd7e..a97f9b3189 100644 --- a/packages/s2-core/src/utils/g-renders.ts +++ b/packages/s2-core/src/utils/g-renders.ts @@ -9,7 +9,6 @@ import { Polygon, Polyline, Rect, - Text, type CircleStyleProps, type DisplayObject, type LineStyleProps, @@ -18,7 +17,7 @@ import { type RectStyleProps, type TextStyleProps, } from '@antv/g'; -import { forEach, isArray, isEmpty, isFunction } from 'lodash'; +import { isArray, isEmpty, isFunction } from 'lodash'; import { GuiIcon, type GuiIconCfg } from '../common/icons/gui-icon'; import { CustomText } from '../engine/CustomText'; @@ -53,18 +52,21 @@ export function renderCircle(group: Group, style: CircleStyleProps): Circle { ); } -export function renderText( - group: Group, - shapes: DisplayObject[], - attrs: TextStyleProps, - appendInfo?: T, -): Text { - if (!isEmpty(shapes) && group) { - forEach(shapes, (shape: DisplayObject) => { - if (group.contains(shape)) { - group.removeChild(shape); - } - }); +/** + * @description 如果在单元格内绘制, 是使用 cell.renderTextShape(options) + */ +export function renderText(options: { + group: Group; + textShape?: DisplayObject; + style: TextStyleProps; + appendInfo?: T; +}): CustomText { + const { group, textShape, style, appendInfo } = options; + + if (textShape && group) { + if (group.contains(textShape)) { + group.removeChild(textShape); + } } return group?.appendChild( @@ -79,12 +81,12 @@ export function renderText( fontVariant: 'normal', fontStyle: 'normal', lineWidth: 1, - ...attrs, + ...style, }, }, appendInfo || ({} as T), ), - ); + ) as CustomText; } export function renderLine(group: Group, options: LineStyleProps): Line { diff --git a/packages/s2-core/src/utils/hide-columns.ts b/packages/s2-core/src/utils/hide-columns.ts index d813e6e315..1167af1ae5 100644 --- a/packages/s2-core/src/utils/hide-columns.ts +++ b/packages/s2-core/src/utils/hide-columns.ts @@ -113,12 +113,12 @@ export const getHiddenColumnsThunkGroup = ( * 重置交互: 比如选中当前列, 显示高亮背景色, 隐藏后需要取消高亮 * 钩子: 提供当前被隐藏的列, 和全量的隐藏组 */ -export const hideColumns = ( +export const hideColumns = async ( spreadsheet: SpreadSheet, selectedColumnFields: string[] = [], forceRender = false, ) => { - const renderByHiddenColumns = ( + const renderByHiddenColumns = async ( hiddenColumnFields: string[] = [], hiddenColumnsDetail: HiddenColumnsInfo[] = [], ) => { @@ -129,11 +129,11 @@ export const hideColumns = ( }); spreadsheet.interaction.reset(); spreadsheet.store.set('hiddenColumnsDetail', hiddenColumnsDetail); - spreadsheet.render(false, { reBuildHiddenColumnsDetail: false }); + await spreadsheet.render(false, { reBuildHiddenColumnsDetail: false }); }; if (isEmpty(selectedColumnFields) && forceRender) { - renderByHiddenColumns(); + await renderByHiddenColumns(); return; } @@ -175,7 +175,7 @@ export const hideColumns = ( hiddenColumnsDetail, ); - renderByHiddenColumns(hiddenColumnFields, hiddenColumnsDetail); + await renderByHiddenColumns(hiddenColumnFields, hiddenColumnsDetail); }; /** @@ -199,14 +199,14 @@ export const getColumns = (spreadsheet: SpreadSheet) => { * @param hiddenColumnFields 隐藏的列头字段 * @param forceRender 隐藏的列头字段为空时, 是否强制更新 */ -export const hideColumnsByThunkGroup = ( +export const hideColumnsByThunkGroup = async ( spreadsheet: SpreadSheet, hiddenColumnFields: string[] = [], forceRender = false, ) => { // 隐藏列为空时, 有可能是隐藏后又展开 ( [] => ['A'] => []), 所以需要更新一次, 将渲染的展开icon, 隐藏列信息等清空 if (isEmpty(hiddenColumnFields) && forceRender) { - hideColumns(spreadsheet, hiddenColumnFields, true); + await hideColumns(spreadsheet, hiddenColumnFields, true); } const columns = getColumns(spreadsheet); @@ -216,9 +216,11 @@ export const hideColumnsByThunkGroup = ( hiddenColumnFields, ); - hiddenColumnsGroup.forEach((fields) => { - hideColumns(spreadsheet, fields, forceRender); - }); + await Promise.all( + hiddenColumnsGroup.map(async (fields) => { + await hideColumns(spreadsheet, fields, forceRender); + }), + ); }; export const isLastColumnAfterHidden = ( diff --git a/packages/s2-core/src/utils/index.ts b/packages/s2-core/src/utils/index.ts index 7147a8c58d..9bb50659e0 100644 --- a/packages/s2-core/src/utils/index.ts +++ b/packages/s2-core/src/utils/index.ts @@ -1,4 +1,6 @@ export { auto } from './formatter'; + +export * from './common'; export * from './layout'; export * from './text'; export * from './color'; diff --git a/packages/s2-core/src/utils/text.ts b/packages/s2-core/src/utils/text.ts index 27cf891dcd..9e22337e56 100644 --- a/packages/s2-core/src/utils/text.ts +++ b/packages/s2-core/src/utils/text.ts @@ -19,17 +19,21 @@ import { } from '../common/constant'; import { CellClipBox, - type Condition, type DataCellStyle, type MultiData, type S2CellType, type S2Options, type SimpleData, + type TextCondition, type ViewMeta, } from '../common/interface'; -import type { Padding, TextTheme } from '../common/interface/theme'; +import type { + InternalFullyCellTheme, + Padding, + TextTheme, +} from '../common/interface/theme'; import type { SimpleBBox } from '../engine'; -import { renderIcon, renderText } from '../utils/g-renders'; +import { renderIcon } from '../utils/g-renders'; import { getHorizontalTextIconPosition, getVerticalIconPosition, @@ -39,6 +43,16 @@ import type { GroupedIcons } from './cell/header-cell'; import { getIconPosition } from './condition/condition'; import { renderMiniChart } from './g-mini-charts'; +export const getDisplayText = ( + text: string | number | null | undefined, + placeholder?: string, +) => { + const empty = placeholder ?? EMPTY_PLACEHOLDER; + + // [null, undefined, ''] will return empty + return isNil(text) || text === '' ? empty : `${text}`; +}; + /** * 获取文本的 ... 文本。 * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关): @@ -48,6 +62,7 @@ import { renderMiniChart } from './g-mini-charts'; * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等 * @param maxWidth * @param font + * @deprecated */ export const getEllipsisTextInner = ( measureTextWidth: (text: number | string, font: unknown) => number, @@ -144,6 +159,7 @@ export const getEllipsisTextInner = ( * @param maxWidth * @param font optional 文本字体 或 优先显示的文本 * @param priority optional 优先显示的文本 + * @deprecated */ export const getEllipsisText = ({ measureTextWidth, @@ -161,11 +177,10 @@ export const getEllipsisText = ({ placeholder?: string; }) => { let font: TextTheme = {} as TextTheme; - const empty = placeholder ?? EMPTY_PLACEHOLDER; - // [null, undefined, ''] will return empty - const finalText = isNil(text) || text === '' ? empty : `${text}`; let priority = priorityParam; + const finalText = getDisplayText(text, placeholder); + if (fontParam && isArray(fontParam)) { priority = fontParam as string[]; } else { @@ -296,7 +311,7 @@ const calX = ( const getDrawStyle = (cell: S2CellType) => { const { isTotals } = cell.getMeta(); const isMeasureField = (cell as ColCell).isMeasureField?.(); - const cellStyle = cell.getStyle( + const cellStyle: InternalFullyCellTheme = cell.getStyle( isMeasureField ? CellType.COL_CELL : CellType.DATA_CELL, ); @@ -332,8 +347,8 @@ const getCurrentTextStyle = ({ meta: ViewMeta; data: string | number; textStyle?: TextTheme; - textCondition?: Condition; -}) => { + textCondition?: TextCondition; +}): TextTheme => { const style = textCondition?.mapping?.(data, { rowIndex, colIndex, @@ -425,7 +440,8 @@ export const drawObjectText = ( const meta = cell.getMeta() as ViewMeta; const text = multiData || (meta.fieldValue as MultiData); const { values: textValues } = text; - const { options, measureTextWidth } = meta.spreadsheet; + const { options } = meta.spreadsheet; + // 趋势分析表默认只作用一个条件(因为指标挂行头,每列都不一样,直接在回调里判断是否需要染色即可) const textCondition = options?.conditions?.text?.[0]; const iconCondition = options?.conditions?.icon?.[0]; @@ -442,28 +458,26 @@ export const drawObjectText = ( // 绘制单元格主标题 if (text?.label) { - const dataCellStyle = cell.getStyle(CellType.DATA_CELL); - const labelStyle = dataCellStyle!.bolderText!; + const dataCellStyle: InternalFullyCellTheme = cell.getStyle( + CellType.DATA_CELL, + ); + const labelStyle = dataCellStyle.bolderText; - /* - * TODO 把padding计算在内 - * const { padding } = dataCellStyle.cell; - */ labelHeight = totalTextHeight / (textValues.length + 1); - const textShape = renderText(cell, [], { - x, - y: y + labelHeight / 2, - text: getEllipsisText({ - measureTextWidth, + cell.renderTextShape( + { + ...labelStyle, + x, + y: y + labelHeight / 2, text: text.label, - maxWidth: totalTextWidth, - fontParam: labelStyle, - }), - ...labelStyle, - }); - - cell.addTextShape(textShape); + maxLines: 1, + wordWrapWidth: totalTextWidth, + wordWrap: true, + textOverflow: 'ellipsis', + }, + { shallowRender: true }, + ); } // 绘制指标 @@ -472,6 +486,7 @@ export const drawObjectText = ( const iconStyle = cellStyle?.icon; const iconCfg = iconCondition && iconCondition.mapping! && { + name: '', size: iconStyle?.size, margin: iconStyle?.margin, position: getIconPosition(iconCondition), @@ -506,7 +521,6 @@ export const drawObjectText = ( }) : textStyle!; - const emptyPlaceholder = getEmptyPlaceholder(meta, options.placeholder); const maxTextWidth = contentBoxes[i][j].width - iconStyle.size - @@ -514,24 +528,31 @@ export const drawObjectText = ( ? iconStyle.margin.right : iconStyle.margin.left); - const ellipsisText = getEllipsisText({ - measureTextWidth, - text: curText, - maxWidth: maxTextWidth, - fontParam: curStyle, - placeholder: emptyPlaceholder, - }); - const actualTextWidth = measureTextWidth(ellipsisText, curStyle); - const groupedIcons: GroupedIcons = { left: [], right: [], }; if (iconCfg) { - groupedIcons[iconCfg.position].push(iconCfg as any); + groupedIcons[iconCfg.position].push(iconCfg); } + cell.renderTextShape( + { + ...curStyle, + x: 0, + y: 0, + // 多列文本不换行 + maxLines: 1, + text: curText, + wordWrapWidth: maxTextWidth, + }, + { + shallowRender: true, + }, + ); + + const actualTextWidth = cell.getActualTextWidth(); const { textX, leftIconX, rightIconX } = getHorizontalTextIconPosition({ bbox: contentBoxes[i][j], textAlign: curStyle.textAlign!, @@ -539,33 +560,12 @@ export const drawObjectText = ( iconStyle, groupedIcons, }); - const textY = getVerticalTextPosition( contentBoxes[i][j], curStyle!.textBaseline!, ); - const iconY = getVerticalIconPosition( - iconStyle.size!, - textY, - curStyle.fontSize!, - curStyle.textBaseline!, - ); - - const textShape = renderText( - cell, - [], - { - x: textX, - y: textY, - text: ellipsisText, - ...curStyle, - }, - { - originalText: curText, - }, - ); - cell.addTextShape(textShape); + cell.updateTextPosition({ x: textX, y: textY }); // 绘制条件格式的 icon if (iconCondition && useCondition) { @@ -576,6 +576,12 @@ export const drawObjectText = ( }); const iconX = iconCfg?.position === 'left' ? leftIconX : rightIconX; + const iconY = getVerticalIconPosition( + iconStyle.size!, + textY, + curStyle.fontSize!, + curStyle.textBaseline!, + ); if (attrs) { const iconShape = renderIcon(cell, { @@ -599,11 +605,3 @@ export const drawObjectText = ( */ export const getCellWidth = (dataCell: DataCellStyle, labelSize = 1) => dataCell?.width! * labelSize; - -export const safeJsonParse = (val: string) => { - try { - return JSON.parse(val); - } catch (err) { - return null; - } -}; diff --git a/packages/s2-react/__tests__/data/strategy-data.ts b/packages/s2-react/__tests__/data/strategy-data.ts index 17388366c2..cd8606d7dd 100644 --- a/packages/s2-react/__tests__/data/strategy-data.ts +++ b/packages/s2-react/__tests__/data/strategy-data.ts @@ -391,9 +391,12 @@ export const StrategyOptions: SheetComponentOptions = { interaction: { selectedCellsSpotlight: true, resize: { - disable: (resizeInfo) => - resizeInfo.meta.value === '净增完成度' && - resizeInfo.resizedWidth! < resizeInfo.width, + disable: (resizeInfo) => { + return ( + resizeInfo.meta.value === '净增完成度' && + resizeInfo.resizedWidth! <= 280 + ); + }, }, }, headerActionIcons: [ diff --git a/packages/s2-react/__tests__/spreadsheet/adaptive-spec.tsx b/packages/s2-react/__tests__/spreadsheet/adaptive-spec.tsx index c88d6c6817..96ff941df0 100644 --- a/packages/s2-react/__tests__/spreadsheet/adaptive-spec.tsx +++ b/packages/s2-react/__tests__/spreadsheet/adaptive-spec.tsx @@ -4,6 +4,7 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; import * as mockDataConfig from 'tests/data/simple-data.json'; import { getContainer, renderComponent, sleep } from 'tests/util/helpers'; +import { waitFor } from '@testing-library/react'; import { SheetComponent } from '@/components/sheets'; import type { SheetComponentsProps } from '@/components'; @@ -89,10 +90,10 @@ describe('SheetComponent adaptive Tests', () => { test('should use container width when table first rendered', async () => { renderComponent(); - await sleep(1000); - - expect(s2!.options.width).toEqual(400); - expect(s2!.container.getConfig().width).toEqual(400); + await waitFor(() => { + expect(s2!.options.width).toEqual(400); + expect(s2!.container.getConfig().width).toEqual(400); + }); }); test('should use option width and height when table first rendered, and disable adaptive', async () => { @@ -104,12 +105,12 @@ describe('SheetComponent adaptive Tests', () => { />, ); - await sleep(1000); - - expect(s2!.options.width).toEqual(s2Options.width); - expect(s2!.options.height).toEqual(s2Options.height); - expect(s2!.container.getConfig().width).toEqual(s2Options.width); - expect(s2!.container.getConfig().height).toEqual(s2Options.height); + await waitFor(() => { + expect(s2!.options.width).toEqual(s2Options.width); + expect(s2!.options.height).toEqual(s2Options.height); + expect(s2!.container.getConfig().width).toEqual(s2Options.width); + expect(s2!.container.getConfig().height).toEqual(s2Options.height); + }); }); test('should update table width and height when container resize', async () => { @@ -139,12 +140,12 @@ describe('SheetComponent adaptive Tests', () => { window.dispatchEvent(new Event('resize')); }); - await sleep(1000); - - expect(s2!.options.width).toEqual(newContainerWidth); - expect(s2!.options.height).toEqual(newContainerHeight); - expect(s2!.container.getConfig().height).toEqual(newContainerHeight); - expect(s2!.container.getConfig().width).toEqual(newContainerWidth); + await waitFor(() => { + expect(s2!.options.width).toEqual(newContainerWidth); + expect(s2!.options.height).toEqual(newContainerHeight); + expect(s2!.container.getConfig().height).toEqual(newContainerHeight); + expect(s2!.container.getConfig().width).toEqual(newContainerWidth); + }); }); // https://github.com/antvis/S2/issues/792 @@ -172,19 +173,19 @@ describe('SheetComponent adaptive Tests', () => { ); }); - await sleep(1000); - - const canvas = s2!.getCanvasElement(); + await waitFor(() => { + const canvas = s2!.getCanvasElement(); - // render by resized parent container - expect(s2!.options.width).toEqual(newContainerWidth); - expect(s2!.options.height).toEqual(newContainerHeight); - expect(s2!.container.getConfig().width).toEqual(newContainerWidth); - expect(s2!.container.getConfig().height).toEqual(newContainerHeight); + // render by resized parent container + expect(s2!.options.width).toEqual(newContainerWidth); + expect(s2!.options.height).toEqual(newContainerHeight); + expect(s2!.container.getConfig().width).toEqual(newContainerWidth); + expect(s2!.container.getConfig().height).toEqual(newContainerHeight); - // update canvas width - expect(canvas.style.width).toEqual(`${newContainerWidth}px`); - expect(canvas.style.height).toEqual(`${newContainerHeight}px`); + // update canvas width + expect(canvas.style.width).toEqual(`${newContainerWidth}px`); + expect(canvas.style.height).toEqual(`${newContainerHeight}px`); + }); }); test("should don't update canvas size when container resize but disable adaptive", async () => { @@ -205,14 +206,14 @@ describe('SheetComponent adaptive Tests', () => { ); }); - await sleep(1000); - - const canvas = s2!.getCanvasElement() as HTMLCanvasElement; + await waitFor(() => { + const canvas = s2!.getCanvasElement() as HTMLCanvasElement; - expect(s2!.options.width).toEqual(200); - expect(s2!.container.getConfig().width).toEqual(200); - expect(canvas.style.width).toEqual(`200px`); - expect(canvas.style.height).toEqual(`200px`); + expect(s2!.options.width).toEqual(200); + expect(s2!.container.getConfig().width).toEqual(200); + expect(canvas.style.width).toEqual(`200px`); + expect(canvas.style.height).toEqual(`200px`); + }); }); // canvas need to set "display: block", otherwise have `5px` difference with container @@ -221,14 +222,14 @@ describe('SheetComponent adaptive Tests', () => { renderComponent(); - await sleep(1000); - - const container = document.getElementById(containerId)!; - const canvas = s2!.getCanvasElement(); + await waitFor(() => { + const container = document.getElementById(containerId)!; + const canvas = s2!.getCanvasElement(); - const { height: containerHeight } = container.getBoundingClientRect(); + const { height: containerHeight } = container.getBoundingClientRect(); - expect(`${Math.round(containerHeight)}px`).toEqual(canvas.style.height); + expect(`${Math.round(containerHeight)}px`).toEqual(canvas.style.height); + }); }); // https://github.com/antvis/S2/issues/901 @@ -303,9 +304,9 @@ describe('SheetComponent adaptive Tests', () => { window.dispatchEvent(new Event('resize')); }); - await sleep(1000); - - expect(s2!.options.width).toEqual(newContainerWidth); - expect(s2!.container.getConfig().width).toEqual(newContainerWidth); + await waitFor(() => { + expect(s2!.options.width).toEqual(newContainerWidth); + expect(s2!.container.getConfig().width).toEqual(newContainerWidth); + }); }); }); diff --git a/packages/s2-react/__tests__/unit/components/sheets/__snapshots__/index-spec.tsx.snap b/packages/s2-react/__tests__/unit/components/sheets/__snapshots__/index-spec.tsx.snap index 84e6b3a5ef..ac8402d68d 100644 --- a/packages/s2-react/__tests__/unit/components/sheets/__snapshots__/index-spec.tsx.snap +++ b/packages/s2-react/__tests__/unit/components/sheets/__snapshots__/index-spec.tsx.snap @@ -92,7 +92,7 @@ exports[` Tests Render Tests should render editable sheet by sn > @@ -356,7 +356,7 @@ exports[` Tests Render Tests should render gridAnalysis sheet b > @@ -610,7 +610,7 @@ exports[` Tests Render Tests should render pivot sheet by snaps > @@ -864,7 +864,7 @@ exports[` Tests Render Tests should render strategy sheet by sn > @@ -1118,7 +1118,7 @@ exports[` Tests Render Tests should render table sheet by snaps > diff --git a/packages/s2-react/__tests__/unit/components/sheets/mobile-sheet/__snapshots__/index-spec.tsx.snap b/packages/s2-react/__tests__/unit/components/sheets/mobile-sheet/__snapshots__/index-spec.tsx.snap index 7c06a3c682..581afdad6f 100644 --- a/packages/s2-react/__tests__/unit/components/sheets/mobile-sheet/__snapshots__/index-spec.tsx.snap +++ b/packages/s2-react/__tests__/unit/components/sheets/mobile-sheet/__snapshots__/index-spec.tsx.snap @@ -17,7 +17,7 @@ exports[`MobileSheet Tests get mobile default fragment 1`] = ` > diff --git a/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/__snapshots__/index-spec.tsx.snap b/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/__snapshots__/index-spec.tsx.snap index e2b966109a..cb8da06994 100644 --- a/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/__snapshots__/index-spec.tsx.snap +++ b/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/__snapshots__/index-spec.tsx.snap @@ -1,21 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[` Tests StrategySheet Export Tests should export correct data 1`] = ` -" 日期 2022-09 2022-10 2022-11 2021年净增完成度 趋势 2022 - 自定义节点A/指标E/指标 数值 环比 同比 数值 环比 数值 环比 同比 净增完成度 趋势 数值 环比 -自定义节点A - - - - - - - - - - - -自定义节点A 指标A - - - 377 3877 4324 42% - - 377 -自定义节点A 指标A 指标B - - - 377 324 377 324 -0.02 - - 377 324 -自定义节点A 指标A 自定义节点B - - - - - - - - - - -自定义节点A 指标A 指标C - - - 324 377 0 - - 324 -自定义节点A 指标A 指标D - - - 377 324 377 324 0.02 - - 377 324 -自定义节点A 自定义节点E - - - - - - - - - - -指标E - - - - - 377 324 0.02 - - - - -指标E 自定义节点C - - - - - - - - - - -指标E 自定义节点D - - - - - - - - - -" -`; - -exports[` Tests StrategySheet Export Tests should export correct data 2`] = ` " 日期 2022-09 2022-10 2022-11 2021年净增完成度 趋势 2022 指标 数值 环比 同比 数值 环比 数值 环比 同比 净增完成度 趋势 数值 环比 自定义节点A - diff --git a/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/index-spec.tsx b/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/index-spec.tsx index 7fe316a3c3..3c81121e27 100644 --- a/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/index-spec.tsx +++ b/packages/s2-react/__tests__/unit/components/sheets/strategy-sheet/index-spec.tsx @@ -375,7 +375,7 @@ describe(' Tests', () => { const fn = jest.fn(); class CustomRowCell extends RowCell { - protected drawTextShape() { + public drawTextShape() { fn(); return super.drawTextShape(); @@ -397,7 +397,7 @@ describe(' Tests', () => { const fn = jest.fn(); class CustomColCell extends StrategySheetColCell { - protected drawTextShape() { + public drawTextShape() { fn(); return super.drawTextShape(); @@ -419,7 +419,7 @@ describe(' Tests', () => { const fn = jest.fn(); class CustomDataCell extends StrategySheetDataCell { - protected drawTextShape() { + public drawTextShape() { fn(); return super.drawTextShape(); diff --git a/packages/s2-react/__tests__/util/helpers.ts b/packages/s2-react/__tests__/util/helpers.ts index 2cc00eb12e..cc03b16f16 100644 --- a/packages/s2-react/__tests__/util/helpers.ts +++ b/packages/s2-react/__tests__/util/helpers.ts @@ -83,6 +83,9 @@ export const createMockCellInfo = ( getFieldValue: jest.fn(), hideInteractionShape: jest.fn(), getActualText: jest.fn(), + update: jest.fn(), + updateByState: jest.fn(), + isTextOverflowing: jest.fn(), } as any; return { diff --git a/packages/s2-react/package.json b/packages/s2-react/package.json index 75504fcc55..7a47521989 100644 --- a/packages/s2-react/package.json +++ b/packages/s2-react/package.json @@ -72,7 +72,6 @@ "devDependencies": { "@ant-design/icons": "^5.2.6", "@antv/event-emitter": "^0.1.3", - "@antv/g": "^5.15.2", "@antv/s2": "workspace:*", "@antv/s2-shared": "workspace:*", "@testing-library/react": "^14.0.0", diff --git a/packages/s2-react/playground/components/GridAnalysisSheet.tsx b/packages/s2-react/playground/components/GridAnalysisSheet.tsx index 51b43a5f70..654029aaee 100644 --- a/packages/s2-react/playground/components/GridAnalysisSheet.tsx +++ b/packages/s2-react/playground/components/GridAnalysisSheet.tsx @@ -11,8 +11,15 @@ import { usePlaygroundContext } from '../context/playground.context'; export const mockGridAnalysisOptions: SheetComponentOptions = { width: 1600, height: 600, + interaction: { + selectedCellsSpotlight: true, + }, style: { layoutWidthType: 'colAdaptive', + rowCell: { + width: 80, + height: 100, + }, dataCell: { width: 400, height: 100, diff --git a/packages/s2-react/playground/components/ResizeConfig.tsx b/packages/s2-react/playground/components/ResizeConfig.tsx index d7303bb8cd..ce65b13ac7 100644 --- a/packages/s2-react/playground/components/ResizeConfig.tsx +++ b/packages/s2-react/playground/components/ResizeConfig.tsx @@ -1,10 +1,20 @@ -import { ResizeType, type S2Theme } from '@antv/s2'; import { + ResizeType, customMerge, - type ThemeCfg, + type DefaultCellTheme, type ResizeInteractionOptions, + type S2Theme, + type ThemeCfg, } from '@antv/s2'; -import { Checkbox, Space, Switch, Tooltip } from 'antd'; +import { + Checkbox, + Radio, + Space, + Switch, + Tooltip, + type RadioChangeEvent, + Divider, +} from 'antd'; import type { CheckboxValueType } from 'antd/lib/checkbox/Group'; import React from 'react'; import type { SheetComponentOptions } from '../../src/components'; @@ -59,7 +69,7 @@ export const ResizeConfig: React.FC<{ }, }; - setOptions((prev) => customMerge({}, prev, options)); + setOptions((prev) => customMerge(prev, options)); }; const onResizeActiveChange = (checkedAreas: CheckboxValueType[]) => { @@ -78,40 +88,88 @@ export const ResizeConfig: React.FC<{ }, }; - setOptions((prev) => customMerge({}, prev, updatedOptions)); + setOptions((prev) => customMerge(prev, updatedOptions)); + }; + + const onMaxLinesChange = (e: RadioChangeEvent) => { + const maxLines = e.target.value; + + const cellTheme: DefaultCellTheme = { + text: { + maxLines, + }, + bolderText: { + maxLines, + }, + measureText: { + maxLines, + }, + }; + + const theme: S2Theme = { + colCell: cellTheme, + rowCell: cellTheme, + cornerCell: cellTheme, + dataCell: cellTheme, + }; + + setThemeCfg((prev) => customMerge(prev, { theme })); }; const resizeConfig = options.interaction?.resize as ResizeInteractionOptions; return ( - - - item.value)} - onChange={onResizeActiveChange} - /> - + <> + + + 热区配置 + + - - - item.value)} + onChange={onResizeActiveChange} /> - - + + + + + + + + + + 换行配置 + + + + + {Array.from({ length: 6 }).map((_, i) => { + return ( + + {i + 1}行 + + ); + })} + + + + ); }; diff --git a/packages/s2-react/playground/config.tsx b/packages/s2-react/playground/config.tsx index 7e6b367e84..4500f053cd 100644 --- a/packages/s2-react/playground/config.tsx +++ b/packages/s2-react/playground/config.tsx @@ -30,15 +30,15 @@ export const tableSheetSingleColumns: CustomHeaderField[] = [ export const tableSheetMultipleColumns: CustomTreeNode[] = [ { field: 'area', - title: '地区', + title: '地区地区地区地区地区地区地区地区地区', children: [ { field: 'province', - title: '省份', + title: '省份省份省份省份省份省份省份省份省份', children: [ { field: 'type', - title: '类型', + title: '类型类型类型类型类型类型类型类型类型类型', }, ], }, @@ -278,7 +278,7 @@ export const s2Options: SheetComponentOptions = { // colCount: 1, // trailingColCount: 1, }, - cornerText: '测试', + cornerText: '测试测试测试测试测试测试测试测试测试测试', interaction: { enableCopy: true, // 防止 mac 触摸板横向滚动触发浏览器返回, 和移动端下拉刷新 @@ -293,6 +293,22 @@ export const s2Options: SheetComponentOptions = { colResizeType: ResizeType.CURRENT, }, }, + // totals: { + // col: { + // showGrandTotals: true, + // showSubTotals: false, + // reverseGrandTotalsLayout: true, + // reverseSubTotalsLayout: true, + // subTotalsDimensions: ['type'], + // }, + // row: { + // showGrandTotals: true, + // showSubTotals: true, + // reverseGrandTotalsLayout: true, + // reverseSubTotalsLayout: true, + // subTotalsDimensions: ['province'], + // }, + // }, // mergedCellsInfo: [ // [ // { colIndex: 1, rowIndex: 1, showText: true }, @@ -304,17 +320,7 @@ export const s2Options: SheetComponentOptions = { // ], // ], tooltip: S2TooltipOptions, - style: { - rowCell: { - height: 50, - }, - colCell: { - hideValue: false, - }, - dataCell: { - height: 50, - }, - }, + style: {}, }; export const sliderOptions: SliderSingleProps = { diff --git a/packages/s2-react/playground/index.tsx b/packages/s2-react/playground/index.tsx index be26bb49e3..9110b7d261 100644 --- a/packages/s2-react/playground/index.tsx +++ b/packages/s2-react/playground/index.tsx @@ -71,6 +71,8 @@ import { import { partDrillDown } from './drill-down'; import { onSheetMounted } from './utils'; +type TableSheetColumnType = 'single' | 'multiple'; + import './index.less'; const CustomTooltip = () => ( @@ -96,7 +98,7 @@ function MainLayout() { const [showPagination, setShowPagination] = React.useState(false); const [showTotals, setShowTotals] = React.useState(false); const [themeCfg, setThemeCfg] = React.useState({ - name: 'dark', + name: 'default', }); const [themeColor, setThemeColor] = React.useState('#FFF'); const [showCustomTooltip, setShowCustomTooltip] = React.useState(false); @@ -109,9 +111,12 @@ function MainLayout() { const [columnOptions, setColumnOptions] = React.useState( [], ); - const [tableSheetColumnType, setTableSheetColumnType] = React.useState< - 'single' | 'multiple' - >('multiple'); + const [tableSheetColumnType, setTableSheetColumnType] = + React.useState( + (localStorage.getItem( + 'debugTableSheetColumnType', + ) as TableSheetColumnType) || 'single', + ); // ================== Refs ======================== const s2Ref = React.useRef(null); diff --git a/packages/s2-react/src/components/export/strategy-copy.ts b/packages/s2-react/src/components/export/strategy-copy.ts index 98a87a3247..8ffa04c522 100644 --- a/packages/s2-react/src/components/export/strategy-copy.ts +++ b/packages/s2-react/src/components/export/strategy-copy.ts @@ -26,7 +26,7 @@ import { sortBy, } from 'lodash'; -/* +/** * Process the multi-measure with single-lines */ const processObjectValueInRow = ( @@ -39,8 +39,9 @@ const processObjectValueInRow = ( return get(data, ['values', 0]); }; + const getHeaderLabel = (val: string) => { - const label = safeJsonParse(val); + const label = safeJsonParse(val); if (isArray(label)) { return label; diff --git a/packages/s2-react/src/components/sheets/chart-sheet/custom-cell.ts b/packages/s2-react/src/components/sheets/chart-sheet/custom-cell.ts index 40344ba9c6..04ff83ccfa 100644 --- a/packages/s2-react/src/components/sheets/chart-sheet/custom-cell.ts +++ b/packages/s2-react/src/components/sheets/chart-sheet/custom-cell.ts @@ -1,7 +1,7 @@ import { DataCell } from '@antv/s2'; export class CustomCell extends DataCell { - protected drawTextShape() { + public drawTextShape() { // TODO 暂时留下个扩展位,不知道后面会有什么需求 return null; } diff --git a/packages/s2-react/src/components/sheets/grid-analysis-sheet/custom-cell.ts b/packages/s2-react/src/components/sheets/grid-analysis-sheet/custom-cell.ts index 991d9330be..b7a58db5a7 100644 --- a/packages/s2-react/src/components/sheets/grid-analysis-sheet/custom-cell.ts +++ b/packages/s2-react/src/components/sheets/grid-analysis-sheet/custom-cell.ts @@ -1,5 +1,9 @@ import { isObject } from 'lodash'; -import { DataCell, drawObjectText } from '@antv/s2'; +import { + DataCell, + drawObjectText, + type RenderTextShapeOptions, +} from '@antv/s2'; /** * Cell for panelGroup area @@ -10,15 +14,11 @@ import { DataCell, drawObjectText } from '@antv/s2'; * -------------------------------------- */ export class CustomCell extends DataCell { - /** - * Render cell main text - */ - - protected drawTextShape() { + public drawTextShape(options?: RenderTextShapeOptions) { if (isObject(this.getMeta().fieldValue)) { drawObjectText(this); } else { - super.drawTextShape(); + super.drawTextShape(options); } } } diff --git a/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/col-cell.ts b/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/col-cell.ts index 38791b375f..0f430ac21b 100644 --- a/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/col-cell.ts +++ b/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/col-cell.ts @@ -25,9 +25,9 @@ export class StrategySheetColCell extends ColCell { super(meta, spreadsheet, headerConfig); } - protected drawTextShape() { + public drawTextShape() { const meta = this.getMeta(); - const value = safeJsonParse(meta?.value) as MultiData; + const value = safeJsonParse(meta?.value); if (!isArray(value)) { return super.drawTextShape(); diff --git a/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/data-cell.ts b/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/data-cell.ts index ac42b05045..59a426da28 100644 --- a/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/data-cell.ts +++ b/packages/s2-react/src/components/sheets/strategy-sheet/custom-cell/data-cell.ts @@ -1,5 +1,9 @@ import { isObject } from 'lodash'; -import { DataCell, drawObjectText } from '@antv/s2'; +import { + DataCell, + drawObjectText, + type RenderTextShapeOptions, +} from '@antv/s2'; /** * Cell for panelGroup area @@ -9,14 +13,11 @@ import { DataCell, drawObjectText } from '@antv/s2'; * -------------------------------------- */ export class StrategySheetDataCell extends DataCell { - /** - * Render cell main text - */ - protected drawTextShape() { + public drawTextShape(options?: RenderTextShapeOptions) { if (isObject(this.getMeta().fieldValue)) { drawObjectText(this); } else { - super.drawTextShape(); + super.drawTextShape(options); } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee6bf80217..33d6b4cb6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -258,11 +258,14 @@ importers: specifier: ^0.1.3 version: 0.1.3 '@antv/g': - specifier: ^5.16.13 - version: 5.16.13 + specifier: ^5.18.21 + version: 5.18.21 '@antv/g-canvas': - specifier: ^1.9.41 - version: 1.9.41 + specifier: ^1.11.24 + version: 1.11.24 + '@antv/g-lite': + specifier: ^1.2.19 + version: 1.2.19 d3-ease: specifier: ^3.0.1 version: 3.0.1 @@ -328,9 +331,6 @@ importers: '@antv/event-emitter': specifier: ^0.1.3 version: 0.1.3 - '@antv/g': - specifier: ^5.15.2 - version: 5.18.16 '@antv/s2': specifier: workspace:* version: link:../s2-core @@ -429,11 +429,11 @@ importers: specifier: ^5.2.6 version: 5.2.6(react-dom@18.2.0)(react@18.2.0) '@antv/dumi-theme-antv': - specifier: ^0.3.5 - version: 0.3.5(dumi@2.1.1) + specifier: ^0.4.3 + version: 0.4.3(@babel/core@7.23.2)(dumi@2.2.14) '@antv/g-canvas': - specifier: ^0.5.12 - version: 0.5.13 + specifier: ^1.11.24 + version: 1.11.24 '@antv/s2': specifier: next version: link:../packages/s2-core @@ -441,14 +441,14 @@ importers: specifier: next version: link:../packages/s2-react antd: - specifier: ^5.11.1 - version: 5.11.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.11.2 + version: 5.11.2 copy-to-clipboard: - specifier: ^3.3.1 + specifier: ^3.3.3 version: 3.3.3 dumi: - specifier: ^2.0.3 - version: 2.1.1(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(postcss@8.4.31)(prettier@3.0.3)(rollup@4.1.5)(stylelint@15.11.0)(typescript@5.2.2) + specifier: ^2.2.14 + version: 2.2.14(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(prettier@3.0.3)(rollup@4.1.5)(stylelint@15.11.0)(typescript@5.2.2) gh-pages: specifier: ^3.1.0 version: 3.2.3 @@ -654,10 +654,6 @@ packages: react-dom: 18.2.0(react@18.2.0) stylis: 4.1.3 - /@ant-design/icons-svg@4.2.1: - resolution: {integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==} - dev: false - /@ant-design/icons-svg@4.3.1: resolution: {integrity: sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g==} @@ -726,12 +722,13 @@ packages: resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==} dev: false - /@antv/dumi-theme-antv@0.3.5(dumi@2.1.1): - resolution: {integrity: sha512-0IWpZ9555kpuoBsFoDP5hOfx3GsLpEAduTOl1LRrw1Bod3vDMYleeUW5ZNh/SxxZAsRgs+rADOlEJy389NLuhQ==} + /@antv/dumi-theme-antv@0.4.3(@babel/core@7.23.2)(dumi@2.2.14): + resolution: {integrity: sha512-SeAf+KfmbAnvjUsKt5d0aNiFVhMzUQ8S2ZsO/cCrn9KCJCjdcgc53c2mUHOCgZT4AYbrfoIF6DyJ2j0UcEu4Ng==} peerDependencies: - dumi: ^2.0.0-beta.15 + dumi: ^2.0.0 dependencies: '@ant-design/icons': 4.8.1(react-dom@18.2.0)(react@18.2.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) '@babel/standalone': 7.20.12 '@docsearch/css': 3.3.1 '@docsearch/react': 3.3.1(react-dom@18.2.0)(react@18.2.0) @@ -740,16 +737,19 @@ packages: antd: 4.24.14(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 codesandbox: 2.2.3 + d3-dsv: 3.0.1 docsearch.js: 2.6.3 - dumi: 2.1.1(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(postcss@8.4.31)(prettier@3.0.3)(rollup@4.1.5)(stylelint@15.11.0)(typescript@5.2.2) + dumi: 2.2.14(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(prettier@3.0.3)(rollup@4.1.5)(stylelint@15.11.0)(typescript@5.2.2) front-matter: 4.0.2 fs-extra: 10.1.0 glob: 8.1.0 + hast: 1.0.0 indent-string: 5.0.0 insert-css: 2.0.0 lodash-es: 4.17.21 monaco-editor: 0.25.2 parse-github-url: 1.0.2 + prettier: 2.8.8 rc-drawer: 4.4.3(react-dom@18.2.0)(react@18.2.0) rc-footer: 0.6.8(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 @@ -765,10 +765,13 @@ packages: semver: 7.5.4 size-sensor: 1.0.1 slick-carousel: 1.8.1 + unified: 10.1.2 + unist-util-visit: 4.1.2 uri-parse: 1.0.0 video-react: 0.16.0(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - '@algolia/client-search' + - '@babel/core' - '@types/react' - jquery - supports-color @@ -777,114 +780,37 @@ packages: /@antv/event-emitter@0.1.3: resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} - /@antv/g-base@0.5.12: - resolution: {integrity: sha512-KDM3K1rDnemvTAoPYsRYue+ZX7bR4D0TvOQ5Ib6osGtSpZcstwhA0CuQGI0wNXb/ax7h6/KyzNPVFqESrtWbqw==} - dependencies: - '@antv/event-emitter': 0.1.3 - '@antv/g-math': 0.1.9 - '@antv/matrix-util': 3.1.0-beta.3 - '@antv/path-util': 2.0.15 - '@antv/util': 2.0.17 - '@types/d3-timer': 2.0.1 - d3-ease: 1.0.7 - d3-interpolate: 3.0.1 - d3-timer: 1.0.10 - detect-browser: 5.3.0 - tslib: 2.6.2 - dev: false - - /@antv/g-camera-api@1.0.34(@antv/g-lite@1.0.51): - resolution: {integrity: sha512-3Sty9aNb3IEwzMQZDHTFMHjU5xZRo3yWwsCiycsNJHHiUl5KvW9b2mFXmcOr3uAb4v1jJzBmyRGL80TAV35H5A==} - peerDependencies: - '@antv/g-lite': ^1.0.0 - dependencies: - '@antv/g-lite': 1.0.51 - '@antv/util': 3.3.2 - gl-matrix: 3.4.3 - dev: false - - /@antv/g-camera-api@1.2.15: - resolution: {integrity: sha512-Tg190ZAsqqG5+RQMvfcO3a7GAvW2j6xBTd+oV42s6/Qns9SMx03/APIopccxNMKarHfoAcV5aLwTlEgv81hWug==} + /@antv/g-camera-api@1.2.20: + resolution: {integrity: sha512-HapY48zFzDt43A3Z34kogApshwmUxQiXJKQ8XwB0UGzLc6ndMKGYx9tyXdMuozSqIQZ0AT5qasujYuu4h+6m7g==} dependencies: - '@antv/g-lite': 1.2.15 + '@antv/g-lite': 1.2.19 '@antv/util': 3.3.5 gl-matrix: 3.4.3 tslib: 2.6.2 - dev: true - - /@antv/g-canvas@0.5.13: - resolution: {integrity: sha512-nu6wNeZhYomkEks2aniWlYML0ZGb9t5PGzjiOIp+B4z4HUEUvHOTdIPNfinzl5+4QC7fVZntsQKZK5dBFO5MDQ==} - dependencies: - '@antv/g-base': 0.5.12 - '@antv/g-math': 0.1.9 - '@antv/matrix-util': 3.1.0-beta.3 - '@antv/path-util': 2.0.15 - '@antv/util': 2.0.17 - gl-matrix: 3.4.3 - tslib: 2.6.2 - dev: false - - /@antv/g-canvas@1.9.41: - resolution: {integrity: sha512-3y6XzfQ69XcZu53HUsJAIzDMPIHs1k7mB9QL5FiaxvDGt2yeDWMrCihKZdNN2C0pVuItneMAZRNhj7ZKmybHvg==} - peerDependencies: - '@antv/g-lite': ^1.0.0 - dependencies: - '@antv/g-plugin-canvas-path-generator': 1.1.46 - '@antv/g-plugin-canvas-picker': 1.8.45 - '@antv/g-plugin-canvas-renderer': 1.7.53 - '@antv/g-plugin-dom-interaction': 1.7.45 - '@antv/g-plugin-html-renderer': 1.7.49 - '@antv/g-plugin-image-loader': 1.1.47 - '@antv/util': 3.3.2 - '@types/offscreencanvas': 2019.7.0 - tslib: 2.4.1 - dev: false - - /@antv/g-css-layout-api@1.0.33(@antv/g-lite@1.0.51): - resolution: {integrity: sha512-XqPSrDaiJnl1OKH4/8X7am8s179Ds2egUnf34vmKVxTKJZvSex1jP4+jgmt3L2/ijDnH8WtMxctAPC6p7mpiqg==} - peerDependencies: - '@antv/g-lite': ^1.0.0 - dependencies: - '@antv/g-lite': 1.0.51 - dev: false - - /@antv/g-css-typed-om-api@1.0.33(@antv/g-lite@1.0.51): - resolution: {integrity: sha512-Cq4WE7fEmbXyUZywSK6vPwzugPVVfZp6r908YjeY48gWnBelfwowWL76qdddObPTOm+xxR5Tl9EkCiAdrq/fVQ==} - peerDependencies: - '@antv/g-lite': ^1.0.0 - dependencies: - '@antv/g-lite': 1.0.51 dev: false - /@antv/g-dom-mutation-observer-api@1.0.33(@antv/g-lite@1.0.51): - resolution: {integrity: sha512-htSNqW0eYpl9SUhYs4K3VWQHVdIyo7K0yA+539vP/Xg8dsHb5NKS0Kf5noMO7xhiMnT73k9HYkskPfOqxchB7w==} - peerDependencies: - '@antv/g-lite': ^1.0.0 + /@antv/g-canvas@1.11.24: + resolution: {integrity: sha512-BEgYZNN7ZXV3l4acZ/d3FoP+EBPeB/fQPInA+6iRf4gBfTsH/fSKNbqvHqV00hgtLHT/u3z16WyP7jcMH1vgHA==} dependencies: - '@antv/g-lite': 1.0.51 + '@antv/g-lite': 1.2.19 + '@antv/g-plugin-canvas-path-generator': 1.3.19 + '@antv/g-plugin-canvas-picker': 1.10.21 + '@antv/g-plugin-canvas-renderer': 1.9.21 + '@antv/g-plugin-dom-interaction': 1.9.19 + '@antv/g-plugin-html-renderer': 1.9.22 + '@antv/g-plugin-image-loader': 1.3.19 + '@antv/util': 3.3.5 + tslib: 2.6.2 dev: false - /@antv/g-dom-mutation-observer-api@1.2.15: - resolution: {integrity: sha512-SEN/fM765lQvTUbKdrF6RfwOC7giF0AbHMF1TBkzBpD1p1HLuWJbYwrTsi8t0vWXzor8r+IZNQNYYavLq34bKg==} + /@antv/g-dom-mutation-observer-api@1.2.19: + resolution: {integrity: sha512-sBrwUIkcixEQIr1hhoRfCrZ80m6aNl/VbI0PhRGLDlkJRuoLd9pLn1uSQI042N7M5X7oLW4F9tbN1Aw3ahjT+Q==} dependencies: - '@antv/g-lite': 1.2.15 - dev: true - - /@antv/g-lite@1.0.51: - resolution: {integrity: sha512-iaK6+1FI+gfK2P4eHhAx3rI9G589afiOnP1+P8DtT45TqU9ycYEuiWdKBbawQf2y46WQzrP+KonHW14L+UNxfQ==} - dependencies: - '@antv/g-math': 1.7.44 - '@antv/util': 3.3.2 - '@types/offscreencanvas': 2019.7.0 - d3-color: 1.4.1 - eventemitter3: 4.0.7 - gl-matrix: 3.4.3 - rbush: 3.0.1 - tslib: 2.6.2 + '@antv/g-lite': 1.2.19 dev: false - /@antv/g-lite@1.2.15: - resolution: {integrity: sha512-OsL3FqNTNdogwMg3COmaolNn9fdbYWSL/mZWSh0qOnYjjQrqng1pTbqFDUAYWNghAdbSSUfOsHlSUONcfSglJQ==} + /@antv/g-lite@1.2.19: + resolution: {integrity: sha512-eHFkha7smINzzPCZ2znh10Fx47B7wGf9HM8I6srL5WJskgDYc7nQ2fs/azJcwoFdWxJLar3hugWi8azYkRTZNA==} dependencies: '@antv/g-math': 2.0.2 '@antv/util': 3.3.5 @@ -893,20 +819,6 @@ packages: gl-matrix: 3.4.3 rbush: 3.0.1 tslib: 2.6.2 - dev: true - - /@antv/g-math@0.1.9: - resolution: {integrity: sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==} - dependencies: - '@antv/util': 2.0.17 - gl-matrix: 3.4.3 - dev: false - - /@antv/g-math@1.7.44: - resolution: {integrity: sha512-4DWbf1nfn/HhQ3TSuPrv8NUL+Jtj4JMUR3d4DYnStbbx4rLBFIG7HXVkgRI41yymwpeHDNEH12cOW8AwGl+rNw==} - dependencies: - gl-matrix: 3.4.3 - tslib: 2.6.2 dev: false /@antv/g-math@2.0.2: @@ -915,143 +827,81 @@ packages: '@antv/util': 3.3.5 gl-matrix: 3.4.3 tslib: 2.6.2 - dev: true - - /@antv/g-plugin-canvas-path-generator@1.1.46: - resolution: {integrity: sha512-YbV2FHflEUQKdN1cQP0vZNRk51lPlYP68IAGJty7LlFh6oIssBSY9fDyYotD9wTg3rn7V2cFSYCJUBxl53FlAg==} - peerDependencies: - '@antv/g-lite': ^1.0.0 - dependencies: - '@antv/g-math': 1.7.44 - '@antv/util': 3.3.2 - tslib: 2.6.2 dev: false - /@antv/g-plugin-canvas-picker@1.8.45: - resolution: {integrity: sha512-wFZ5xK3RlXfk2qV/hvfyWlfVWTJTuch1CSNZycFAxUmBw3T2eoTq5fWqj81ZnF/T75DiG/8L7aB901BaGfiC8A==} - peerDependencies: - '@antv/g-lite': ^1.0.0 + /@antv/g-plugin-canvas-path-generator@1.3.19: + resolution: {integrity: sha512-fJTtx1Th8JHaaShrfNdU9fmasR+u6qH2P6ItUnJS9Yp8d+/Q+yPVPC0YOgI/d9dMpl6wcdcRjSkIvm1upXH8Kw==} dependencies: - '@antv/g-plugin-canvas-path-generator': 1.1.46 - '@antv/util': 3.3.2 - gl-matrix: 3.4.3 + '@antv/g-lite': 1.2.19 + '@antv/g-math': 2.0.2 + '@antv/util': 3.3.5 tslib: 2.6.2 dev: false - /@antv/g-plugin-canvas-renderer@1.7.53: - resolution: {integrity: sha512-S/U4KYJobEQeoOv1Ahf4JaW8gpQGB2/2f+eNx93GigNkiMD0PxTtXhrclFG1vBHNaLJxdmLHd2WTvI0Qihy3sg==} - peerDependencies: - '@antv/g-lite': ^1.0.0 + /@antv/g-plugin-canvas-picker@1.10.21: + resolution: {integrity: sha512-6Vt21POTJ8MO3VrGFyOEInDgGAPOe9HYhod67R8Q6yG3iKbuWCNeqNP5V5po5lNF5joFRfw08Bp3rY3VdJqZNg==} dependencies: - '@antv/g-math': 1.7.44 - '@antv/g-plugin-canvas-path-generator': 1.1.46 - '@antv/g-plugin-image-loader': 1.1.47 - '@antv/util': 3.3.2 + '@antv/g-lite': 1.2.19 + '@antv/g-math': 2.0.2 + '@antv/g-plugin-canvas-path-generator': 1.3.19 + '@antv/g-plugin-canvas-renderer': 1.9.21 + '@antv/util': 3.3.5 gl-matrix: 3.4.3 tslib: 2.6.2 dev: false - /@antv/g-plugin-dom-interaction@1.7.45: - resolution: {integrity: sha512-14sLKemcCxObQDQPSVjNqD9k7uVvf8OfeCJQCza7IadWqdQPEyvFfhCw458hxW+wQm8zqT6rki0Z3RGZW2SPDw==} - peerDependencies: - '@antv/g-lite': ^1.0.0 - dependencies: - tslib: 2.6.2 - dev: false - - /@antv/g-plugin-html-renderer@1.7.49: - resolution: {integrity: sha512-pwP+bjybMHCMcHpIaVZV26obrNMnbI9YZB+4B1MbDHOYRtlE/NHFnNluDIAV7WiyePjp+gUOjqzeox7WNV+C1Q==} - peerDependencies: - '@antv/g-lite': ^1.0.0 + /@antv/g-plugin-canvas-renderer@1.9.21: + resolution: {integrity: sha512-XvV0zhDQUOdhY6p1LjQ9oNX80rc0AODjx4deEflGShSSX+lRtlxf3ovZEeeWA2qV7EGint3BsywZiyv9/nf66A==} dependencies: - '@antv/util': 3.3.2 + '@antv/g-lite': 1.2.19 + '@antv/g-math': 2.0.2 + '@antv/g-plugin-canvas-path-generator': 1.3.19 + '@antv/g-plugin-image-loader': 1.3.19 + '@antv/util': 3.3.5 gl-matrix: 3.4.3 tslib: 2.6.2 dev: false - /@antv/g-plugin-image-loader@1.1.47: - resolution: {integrity: sha512-GBVA2RfBehkGRcetVW99SPlP7MHhBl89JEueZjyPLx9KdpTZ6z++vnknK/2IVcCKlho41t/IJyarsAGsCwLdQg==} - peerDependencies: - '@antv/g-lite': ^1.0.0 + /@antv/g-plugin-dom-interaction@1.9.19: + resolution: {integrity: sha512-4owDqeRLGwImB2FM0sW0g1Yw1GQSqALHBJVlyWRbJy6o64EgDOrKvNzs7oeL2rqzvGZSLIVeJPxJrJ2koEYymw==} dependencies: - '@antv/util': 3.3.2 + '@antv/g-lite': 1.2.19 tslib: 2.6.2 dev: false - /@antv/g-web-animations-api@1.0.34(@antv/g-lite@1.0.51): - resolution: {integrity: sha512-svqHWdC1jEoEla8yW2EzHaac7Lg2vnzvowSpMjYk/lIZyr9FvZ5flR5e84wLkYF91Q+hx3ouvn2DrRNVhNA2yQ==} - peerDependencies: - '@antv/g-lite': ^1.0.0 - dependencies: - '@antv/g-lite': 1.0.51 - '@antv/util': 3.3.2 - dev: false - - /@antv/g-web-animations-api@1.2.15: - resolution: {integrity: sha512-tGjTKlMWbizb8o/hDIHcw1E1o6uS+N3f8dK8A5vTzdBVYWsX0TUEPENTZuQTPgpCU7Rpm3JdtlQc7WAXuSqa6A==} + /@antv/g-plugin-html-renderer@1.9.22: + resolution: {integrity: sha512-+vGFscjEa6yWxJzqPOmkGL5WjrfT0jDlRBzsF1UczeMNEM8zFQu5/VXL8LlCDOnOTJEo3UpkzrUT0fQe4mHaAA==} dependencies: - '@antv/g-lite': 1.2.15 + '@antv/g-lite': 1.2.19 '@antv/util': 3.3.5 - tslib: 2.6.2 - dev: true - - /@antv/g@5.16.13: - resolution: {integrity: sha512-AE/BfRhaivghVXWeeMqMWuV/eGEtOQj7PQ9NVThGdhZ5EbzWGG8SVMqKGlQXijH+lcEyK3NgNtxOuhiH3AFVLQ==} - dependencies: - '@antv/g-camera-api': 1.0.34(@antv/g-lite@1.0.51) - '@antv/g-css-layout-api': 1.0.33(@antv/g-lite@1.0.51) - '@antv/g-css-typed-om-api': 1.0.33(@antv/g-lite@1.0.51) - '@antv/g-dom-mutation-observer-api': 1.0.33(@antv/g-lite@1.0.51) - '@antv/g-lite': 1.0.51 - '@antv/g-web-animations-api': 1.0.34(@antv/g-lite@1.0.51) - dev: false - - /@antv/g@5.18.16: - resolution: {integrity: sha512-yoiioVJkEMrUIbDFGW5kXnl5iYNNoxyonXrDSfBQpc9PBGkW8uo6tRcA9l+iJErDABKub8Dw8eJHfRRrCsrKsQ==} - dependencies: - '@antv/g-camera-api': 1.2.15 - '@antv/g-dom-mutation-observer-api': 1.2.15 - '@antv/g-lite': 1.2.15 - '@antv/g-web-animations-api': 1.2.15 - dev: true - - /@antv/matrix-util@3.0.4: - resolution: {integrity: sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==} - dependencies: - '@antv/util': 2.0.17 gl-matrix: 3.4.3 tslib: 2.6.2 dev: false - /@antv/matrix-util@3.1.0-beta.3: - resolution: {integrity: sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==} + /@antv/g-plugin-image-loader@1.3.19: + resolution: {integrity: sha512-82YBFax1DeNY8S8FsudlkuxTcg/6LBnHdp2vHHvZWDCmCP0BU0+neRQMIqC2b13mn+7zRiGXg0DllwnJEWBZ8g==} dependencies: - '@antv/util': 2.0.17 + '@antv/g-lite': 1.2.19 + '@antv/util': 3.3.5 gl-matrix: 3.4.3 tslib: 2.6.2 dev: false - /@antv/path-util@2.0.15: - resolution: {integrity: sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==} - dependencies: - '@antv/matrix-util': 3.0.4 - '@antv/util': 2.0.17 - tslib: 2.6.2 - dev: false - - /@antv/util@2.0.17: - resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} + /@antv/g-web-animations-api@1.2.19: + resolution: {integrity: sha512-Px4Lj5wDkGTaj4BkazdcWVgWdV98oIumljKjSFyrrEdkV/Xq+f7LgSOIA6zBFQ6MQpt7PS6DtYWdmSQKjynPWw==} dependencies: - csstype: 3.1.2 + '@antv/g-lite': 1.2.19 + '@antv/util': 3.3.5 tslib: 2.6.2 dev: false - /@antv/util@3.3.2: - resolution: {integrity: sha512-uvyQxEOugdJs/FVlpz/+8pKxn70z8jEVydPqv+LI62cpIF7YDjVnMfNIsoMqwEoTzPUJ9TJalyLqZhT5rYez0w==} + /@antv/g@5.18.21: + resolution: {integrity: sha512-+RFiVeMgmPL94U4/wN3HUwxYmkOq2msrPAg38NeGG6Mwo4DOW2nEZqoQCpDFxzmTRwKM984b24epcEPv+wNy+g==} dependencies: - fast-deep-equal: 3.1.3 - gl-matrix: 3.4.3 - tslib: 2.6.2 + '@antv/g-camera-api': 1.2.20 + '@antv/g-dom-mutation-observer-api': 1.2.19 + '@antv/g-lite': 1.2.19 + '@antv/g-web-animations-api': 1.2.19 dev: false /@antv/util@3.3.5: @@ -1061,7 +911,7 @@ packages: flru: 1.0.2 gl-matrix: 3.4.3 tslib: 2.6.2 - dev: true + dev: false /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} @@ -1074,29 +924,6 @@ packages: resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.18.9: - resolution: {integrity: sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.18.9) - '@babel/helpers': 7.23.2 - '@babel/parser': 7.23.0 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/core@7.23.2: resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} @@ -1119,16 +946,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.18.9(@babel/core@7.18.9)(eslint@8.52.0): - resolution: {integrity: sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==} + /@babel/eslint-parser@7.22.15(@babel/core@7.23.2)(eslint@8.52.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: - '@babel/core': '>=7.11.0' + '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.23.2 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.52.0 - eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: false @@ -1185,6 +1012,18 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -1215,20 +1054,6 @@ packages: dependencies: '@babel/types': 7.23.0 - /@babel/helper-module-transforms@7.23.0(@babel/core@7.18.9): - resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: false - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} @@ -1382,6 +1207,7 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1450,17 +1276,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.18.6(@babel/core@7.23.2): - resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - babel-plugin-dynamic-import-node: 2.3.3 dev: false /@babel/plugin-transform-modules-commonjs@7.20.11(@babel/core@7.23.2): @@ -1485,27 +1309,6 @@ packages: '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.23.2): - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/plugin-transform-react-jsx': 7.20.7(@babel/core@7.23.2) - dev: false - - /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.23.2): - resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} @@ -1515,17 +1318,6 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.23.2): - resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} @@ -1535,21 +1327,6 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx@7.20.7(@babel/core@7.23.2): - resolution: {integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) - '@babel/types': 7.23.0 - dev: false /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} @@ -1564,11 +1341,8 @@ packages: '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) dev: true - /@babel/runtime@7.18.9: - resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: false /@babel/runtime@7.20.7: @@ -2030,26 +1804,14 @@ packages: /@emotion/unitless@0.7.5: resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - /@esbuild-kit/cjs-loader@2.4.1: - resolution: {integrity: sha512-lhc/XLith28QdW0HpHZvZKkorWgmCNT7sVelMHDj3HFdTfdqkwEKvT+aXVQtNAmCC39VJhunDkWhONWB7335mg==} - dependencies: - '@esbuild-kit/core-utils': 3.0.0 - get-tsconfig: 4.3.0 - dev: false - - /@esbuild-kit/core-utils@3.0.0: - resolution: {integrity: sha512-TXmwH9EFS3DC2sI2YJWJBgHGhlteK0Xyu1VabwetMULfm3oYhbrsWV5yaSr2NTWZIgDGVLHbRf0inxbjXqAcmQ==} - dependencies: - esbuild: 0.15.18 - source-map-support: 0.5.21 - dev: false - - /@esbuild-kit/esm-loader@2.5.4: - resolution: {integrity: sha512-afmtLf6uqxD5IgwCzomtqCYIgz/sjHzCWZFvfS5+FzeYxOURPUo4QcHtqJxbxWOMOogKriZanN/1bJQE/ZL93A==} - dependencies: - '@esbuild-kit/core-utils': 3.0.0 - get-tsconfig: 4.3.0 + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: false + optional: true /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} @@ -2057,11 +1819,10 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true - /@esbuild/android-arm@0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2075,7 +1836,15 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true + optional: true + + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false optional: true /@esbuild/android-x64@0.18.20: @@ -2084,7 +1853,15 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true /@esbuild/darwin-arm64@0.18.20: @@ -2093,7 +1870,15 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true /@esbuild/darwin-x64@0.18.20: @@ -2102,7 +1887,15 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false optional: true /@esbuild/freebsd-arm64@0.18.20: @@ -2111,7 +1904,15 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true /@esbuild/freebsd-x64@0.18.20: @@ -2120,7 +1921,15 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-arm64@0.18.20: @@ -2129,16 +1938,32 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true - dev: true + dev: false + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-ia32@0.18.20: @@ -2147,7 +1972,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-loong64@0.14.54: @@ -2159,8 +1983,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.15.18: - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2174,7 +1998,15 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-mips64el@0.18.20: @@ -2183,7 +2015,15 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-ppc64@0.18.20: @@ -2192,7 +2032,15 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-riscv64@0.18.20: @@ -2201,7 +2049,15 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-s390x@0.18.20: @@ -2210,7 +2066,15 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-x64@0.18.20: @@ -2219,7 +2083,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false optional: true /@esbuild/netbsd-x64@0.18.20: @@ -2228,7 +2100,15 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false optional: true /@esbuild/openbsd-x64@0.18.20: @@ -2237,7 +2117,15 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false optional: true /@esbuild/sunos-x64@0.18.20: @@ -2246,7 +2134,15 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true + optional: true + + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true /@esbuild/win32-arm64@0.18.20: @@ -2255,7 +2151,15 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true + optional: true + + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true /@esbuild/win32-ia32@0.18.20: @@ -2264,7 +2168,15 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true + optional: true + + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true /@esbuild/win32-x64@0.18.20: @@ -2273,7 +2185,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): @@ -2347,70 +2258,70 @@ packages: - '@types/react' dev: false - /@formatjs/ecma402-abstract@1.14.3: - resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==} + /@formatjs/ecma402-abstract@1.18.0: + resolution: {integrity: sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==} dependencies: - '@formatjs/intl-localematcher': 0.2.32 + '@formatjs/intl-localematcher': 0.5.2 tslib: 2.6.2 dev: false - /@formatjs/fast-memoize@1.2.7: - resolution: {integrity: sha512-hPeM5LXUUjtCKPybWOUAWpv8lpja8Xz+uKprFPJcg5F2Rd+/bf1E0UUsLRpaAgOReAf5HMRtoIgv/UcyPICrTQ==} + /@formatjs/fast-memoize@2.2.0: + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} dependencies: tslib: 2.6.2 dev: false - /@formatjs/icu-messageformat-parser@2.1.14: - resolution: {integrity: sha512-0KqeVOb72losEhUW+59vhZGGd14s1f35uThfEMVKZHKLEObvJdFTiI3ZQwvTMUCzLEMxnS6mtnYPmG4mTvwd3Q==} + /@formatjs/icu-messageformat-parser@2.7.3: + resolution: {integrity: sha512-X/jy10V9S/vW+qlplqhMUxR8wErQ0mmIYSq4mrjpjDl9mbuGcCILcI1SUYkL5nlM4PJqpc0KOS0bFkkJNPxYRw==} dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/icu-skeleton-parser': 1.3.18 + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/icu-skeleton-parser': 1.7.0 tslib: 2.6.2 dev: false - /@formatjs/icu-skeleton-parser@1.3.18: - resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==} + /@formatjs/icu-skeleton-parser@1.7.0: + resolution: {integrity: sha512-Cfdo/fgbZzpN/jlN/ptQVe0lRHora+8ezrEeg2RfrNjyp+YStwBy7cqDY8k5/z2LzXg6O0AdzAV91XS0zIWv+A==} dependencies: - '@formatjs/ecma402-abstract': 1.14.3 + '@formatjs/ecma402-abstract': 1.18.0 tslib: 2.6.2 dev: false - /@formatjs/intl-displaynames@6.2.3: - resolution: {integrity: sha512-teB0L68MDGM8jEKQg55w7nvFjzeLHE6e3eK/04s+iuEVYYmvjjiHJKHrthKENzcJ0F6mHf/AwXrbX+1mKxT6AQ==} + /@formatjs/intl-displaynames@6.6.4: + resolution: {integrity: sha512-ET8KQ+L9Q0K8x1SnJQa4DNssUcbATlMopWqYvGGR8yAvw5qwAQc1fv+DshCoZNIE9pbcue0IGC4kWNAkWqlFag==} dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/intl-localematcher': 0.2.32 + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/intl-localematcher': 0.5.2 tslib: 2.6.2 dev: false - /@formatjs/intl-listformat@7.1.7: - resolution: {integrity: sha512-Zzf5ruPpfJnrAA2hGgf/6pMgQ3tx9oJVhpqycFDavHl3eEzrwdHddGqGdSNwhd0bB4NAFttZNQdmKDldc5iDZw==} + /@formatjs/intl-listformat@7.5.3: + resolution: {integrity: sha512-l7EOr0Yh1m8KagytukB90yw81uyzrM7amKFrgxXqphz4KeSIL0KPa68lPsdtZ+JmQB73GaDQRwLOwUKFZ1VZPQ==} dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/intl-localematcher': 0.2.32 + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/intl-localematcher': 0.5.2 tslib: 2.6.2 dev: false - /@formatjs/intl-localematcher@0.2.32: - resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} + /@formatjs/intl-localematcher@0.5.2: + resolution: {integrity: sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw==} dependencies: tslib: 2.6.2 dev: false - /@formatjs/intl@2.6.3(typescript@5.2.2): - resolution: {integrity: sha512-JaVZk14U/GypVfCZPevQ0KdruFkq16FXx7g398/Dm+YEx/W7sRiftbZeDy4wQ7WGryb45e763XycxD9o/vm9BA==} + /@formatjs/intl@2.9.9(typescript@5.2.2): + resolution: {integrity: sha512-JI3CNgL2Zdg5lv9ncT2sYKqbAj2RGrCbdzaCckIxMPxn4QuHuOVvYUGmBAXVusBmfG/0sxLmMrnwnBioz+QKdA==} peerDependencies: - typescript: ^4.7 + typescript: '5' peerDependenciesMeta: typescript: optional: true dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/fast-memoize': 1.2.7 - '@formatjs/icu-messageformat-parser': 2.1.14 - '@formatjs/intl-displaynames': 6.2.3 - '@formatjs/intl-listformat': 7.1.7 - intl-messageformat: 10.2.5 + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.3 + '@formatjs/intl-displaynames': 6.6.4 + '@formatjs/intl-listformat': 7.5.3 + intl-messageformat: 10.5.8 tslib: 2.6.2 typescript: 5.2.2 dev: false @@ -2495,18 +2406,12 @@ packages: /@humanwhocodes/object-schema@2.0.1: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - /@iconify-json/fa@1.1.3: - resolution: {integrity: sha512-Cmzx42MZ2kTOLNGFlplEEvFXPsHkofoIX7iO+XZggyUpLjJjf/3AJS01NzNDoDhol9OZEUz7I0syGtuAjfOv4w==} - dependencies: - '@iconify/types': 2.0.0 - dev: false - /@iconify/types@2.0.0: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: false - /@iconify/utils@2.0.9: - resolution: {integrity: sha512-ropNqaeamoxZvXxvaTJXrI0MrqdWdDVIs/mW7/sEQbNi0aXYUGL2iuLs1da3QR163gyG63kiyTsqw2oQYamw3Q==} + /@iconify/utils@2.1.1: + resolution: {integrity: sha512-H8xz74JDzDw8f0qLxwIaxFMnFkbXTZNWEufOk3WxaLFHV4h0A2FjIDgNk5LzC0am4jssnjdeJJdRs3UFu3582Q==} dependencies: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.2 @@ -2701,11 +2606,11 @@ packages: transitivePeerDependencies: - supports-color - /@jest/schemas@28.1.3: - resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.24.51 + '@sinclair/typebox': 0.27.8 dev: false /@jest/source-map@24.9.0: @@ -2819,21 +2724,21 @@ packages: transitivePeerDependencies: - supports-color - /@jest/transform@28.1.3: - resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.23.2 - '@jest/types': 28.1.3 + '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 - convert-source-map: 1.9.0 + convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 28.1.3 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -2871,11 +2776,11 @@ packages: '@types/yargs': 16.0.5 chalk: 4.1.2 - /@jest/types@28.1.3: - resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 28.1.3 + '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 '@types/node': 20.8.9 @@ -3013,6 +2918,12 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3140,94 +3051,6 @@ packages: esbuild: 0.14.54 dev: true - /@parcel/css-darwin-arm64@1.9.0: - resolution: {integrity: sha512-f/guZseS2tNKtKw94LgpNTItZqdVA0mnznqPsmQaR5lSB+cM3IPrSV8cgOOpAS7Vwo9ggxuJartToxBBN+dWSw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@parcel/css-darwin-x64@1.9.0: - resolution: {integrity: sha512-4SpuwiM/4ayOgKflqSLd87XT7YwyC3wd2QuzOOkasjbe38UU+tot/87l2lQYEB538YinLdfwFQuFLDY0x9MxgA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@parcel/css-linux-arm-gnueabihf@1.9.0: - resolution: {integrity: sha512-KxCyX5fFvX5636Y8LSXwCxXMtIncgP7Lkw8nLsqd24C5YqMokmuOtAcHb/vQ9zQG6YiUWTv0MybqDuL7dBDfVw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/css-linux-arm64-gnu@1.9.0: - resolution: {integrity: sha512-wZ6Gsn6l+lSuvRdfWoyr7TdY24l29eGCD8QhXcqA1ALnFI7+KOTMBJ6aV3tjWUjMw3sg5qkosMHVqlWZzvrgXw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/css-linux-arm64-musl@1.9.0: - resolution: {integrity: sha512-N6n5HhMzcNR5oXWr0Md91gKYtuDhqDlp+aGDb3VT21uSCNLOvijOUz248v/VaPoRno1BPFYlMxn0fYYTTReB3A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/css-linux-x64-gnu@1.9.0: - resolution: {integrity: sha512-QufawDkaiOjsh6jcZk/dgDBPMqBtIs+LGTOgcJDM6XL4mcbDNxO6VkDANssRUgPnbG66YYy419CUWFta9aeVOg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/css-linux-x64-musl@1.9.0: - resolution: {integrity: sha512-s528buicSd83/5M5DN31JqwefZ8tqx4Jm97srkLDVBCZg+XEe9P0bO7q1Ngz5ZVFqfwvv8OYLPOtAtBmEppG3g==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/css-win32-x64-msvc@1.9.0: - resolution: {integrity: sha512-L4s84iK4PXnO/SzZyTsazAuzadtEYLGHgi1dyKYxMMGCjToCDjuwsn5K8bykeewZxjoL7RaunQGqCBRt5dfB5Q==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@parcel/css@1.9.0: - resolution: {integrity: sha512-egCetUQ1H6pgYxOIxVQ8X/YT5e8G0R8eq6aVaUHrqnZ7A8cc6FYgknl9XRmoy2Xxo9h1htrbzdaEShQ5gROwvw==} - engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - '@parcel/css-darwin-arm64': 1.9.0 - '@parcel/css-darwin-x64': 1.9.0 - '@parcel/css-linux-arm-gnueabihf': 1.9.0 - '@parcel/css-linux-arm64-gnu': 1.9.0 - '@parcel/css-linux-arm64-musl': 1.9.0 - '@parcel/css-linux-x64-gnu': 1.9.0 - '@parcel/css-linux-x64-musl': 1.9.0 - '@parcel/css-win32-x64-msvc': 1.9.0 - dev: false - /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -3245,45 +3068,6 @@ packages: open: 9.1.0 picocolors: 1.0.0 tslib: 2.6.2 - dev: true - - /@pmmmwh/react-refresh-webpack-plugin@0.5.7(react-refresh@0.14.0): - resolution: {integrity: sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q==} - engines: {node: '>= 10.13'} - peerDependencies: - '@types/webpack': 4.x || 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <3.0.0' - webpack: '>=4.43.0 <6.0.0' - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - dependencies: - ansi-html-community: 0.0.8 - common-path-prefix: 3.0.0 - core-js-pure: 3.27.1 - error-stack-parser: 2.1.4 - find-up: 5.0.0 - html-entities: 2.3.3 - loader-utils: 2.0.4 - react-refresh: 0.14.0 - schema-utils: 3.1.1 - source-map: 0.7.4 - dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -3688,11 +3472,11 @@ packages: string-argv: 0.3.2 dev: true - /@selderee/plugin-htmlparser2@0.6.0: - resolution: {integrity: sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==} + /@selderee/plugin-htmlparser2@0.11.0: + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} dependencies: - domhandler: 4.3.1 - selderee: 0.6.0 + domhandler: 5.0.3 + selderee: 0.11.0 dev: false /@semantic-release/changelog@6.0.3(semantic-release@22.0.6): @@ -3832,8 +3616,8 @@ packages: nanopop: 2.2.0 dev: true - /@sinclair/typebox@0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: false /@sindresorhus/is@0.14.0: @@ -3856,10 +3640,18 @@ packages: dependencies: '@sinonjs/commons': 1.8.6 + /@sketch-hq/sketch-file-format-ts@6.5.0: + resolution: {integrity: sha512-shaGl4ttFDpHjYBoMaZpciOtsi/lKvJ3VfcBYk6+PjjbFs6H5GxPAyhbiSqy3Vmx30aos284pd88QzD3rE6iag==} + dev: false + /@stackblitz/sdk@1.8.1: resolution: {integrity: sha512-hjYfjOLQBNDzqPD5AkGJOD7j+uvFwGocDTmwNqmLCWR5EY7BDtcOtDY2M+91v/twYWWNvI7N8UNIgojCPNgzMA==} dev: false + /@stackblitz/sdk@1.9.0: + resolution: {integrity: sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==} + dev: false + /@stone-lyl/google-translate-script@0.1.0: resolution: {integrity: sha512-OW6wZkNQbldM5qDqxN6ZZMMXtOh0A3OVaLFV++bT4C6AVRH+j/j6FNmwSj6/rflOBktJMIZcLm2i7O79Krp57g==} dependencies: @@ -3884,6 +3676,7 @@ packages: /@stylelint/postcss-css-in-js@0.38.0(postcss-syntax@0.36.2)(postcss@8.4.31): resolution: {integrity: sha512-XOz5CAe49kS95p5yRd+DAIWDojTjfmyAQ4bbDlXMdbZTQ5t0ThjSLvWI6JI2uiS7MFurVBkZ6zUqcimzcLTBoQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: postcss: '>=7.0.0' postcss-syntax: '>=0.36.2' @@ -3975,17 +3768,6 @@ packages: '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.2) '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.2) - /@svgr/core@6.2.1: - resolution: {integrity: sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==} - engines: {node: '>=10'} - dependencies: - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.2.1) - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color - dev: false - /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} @@ -3997,7 +3779,6 @@ packages: cosmiconfig: 7.1.0 transitivePeerDependencies: - supports-color - dev: true /@svgr/hast-util-to-babel-ast@6.5.1: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} @@ -4006,21 +3787,6 @@ packages: '@babel/types': 7.23.0 entities: 4.4.0 - /@svgr/plugin-jsx@6.5.1(@svgr/core@6.2.1): - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 - dependencies: - '@babel/core': 7.23.2 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.2) - '@svgr/core': 6.2.1 - '@svgr/hast-util-to-babel-ast': 6.5.1 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} engines: {node: '>=10'} @@ -4034,26 +3800,44 @@ packages: svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - dev: true - /@svgr/plugin-svgo@6.5.1(@svgr/core@6.2.1): + /@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1): resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} engines: {node: '>=10'} peerDependencies: '@svgr/core': '*' dependencies: - '@svgr/core': 6.2.1 + '@svgr/core': 6.5.1 cosmiconfig: 7.1.0 - deepmerge: 4.2.2 + deepmerge: 4.3.1 svgo: 2.8.0 dev: false + /@swc/core-darwin-arm64@1.3.72: + resolution: {integrity: sha512-oNSI5hVfZ+1xpj+dH1g4kQqA0VsGtqd8S9S+cDqkHZiOOVOevw9KN6dzVtmLOcPtlULVypVc0TVvsB55KdVZhQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@swc/core-darwin-arm64@1.3.95: resolution: {integrity: sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64@1.3.72: + resolution: {integrity: sha512-y5O/WQ1g0/VfTgeNahWIOutbdD5U2Gi703jaefdcoJo3FUx8WU108QQdbVGwGMgaqapo3iQB6Qs9paixYQAYsA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true /@swc/core-darwin-x64@1.3.95: @@ -4062,6 +3846,16 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.3.72: + resolution: {integrity: sha512-05JdWcso0OomHF+7bk5MBDgI8MZ9skcQ/4nhSv5gboSgSiuBmKM15Bg3lZ5iAUwGByNj7pGkSmmd3YwTrXEB+g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true /@swc/core-linux-arm-gnueabihf@1.3.95: @@ -4070,6 +3864,17 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu@1.3.72: + resolution: {integrity: sha512-8qRELJaeYshhJgqvyOeXCKqBOpai+JYdWuouMbvvDUL85j3OcZhzR+bipexEbbJKcOCdRnoYB7Qg6mjqZ0t7VA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: false optional: true /@swc/core-linux-arm64-gnu@1.3.95: @@ -4079,6 +3884,17 @@ packages: os: [linux] libc: [glibc] requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.3.72: + resolution: {integrity: sha512-tOqAGZw+Pe7YrBHFrwFVyRiKqjgjzwYbJmY+UDxLrzWrZSVtC3eO2TPrp7kWmhirg40Og81BbdfRAl8ds48w0Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: false optional: true /@swc/core-linux-arm64-musl@1.3.95: @@ -4088,6 +3904,17 @@ packages: os: [linux] libc: [musl] requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu@1.3.72: + resolution: {integrity: sha512-U2W2xWR3s9nplGVWz376GiBlcLTgxyYKlpZPBNZk0w3OvTcjKC62gW1Pe7PUkk4NgJUnaQDBa/mb4V4Zl+GZPA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: false optional: true /@swc/core-linux-x64-gnu@1.3.95: @@ -4097,6 +3924,17 @@ packages: os: [linux] libc: [glibc] requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl@1.3.72: + resolution: {integrity: sha512-3+2dUiZBsifKgvnFEHWdysXjInK8K+BfPBw2tTZJmq1+fZLt0rvuErYDVMLfIJnVWLCcJMnDtTXrvkFV1y/6iA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: false optional: true /@swc/core-linux-x64-musl@1.3.95: @@ -4106,6 +3944,16 @@ packages: os: [linux] libc: [musl] requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc@1.3.72: + resolution: {integrity: sha512-ndI8xZ2AId806D25xgqw2SFJ9gc/jhg21+5hA8XPq9ZL+oDiaYDztaP3ijVmZ1G5xXKD9DpgB7xmylv/f6o6GA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true /@swc/core-win32-arm64-msvc@1.3.95: @@ -4114,6 +3962,16 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc@1.3.72: + resolution: {integrity: sha512-F3TK8JHP3SRFjLRlzcRVZPnvvGm2CQ5/cwbIkaEq0Dla3kyctU8SiRqvtYwWCW4JuY10cUygIg93Ec/C9Lkk4g==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true /@swc/core-win32-ia32-msvc@1.3.95: @@ -4122,6 +3980,16 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc@1.3.72: + resolution: {integrity: sha512-FXMnIUtLl0yEmGkw+xbUg/uUPExvUxUlLSHbX7CnbSuOIHqMHzvEd9skIueLAst4bvmJ8kT1hDyAIWQcTIAJYQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true /@swc/core-win32-x64-msvc@1.3.95: @@ -4130,8 +3998,31 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true + /@swc/core@1.3.72: + resolution: {integrity: sha512-+AKjwLH3/STfPrd7CHzB9+NG1FVT0UKJMUChuWq9sQ8b9xlV8vUeRgZXgh/EHYvNQgl/OUTQKtL6xU2yOLuEuA==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.72 + '@swc/core-darwin-x64': 1.3.72 + '@swc/core-linux-arm-gnueabihf': 1.3.72 + '@swc/core-linux-arm64-gnu': 1.3.72 + '@swc/core-linux-arm64-musl': 1.3.72 + '@swc/core-linux-x64-gnu': 1.3.72 + '@swc/core-linux-x64-musl': 1.3.72 + '@swc/core-win32-arm64-msvc': 1.3.72 + '@swc/core-win32-ia32-msvc': 1.3.72 + '@swc/core-win32-x64-msvc': 1.3.72 + dev: false + /@swc/core@1.3.95: resolution: {integrity: sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA==} engines: {node: '>=10'} @@ -4155,9 +4046,11 @@ packages: '@swc/core-win32-arm64-msvc': 1.3.95 '@swc/core-win32-ia32-msvc': 1.3.95 '@swc/core-win32-x64-msvc': 1.3.95 + dev: true /@swc/counter@0.1.2: resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} + dev: true /@swc/jest@0.2.29(@swc/core@1.3.95): resolution: {integrity: sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==} @@ -4172,6 +4065,7 @@ packages: /@swc/types@0.1.5: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} + dev: true /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} @@ -4314,10 +4208,6 @@ packages: '@types/d3-color': 3.1.0 dev: true - /@types/d3-timer@2.0.1: - resolution: {integrity: sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==} - dev: false - /@types/d3-timer@3.0.0: resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} dev: true @@ -4344,10 +4234,10 @@ packages: resolution: {integrity: sha512-R1g/VyKFFI2HLC1QGAeTtCBWCo6n75l41OnsVYNbmKG+kempOESaodf6BeJyUM3Q0rKa/NQcTHbB2+66lNnxLw==} dev: true - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + /@types/fs-extra@11.0.1: + resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: - '@types/minimatch': 5.1.2 + '@types/jsonfile': 6.1.4 '@types/node': 20.8.9 dev: false @@ -4356,8 +4246,8 @@ packages: dependencies: '@types/node': 20.8.9 - /@types/hapi__joi@17.1.8: - resolution: {integrity: sha512-omVytnOAiAfzGUOQArujJr3heWxPrDHW7MF1ieqix1ngoGdhtJmSSDFVM+ZAOa7UmhlGJtltdgUAT03mfDu6kg==} + /@types/hapi__joi@17.1.9: + resolution: {integrity: sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ==} dev: false /@types/hast@2.3.4: @@ -4365,6 +4255,12 @@ packages: dependencies: '@types/unist': 2.0.6 + /@types/hast@2.3.8: + resolution: {integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==} + dependencies: + '@types/unist': 2.0.6 + dev: false + /@types/hoist-non-react-statics@3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: @@ -4414,6 +4310,12 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/jsonfile@6.1.4: + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + dependencies: + '@types/node': 20.8.9 + dev: false + /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: @@ -4443,14 +4345,16 @@ packages: dependencies: '@types/unist': 2.0.6 + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + dependencies: + '@types/unist': 2.0.6 + dev: false + /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} dev: true - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: false - /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} @@ -4479,10 +4383,6 @@ packages: /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - /@types/offscreencanvas@2019.7.0: - resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} - dev: false - /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} @@ -4495,6 +4395,16 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/q@1.5.8: + resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} + dev: false + + /@types/ramda@0.29.3: + resolution: {integrity: sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q==} + dependencies: + types-ramda: 0.29.6 + dev: false + /@types/react-beautiful-dnd@13.1.5: resolution: {integrity: sha512-mzohmMtV48b0bXF2dP8188LzUv9HAGHKucOORYsd5Sqq830pJ4gseFyDDAH0TR4TeD1ceG9DxTQ0FOFbtCSy4Q==} dependencies: @@ -4615,8 +4525,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: false - /@typescript-eslint/eslint-plugin@5.36.1(@typescript-eslint/parser@5.36.1)(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4626,15 +4536,16 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.36.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/type-utils': 5.36.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.36.1(eslint@8.52.0)(typescript@5.2.2) + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.52.0 - functional-red-black-tree: 1.0.1 + graphemer: 1.4.0 ignore: 5.2.4 - regexpp: 3.2.0 + natural-compare-lite: 1.4.0 semver: 7.5.4 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 @@ -4671,8 +4582,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.36.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==} + /@typescript-eslint/parser@5.62.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4681,9 +4592,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/typescript-estree': 5.36.1(typescript@5.2.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) debug: 4.3.4 eslint: 8.52.0 typescript: 5.2.2 @@ -4712,14 +4623,6 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@5.36.1: - resolution: {integrity: sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/visitor-keys': 5.36.1 - dev: false - /@typescript-eslint/scope-manager@5.48.0: resolution: {integrity: sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4727,6 +4630,14 @@ packages: '@typescript-eslint/types': 5.48.0 '@typescript-eslint/visitor-keys': 5.48.0 + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: false + /@typescript-eslint/scope-manager@6.9.1: resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -4735,8 +4646,8 @@ packages: '@typescript-eslint/visitor-keys': 6.9.1 dev: true - /@typescript-eslint/type-utils@5.36.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4745,8 +4656,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.36.1(typescript@5.2.2) - '@typescript-eslint/utils': 5.36.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.52.0 tsutils: 3.21.0(typescript@5.2.2) @@ -4775,22 +4686,22 @@ packages: - supports-color dev: true - /@typescript-eslint/types@5.36.1: - resolution: {integrity: sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - /@typescript-eslint/types@5.48.0: resolution: {integrity: sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + /@typescript-eslint/types@6.9.1: resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.36.1(typescript@5.2.2): - resolution: {integrity: sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==} + /@typescript-eslint/typescript-estree@5.48.0(typescript@5.2.2): + resolution: {integrity: sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4798,8 +4709,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/visitor-keys': 5.36.1 + '@typescript-eslint/types': 5.48.0 + '@typescript-eslint/visitor-keys': 5.48.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4808,10 +4719,9 @@ packages: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: false - /@typescript-eslint/typescript-estree@5.48.0(typescript@5.2.2): - resolution: {integrity: sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4819,8 +4729,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.48.0 - '@typescript-eslint/visitor-keys': 5.48.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4829,6 +4739,7 @@ packages: typescript: 5.2.2 transitivePeerDependencies: - supports-color + dev: false /@typescript-eslint/typescript-estree@6.9.1(typescript@5.2.2): resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} @@ -4851,42 +4762,44 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.36.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==} + /@typescript-eslint/utils@5.48.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.13 - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/typescript-estree': 5.36.1(typescript@5.2.2) + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 5.48.0 + '@typescript-eslint/types': 5.48.0 + '@typescript-eslint/typescript-estree': 5.48.0(typescript@5.2.2) eslint: 8.52.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.52.0) + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript - dev: false - /@typescript-eslint/utils@5.48.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==} + /@typescript-eslint/utils@5.62.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 5.48.0 - '@typescript-eslint/types': 5.48.0 - '@typescript-eslint/typescript-estree': 5.48.0(typescript@5.2.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) eslint: 8.52.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.52.0) semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript + dev: false /@typescript-eslint/utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} @@ -4907,20 +4820,20 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.36.1: - resolution: {integrity: sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==} + /@typescript-eslint/visitor-keys@5.48.0: + resolution: {integrity: sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/types': 5.48.0 eslint-visitor-keys: 3.4.3 - dev: false - /@typescript-eslint/visitor-keys@5.48.0: - resolution: {integrity: sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.48.0 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 + dev: false /@typescript-eslint/visitor-keys@6.9.1: resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} @@ -4930,34 +4843,32 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@umijs/ast@4.0.42: - resolution: {integrity: sha512-wY2c2cNytjIGRlRbS6sZb0zIXTAYTJJSvQJvZNGI1KkgTBfn2Nn3yyQBmJ4W5k73ZYI/+EyKuJsdVxjiNZYtdA==} + /@umijs/ast@4.0.88: + resolution: {integrity: sha512-4V1fXo8U3pRbM9EsxGBW+1h2t1tobEdZCIDvTQUp90WS3CdVFvWWIEzQuP0Dlxs9A7iT/XVbxtjL9gOHX44eng==} dependencies: - '@umijs/bundler-utils': 4.0.42 + '@umijs/bundler-utils': 4.0.88 transitivePeerDependencies: - supports-color dev: false - /@umijs/babel-preset-umi@4.0.42: - resolution: {integrity: sha512-zhaJGYNffvgTMpKCBdntHedLGb8TQxfblv6U4gdHhwTaiyKaEfROpZXXoQBrCErnNB2fBcIbH+BJRHXkqwnXhg==} + /@umijs/babel-preset-umi@4.0.88: + resolution: {integrity: sha512-HZXPA7gvYkaW3Ts67jUtduik8iWlFRyIom7Z/vbfq5YCwWvSVRXUAPBAirKkUfOHsizgGt0iKsL88pu921WWqw==} dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.23.2 '@bloomberg/record-tuple-polyfill': 0.0.4 - '@umijs/bundler-utils': 4.0.42 - '@umijs/utils': 4.0.42 - babel-plugin-styled-components: 2.0.7 - core-js: 3.22.4 + '@umijs/bundler-utils': 4.0.88 + '@umijs/utils': 4.0.88 + core-js: 3.28.0 transitivePeerDependencies: - - styled-components - supports-color dev: false - /@umijs/bundler-esbuild@4.0.42: - resolution: {integrity: sha512-Bt+9oQjxiV26NZbSbTdb2rnXwdFjf8PbH682ozBe+SAuoWXh4UqnxXItDgs193hvhCfdf+O4HlhxfdrLNB5olg==} + /@umijs/bundler-esbuild@4.0.88: + resolution: {integrity: sha512-gbUnsQ4JCx0zVjq7olCVM8mg4yX4IwzNQwic/iJM5s5KS/Cv+u5JHIfGyevYZT3FUjxVl79IsmxYOwKXoDaTpA==} hasBin: true dependencies: - '@umijs/bundler-utils': 4.0.42 - '@umijs/utils': 4.0.42 + '@umijs/bundler-utils': 4.0.88 + '@umijs/utils': 4.0.88 enhanced-resolve: 5.9.3 postcss: 8.4.31 postcss-flexbugs-fixes: 5.0.2(postcss@8.4.31) @@ -4966,30 +4877,32 @@ packages: - supports-color dev: false - /@umijs/bundler-utils@4.0.42: - resolution: {integrity: sha512-cXhMyCiSK/Otg5nkeDJuDeRS84KqFoSR14BTtKkRCH6N3Dk9Xp2q8zXne9DNdQx7HUvb6s1pmA6Pc9S1mzNp5g==} + /@umijs/bundler-utils@4.0.88: + resolution: {integrity: sha512-jJmen5OLJhO8Hd3GWolC1VvxD5RZLHQl9Jx2Lz2soA1463gAqdAAh0Wa6m69YdVBzh0WzHZ9049RmP23K1ow8A==} dependencies: - '@umijs/utils': 4.0.42 - esbuild: 0.15.18 + '@umijs/utils': 4.0.88 + esbuild: 0.17.19 regenerate: 1.4.2 - regenerate-unicode-properties: 10.0.1 + regenerate-unicode-properties: 10.1.1 spdy: 4.0.2 transitivePeerDependencies: - supports-color dev: false - /@umijs/bundler-vite@4.0.42(@types/node@20.8.9)(postcss@8.4.31)(rollup@4.1.5)(sass@1.57.1): - resolution: {integrity: sha512-14pkpFyczSPBf9VCptCGupPIu9Nobvn9RdG5PY+j6pSNOHNooKNBCxjK/PqlR5gEuSiDdp4qGP2mZdAiMW3dNQ==} + /@umijs/bundler-vite@4.0.88(@types/node@20.8.9)(postcss@8.4.31)(rollup@4.1.5)(sass@1.69.5): + resolution: {integrity: sha512-qiToAgLwmPWz1t8l82qEPyFXlZvnRKWJW0WG6vuxQNikDMKCWhk18gZaWwMNhqQvAx/oZ37vFCmR8CDoNOMI/A==} hasBin: true dependencies: - '@svgr/core': 6.2.1 - '@umijs/bundler-utils': 4.0.42 - '@umijs/utils': 4.0.42 - '@vitejs/plugin-react': 2.2.0(vite@3.2.5) - less: 4.1.2 + '@svgr/core': 6.5.1 + '@umijs/bundler-utils': 4.0.88 + '@umijs/utils': 4.0.88 + '@vitejs/plugin-react': 4.0.0(vite@4.3.1) + core-js: 3.28.0 + less: 4.1.3 postcss-preset-env: 7.5.0(postcss@8.4.31) - rollup-plugin-visualizer: 5.6.0(rollup@4.1.5) - vite: 3.2.5(@types/node@20.8.9)(less@4.1.2)(sass@1.57.1) + rollup-plugin-visualizer: 5.9.0(rollup@4.1.5) + systemjs: 6.14.2 + vite: 4.3.1(@types/node@20.8.9)(less@4.1.3)(sass@1.69.5) transitivePeerDependencies: - '@types/node' - postcss @@ -5001,60 +4914,158 @@ packages: - terser dev: false - /@umijs/bundler-webpack@4.0.42(typescript@5.2.2): - resolution: {integrity: sha512-cu4xdGRPHuLnyHvzFg6eq7t07M/rTynOC9vr2ih40iw5Z8WSZyqzgRAJ94len63GL0twPh/9GMjzwvCXR5xUCQ==} - hasBin: true - dependencies: - '@parcel/css': 1.9.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.7(react-refresh@0.14.0) - '@svgr/core': 6.2.1 - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.2.1) - '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.2.1) - '@types/hapi__joi': 17.1.8 - '@umijs/babel-preset-umi': 4.0.42 - '@umijs/bundler-utils': 4.0.42 - '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 - '@umijs/mfsu': 4.0.42 - '@umijs/utils': 4.0.42 - cors: 2.8.5 - css-loader: 6.7.1 - es5-imcompatible-versions: 0.1.77 - fork-ts-checker-webpack-plugin: 7.2.4(typescript@5.2.2) - jest-worker: 27.5.1 - node-libs-browser: 2.2.1 - postcss: 8.4.31 - postcss-preset-env: 7.5.0(postcss@8.4.31) - react-error-overlay: 6.0.9 - react-refresh: 0.14.0 - transitivePeerDependencies: - - '@types/webpack' - - sockjs-client - - styled-components - - supports-color - - type-fest - - typescript - - vue-template-compiler - - webpack - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve + /@umijs/bundler-webpack@4.0.88(typescript@5.2.2): + resolution: {integrity: sha512-9ivKa6pREdgLhni9Zl+HhdqehizLOw+U8Md31l8pcQFq8KHrmlYj0X4iGNMaT7OVWJtZznY0wH4lfLNKSd+RXA==} + hasBin: true + dependencies: + '@svgr/core': 6.5.1 + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) + '@types/hapi__joi': 17.1.9 + '@umijs/babel-preset-umi': 4.0.88 + '@umijs/bundler-utils': 4.0.88 + '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 + '@umijs/mfsu': 4.0.88 + '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0) + '@umijs/utils': 4.0.88 + cors: 2.8.5 + css-loader: 6.7.1 + es5-imcompatible-versions: 0.1.88 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.2.2) + jest-worker: 29.4.3 + lightningcss: 1.19.0 + node-libs-browser: 2.2.1 + postcss: 8.4.31 + postcss-preset-env: 7.5.0(postcss@8.4.31) + react-error-overlay: 6.0.9 + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@types/webpack' + - sockjs-client + - supports-color + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: false + + /@umijs/case-sensitive-paths-webpack-plugin@1.0.1: + resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} + dev: false + + /@umijs/core@4.0.88: + resolution: {integrity: sha512-fwOCDOEW0evLmOWc/uGdlJ8VOS2KhfOd446B2TBUTdyBE8etUBMtZo9NgN2z8VOC+Xu0jLlBIjEMbJ73eWV/qQ==} + dependencies: + '@umijs/bundler-utils': 4.0.88 + '@umijs/utils': 4.0.88 + transitivePeerDependencies: + - supports-color + dev: false + + /@umijs/did-you-know@1.0.3: + resolution: {integrity: sha512-9EZ+rgY9+2HEaE+Z9dGkal2ccw8L4uuz77tCB5WpskW7NBZX5nOj82sqF/shEtA5tU3SWO/Mi4n35K3iONvDtw==} + dev: false + + /@umijs/es-module-parser-darwin-arm64@0.0.7: + resolution: {integrity: sha512-1QeNupekuVYVvL4UHyCRq4ISP2PNk4rDd9UOPONW+KpqTyP9p7RfgGpwB0VLPaFSu2ADtm0XZyIaYEGPY6zuDw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@umijs/es-module-parser-darwin-x64@0.0.7: + resolution: {integrity: sha512-FBFmfigmToPc9qBCW7wHiTYpqnLdPbAvoMGOydzAu2NspdPEF7TfILcr8vCPNbNe3vCobS+T/YM1dP+SagERlA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@umijs/es-module-parser-linux-arm-gnueabihf@0.0.7: + resolution: {integrity: sha512-AXfmg3htkadLGsXUyiyrTig4omGCWIN4l+HS7Qapqv0wlfFYSpC0KPemjyBQgzXO70tDcT+1FNhGjIy+yr2pIQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@umijs/es-module-parser-linux-arm64-gnu@0.0.7: + resolution: {integrity: sha512-2wSdChFc39fPJwvS8tRq+jx8qNlIwrjRk1hb3N5o0rJR+rqt+ceAyNPbYwpNBmUHW7xtmDQvJUeinvr7hIBP+w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: false + optional: true + + /@umijs/es-module-parser-linux-arm64-musl@0.0.7: + resolution: {integrity: sha512-cqQffARWkmQ3n1RYNKZR3aD6X8YaP6u1maASjDgPQOpZMAlv/OSDrM/7iGujWTs0PD0haockNG9/DcP6lgPHMw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: false + optional: true + + /@umijs/es-module-parser-linux-x64-gnu@0.0.7: + resolution: {integrity: sha512-PHrKHtT665Za0Ydjch4ACrNpRU+WIIden12YyF1CtMdhuLDSoU6UfdhF3NoDbgEUcXVDX/ftOqmj0SbH3R1uew==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: false + optional: true + + /@umijs/es-module-parser-linux-x64-musl@0.0.7: + resolution: {integrity: sha512-cyZvUK5lcECLWzLp/eU1lFlCETcz+LEb+wrdARQSST1dgoIGZsT4cqM1WzYmdZNk3o883tiZizLt58SieEiHBQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true dev: false + optional: true - /@umijs/case-sensitive-paths-webpack-plugin@1.0.1: - resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} + /@umijs/es-module-parser-win32-arm64-msvc@0.0.7: + resolution: {integrity: sha512-V7WxnUI88RboSl0RWLNQeKBT7EDW35fW6Tn92zqtoHHxrhAIL9DtDyvC8REP4qTxeZ6Oej/Ax5I6IjsLx3yTOg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: false + optional: true - /@umijs/core@4.0.42: - resolution: {integrity: sha512-ZWC8ApIg8uz1pOlJLcNQveYdT+zXmJCN0plQN61dUuNT/zkwOnCdjjYr6uO+icYEXqGG/CQdcPFaZReerfmC+Q==} - dependencies: - '@umijs/bundler-utils': 4.0.42 - '@umijs/utils': 4.0.42 - transitivePeerDependencies: - - supports-color + /@umijs/es-module-parser-win32-x64-msvc@0.0.7: + resolution: {integrity: sha512-X3Pqy0l38hg6wMPquPeMHuoHU+Cx+wzyz32SVYCta+RPJQ7n9PjrEBiIuVAw5+GJZjSABN7LVr8u/n0RZT9EQA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: false + optional: true - /@umijs/did-you-know@1.0.1: - resolution: {integrity: sha512-FnKZbWb/X3Nk5vmQ4u2qEtB20+fv1kt4WCSvMIhln/kjh+oS6RA4WfvB+EHsfxdotD4qSaj5cqIDgbCYoCNzEA==} + /@umijs/es-module-parser@0.0.7: + resolution: {integrity: sha512-x47CMi/Hw7Nkz3RXTUqlldH/UM+Tcmw2PziV3k+itJqTFJc8oVx3lzdUgCnG+eL3ZtmLPbOEBhPb30V0NytNDQ==} + engines: {node: '>= 10'} + optionalDependencies: + '@umijs/es-module-parser-darwin-arm64': 0.0.7 + '@umijs/es-module-parser-darwin-x64': 0.0.7 + '@umijs/es-module-parser-linux-arm-gnueabihf': 0.0.7 + '@umijs/es-module-parser-linux-arm64-gnu': 0.0.7 + '@umijs/es-module-parser-linux-arm64-musl': 0.0.7 + '@umijs/es-module-parser-linux-x64-gnu': 0.0.7 + '@umijs/es-module-parser-linux-x64-musl': 0.0.7 + '@umijs/es-module-parser-win32-arm64-msvc': 0.0.7 + '@umijs/es-module-parser-win32-x64-msvc': 0.0.7 dev: false /@umijs/history@5.3.1: @@ -5064,18 +5075,18 @@ packages: query-string: 6.14.1 dev: false - /@umijs/lint@4.0.42(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(stylelint@15.11.0)(typescript@5.2.2): - resolution: {integrity: sha512-7dqFHIzy5nMfx6iQIf6zkXuSAmLf5TNE5SdJmK0eYc+uqe6PKkflXJ8+9J5tgMyrqCf0wc3Ilu6p6X6cwsVC2Q==} + /@umijs/lint@4.0.88(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(stylelint@15.11.0)(typescript@5.2.2): + resolution: {integrity: sha512-vDLhfsA0zrAR2NFr/hna75kr1uTYSG032eCg89yBvC7fDn0jxIcXQXEHriZCsgge1puWw0bscnAWR8fx9rdmfA==} dependencies: - '@babel/core': 7.18.9 - '@babel/eslint-parser': 7.18.9(@babel/core@7.18.9)(eslint@8.52.0) + '@babel/core': 7.23.2 + '@babel/eslint-parser': 7.22.15(@babel/core@7.23.2)(eslint@8.52.0) '@stylelint/postcss-css-in-js': 0.38.0(postcss-syntax@0.36.2)(postcss@8.4.31) - '@typescript-eslint/eslint-plugin': 5.36.1(@typescript-eslint/parser@5.36.1)(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/parser': 5.36.1(eslint@8.52.0)(typescript@5.2.2) - '@umijs/babel-preset-umi': 4.0.42 - eslint-plugin-jest: 26.1.5(@typescript-eslint/eslint-plugin@5.36.1)(eslint@8.52.0)(jest@26.6.3)(typescript@5.2.2) - eslint-plugin-react: 7.29.4(eslint@8.52.0) - eslint-plugin-react-hooks: 4.5.0(eslint@8.52.0) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.52.0)(typescript@5.2.2) + '@umijs/babel-preset-umi': 4.0.88 + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.52.0)(jest@26.6.3)(typescript@5.2.2) + eslint-plugin-react: 7.33.2(eslint@8.52.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.52.0) postcss: 8.4.31 postcss-syntax: 0.36.2(postcss-less@6.0.0)(postcss@8.4.31) stylelint-config-standard: 25.0.0(stylelint@15.11.0) @@ -5087,93 +5098,131 @@ packages: - postcss-less - postcss-markdown - postcss-scss - - styled-components - stylelint - supports-color - typescript dev: false - /@umijs/mfsu@4.0.42: - resolution: {integrity: sha512-5xghD/Ba7+soWxkVzSRXp9xsecqmtEG0AM704Z8FoykyRHPDoI53epIzJgu8AFHM/VMBtilgYt1w5RH5Xq8UCg==} + /@umijs/mfsu@4.0.88: + resolution: {integrity: sha512-McHqSuLShUZYD15PsYqpelbot7PyakbMSDr/ckDQNzll6g6B0WIAsDLcDzDf4NFHnxqG76eiWjPuB29f5VSymA==} dependencies: - '@umijs/bundler-esbuild': 4.0.42 - '@umijs/bundler-utils': 4.0.42 - '@umijs/utils': 4.0.42 + '@umijs/bundler-esbuild': 4.0.88 + '@umijs/bundler-utils': 4.0.88 + '@umijs/utils': 4.0.88 enhanced-resolve: 5.9.3 is-equal: 1.6.4 transitivePeerDependencies: - supports-color dev: false - /@umijs/plugin-run@4.0.42: - resolution: {integrity: sha512-FSU/ZSP5dvzC3a4WM21Li+qkiYncVSw0appovegiIXWmHfRASk6OscqldItMFBUHmAaJ9Vpxzxr/FZbZaNeYsA==} + /@umijs/plugin-run@4.0.88: + resolution: {integrity: sha512-WV/tR8c3hpum+Dr1o+cxYyzUigRZOMQxiB5KtZD9x1JzX+nZFCCsXraIQAW6RcJ3bpGOUv7aKMWfx1LWoE2K7A==} dependencies: - tsx: 3.12.1 + tsx: 3.14.0 dev: false - /@umijs/preset-umi@4.0.42(@types/node@20.8.9)(postcss@8.4.31)(rollup@4.1.5)(sass@1.57.1)(typescript@5.2.2): - resolution: {integrity: sha512-yV2c4HieaAPChCHRfiy2kf95WJ7TytEJVmM7hjUTbd8LotQxxcg2yrHZyhnoF2QRIuYl9g3mr+JbFs0PKrCaAA==} + /@umijs/preset-umi@4.0.88(@types/node@20.8.9)(rollup@4.1.5)(sass@1.69.5)(typescript@5.2.2): + resolution: {integrity: sha512-q5emmxWjOrA8ZNTNaNcUEU/FxM/DDnpjGK8aYIce/ih/suzo+K2csWDAkQCBYgNPg4Ro1Juv2oUgyOt3TVcUXA==} dependencies: - '@iconify-json/fa': 1.1.3 - '@iconify/utils': 2.0.9 - '@svgr/core': 6.2.1 - '@umijs/ast': 4.0.42 - '@umijs/babel-preset-umi': 4.0.42 - '@umijs/bundler-utils': 4.0.42 - '@umijs/bundler-vite': 4.0.42(@types/node@20.8.9)(postcss@8.4.31)(rollup@4.1.5)(sass@1.57.1) - '@umijs/bundler-webpack': 4.0.42(typescript@5.2.2) - '@umijs/core': 4.0.42 - '@umijs/did-you-know': 1.0.1 + '@iconify/utils': 2.1.1 + '@svgr/core': 6.5.1 + '@umijs/ast': 4.0.88 + '@umijs/babel-preset-umi': 4.0.88 + '@umijs/bundler-esbuild': 4.0.88 + '@umijs/bundler-utils': 4.0.88 + '@umijs/bundler-vite': 4.0.88(@types/node@20.8.9)(postcss@8.4.31)(rollup@4.1.5)(sass@1.69.5) + '@umijs/bundler-webpack': 4.0.88(typescript@5.2.2) + '@umijs/core': 4.0.88 + '@umijs/did-you-know': 1.0.3 + '@umijs/es-module-parser': 0.0.7 '@umijs/history': 5.3.1 - '@umijs/mfsu': 4.0.42 - '@umijs/plugin-run': 4.0.42 - '@umijs/renderer-react': 4.0.42(react-dom@18.1.0)(react@18.1.0) - '@umijs/server': 4.0.42 - '@umijs/utils': 4.0.42 + '@umijs/mfsu': 4.0.88 + '@umijs/plugin-run': 4.0.88 + '@umijs/renderer-react': 4.0.88(react-dom@18.1.0)(react@18.1.0) + '@umijs/server': 4.0.88 + '@umijs/ui': 3.0.1 + '@umijs/utils': 4.0.88 + '@umijs/zod2ts': 4.0.88 babel-plugin-dynamic-import-node: 2.3.3 click-to-react-component: 1.0.8(react-dom@18.1.0)(react@18.1.0) - core-js: 3.22.4 + core-js: 3.28.0 current-script-polyfill: 1.0.0 enhanced-resolve: 5.9.3 - fast-glob: 3.3.1 + fast-glob: 3.2.12 html-webpack-plugin: 5.5.0 - magic-string: 0.26.2 + less-plugin-resolve: 1.0.0 path-to-regexp: 1.7.0 + postcss: 8.4.31 postcss-prefix-selector: 1.16.0(postcss@8.4.31) react: 18.1.0 react-dom: 18.1.0(react@18.1.0) react-router: 6.3.0(react@18.1.0) react-router-dom: 6.3.0(react-dom@18.1.0)(react@18.1.0) - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 transitivePeerDependencies: - '@types/node' - '@types/react' - '@types/webpack' - - postcss - rollup - sass - sockjs-client - - styled-components - stylus - sugarss - supports-color - terser - type-fest - typescript - - vue-template-compiler - webpack - webpack-dev-server - webpack-hot-middleware - webpack-plugin-serve dev: false - /@umijs/renderer-react@4.0.42(react-dom@18.1.0)(react@18.1.0): - resolution: {integrity: sha512-tZTzBPSneiFafMkxyt2r+qrtA1F/gbSil1Ez/3e5anBIrTPaKkLL9dJzS1cEDkxRc+KTSroBQBCIf/crQcORkg==} + /@umijs/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0): + resolution: {integrity: sha512-RtFvB+/GmjRhpHcqNgnw8iWZpTlxOnmNxi8eDcecxMmxmSgeDj25LV0jr4Q6rOhv3GTIfVGBhkwz+khGT5tfmg==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.27.1 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.3.3 + loader-utils: 2.0.4 + react-refresh: 0.14.0 + schema-utils: 3.1.1 + source-map: 0.7.4 + dev: false + + /@umijs/renderer-react@4.0.88(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-5zU4+PLO9+D8nl/WikGE6QjYvztKWSLGp+N33TPL0BrrJOSTI/ffH/iwsPxiFG/ABX4oz3SShUyIhyChSnP/WQ==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.23.2 '@loadable/component': 5.15.2(react@18.1.0) history: 5.3.0 react: 18.1.0 @@ -5182,10 +5231,10 @@ packages: react-router-dom: 6.3.0(react-dom@18.1.0)(react@18.1.0) dev: false - /@umijs/server@4.0.42: - resolution: {integrity: sha512-HvwqjO0eYrf7PJWiKe67/SC1qVQrLahjmsRzg1gefCj+j6RYjd7mq8stc1yFnrmnoUhTTN7t71Q+x6h7bxM3nA==} + /@umijs/server@4.0.88: + resolution: {integrity: sha512-Bvt6HCVn7NO7hrHbWXccJhpeQCwb5/lL9g5ShSOIfcf8WwND+U7E9H3ME5cMJywdgeTjEe+yItLGQHur9TpOTg==} dependencies: - '@umijs/bundler-utils': 4.0.42 + '@umijs/bundler-utils': 4.0.88 history: 5.3.0 react: 18.1.0 react-dom: 18.1.0(react@18.1.0) @@ -5194,46 +5243,51 @@ packages: - supports-color dev: false - /@umijs/test@4.0.42(@babel/core@7.23.2): - resolution: {integrity: sha512-+/a7v3VeB6Z7DdSRcj9sazeVM0yHKtlpVGfCrcZLbUemZ5AERsSOc0jdj5wknVjslTbXpQ4Jesf1nmnOEmZE6g==} + /@umijs/test@4.0.88(@babel/core@7.23.2): + resolution: {integrity: sha512-3v021VhU/aQc3Jk421z3ys1Q5S/JJlIzhJYYds+O1gb3esgeaGIS6OyDA1xmCaqVGgJeYOq408AN43/hCR9rtw==} dependencies: - '@babel/plugin-transform-modules-commonjs': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) '@jest/types': 27.5.1 - '@umijs/bundler-utils': 4.0.42 - babel-jest: 28.1.3(@babel/core@7.23.2) - esbuild: 0.15.18 + '@umijs/bundler-utils': 4.0.88 + '@umijs/utils': 4.0.88 + babel-jest: 29.7.0(@babel/core@7.23.2) + esbuild: 0.17.19 identity-obj-proxy: 3.0.0 - isomorphic-unfetch: 3.1.0 + isomorphic-unfetch: 4.0.2 transitivePeerDependencies: - '@babel/core' - - encoding - supports-color dev: false - /@umijs/utils@4.0.42: - resolution: {integrity: sha512-67GEzaV+6aLVxvbO5xtbSY3I3aBwvrETd8fpCOS+tnZSzFOt5qh5ffU8FFXhPAiBrsv0jrt9Wk9IIi+S3ulLdg==} + /@umijs/ui@3.0.1: + resolution: {integrity: sha512-zcz37AJH0xt/6XVVbyO/hmsK9Hq4vH23HZ4KYVi5A8rbM9KeJkJigTS7ELOdArawZhVNGe+h3a5Oixs4a2QsWw==} + dev: false + + /@umijs/utils@4.0.88: + resolution: {integrity: sha512-b7rW75hQ18+1Q3rt6cqOIed6hftmsExUsfJaCjYCIqFL3DRn+D8Uwb0EEsNlxgLnWUgwGC2KrIYYMvc2Q2XfWA==} dependencies: chokidar: 3.5.3 pino: 7.11.0 dev: false + /@umijs/zod2ts@4.0.88: + resolution: {integrity: sha512-YdctA0RdGlJCnkc7wegre4BD2QfWGPOXes6pBiD1HUxBYiB4VQRrk54ESOD87o/OVB2VfhfqjE/v+xeevEeF3w==} + dev: false + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vitejs/plugin-react@2.2.0(vite@3.2.5): - resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} + /@vitejs/plugin-react@4.0.0(vite@4.3.1): + resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^3.0.0 + vite: ^4.2.0 dependencies: '@babel/core': 7.23.2 - '@babel/plugin-transform-react-jsx': 7.20.7(@babel/core@7.23.2) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.23.2) - '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.23.2) - '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.23.2) - magic-string: 0.26.7 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.2) react-refresh: 0.14.0 - vite: 3.2.5(@types/node@20.8.9)(less@4.1.2)(sass@1.57.1) + vite: 4.3.1(@types/node@20.8.9)(less@4.1.3)(sass@1.69.5) transitivePeerDependencies: - supports-color dev: false @@ -5889,13 +5943,13 @@ packages: rc-input-number: 7.3.11(react-dom@18.2.0)(react@18.2.0) rc-mentions: 1.13.1(react-dom@18.2.0)(react@18.2.0) rc-menu: 9.8.1(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.6.2(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) rc-notification: 4.6.1(react-dom@18.2.0)(react@18.2.0) rc-pagination: 3.2.0(react-dom@18.2.0)(react@18.2.0) rc-picker: 2.7.0(react-dom@18.2.0)(react@18.2.0) rc-progress: 3.4.1(react-dom@18.2.0)(react@18.2.0) rc-rate: 2.9.2(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.2.1(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) rc-segmented: 2.1.0(react-dom@18.2.0)(react@18.2.0) rc-select: 14.1.18(react-dom@18.2.0)(react@18.2.0) rc-slider: 10.0.1(react-dom@18.2.0)(react@18.2.0) @@ -5908,7 +5962,7 @@ packages: rc-tree: 5.7.2(react-dom@18.2.0)(react@18.2.0) rc-tree-select: 5.5.5(react-dom@18.2.0)(react@18.2.0) rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) - rc-upload: 4.3.4(react-dom@18.2.0)(react@18.2.0) + rc-upload: 4.3.5(react-dom@18.2.0)(react@18.2.0) rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5975,6 +6029,67 @@ packages: - date-fns - luxon - moment + dev: true + + /antd@5.11.2: + resolution: {integrity: sha512-7/yqmfXpShHH0MJQOgv3vX9PUFwctyBm/G5L0i/S4AQy20ON6ZZ2UkjmWxgwg3vq2CEHKyVGTHozpH9WwDizgw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/cssinjs': 1.17.2(react-dom@18.2.0)(react@18.2.0) + '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) + '@ant-design/react-slick': 1.0.2(react@18.2.0) + '@babel/runtime': 7.23.2 + '@ctrl/tinycolor': 3.6.1 + '@rc-component/color-picker': 1.4.1(react-dom@18.2.0)(react@18.2.0) + '@rc-component/mutate-observer': 1.1.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/tour': 1.10.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.7 + qrcode.react: 3.1.0(react@18.2.0) + rc-cascader: 3.20.0(react-dom@18.2.0)(react@18.2.0) + rc-checkbox: 3.1.0(react-dom@18.2.0)(react@18.2.0) + rc-collapse: 3.7.1(react-dom@18.2.0)(react@18.2.0) + rc-dialog: 9.3.4(react-dom@18.2.0)(react@18.2.0) + rc-drawer: 6.5.2(react-dom@18.2.0)(react@18.2.0) + rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-field-form: 1.40.0(react-dom@18.2.0)(react@18.2.0) + rc-image: 7.3.2(react-dom@18.2.0)(react@18.2.0) + rc-input: 1.3.6(react-dom@18.2.0)(react@18.2.0) + rc-input-number: 8.4.0(react-dom@18.2.0)(react@18.2.0) + rc-mentions: 2.9.1(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.12.2(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-notification: 5.3.0(react-dom@18.2.0)(react@18.2.0) + rc-pagination: 3.7.0(react-dom@18.2.0)(react@18.2.0) + rc-picker: 3.14.6(dayjs@1.11.7)(react-dom@18.2.0)(react@18.2.0) + rc-progress: 3.5.1(react-dom@18.2.0)(react@18.2.0) + rc-rate: 2.12.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) + rc-segmented: 2.2.2(react-dom@18.2.0)(react@18.2.0) + rc-select: 14.10.0(react-dom@18.2.0)(react@18.2.0) + rc-slider: 10.4.0(react-dom@18.2.0)(react@18.2.0) + rc-steps: 6.0.1(react-dom@18.2.0)(react@18.2.0) + rc-switch: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-table: 7.36.0 + rc-tabs: 12.13.1(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 1.5.3(react-dom@18.2.0)(react@18.2.0) + rc-tooltip: 6.1.2(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) + rc-tree-select: 5.15.0(react-dom@18.2.0)(react@18.2.0) + rc-upload: 4.3.5(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) + scroll-into-view-if-needed: 3.1.0 + throttle-debounce: 5.0.0 + transitivePeerDependencies: + - date-fns + - luxon + - moment + dev: false /anymatch@1.3.2: resolution: {integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==} @@ -6173,7 +6288,6 @@ packages: es-abstract: 1.21.0 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 - dev: true /array.prototype.tosorted@1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} @@ -6183,7 +6297,6 @@ packages: es-abstract: 1.21.0 es-shim-unscopables: 1.0.0 get-intrinsic: 1.1.3 - dev: true /arraybuffer.prototype.slice@1.0.2: resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} @@ -6268,7 +6381,6 @@ packages: resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} dependencies: has-symbols: 1.0.3 - dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -6396,17 +6508,17 @@ packages: transitivePeerDependencies: - supports-color - /babel-jest@28.1.3(@babel/core@7.23.2): - resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /babel-jest@29.7.0(@babel/core@7.23.2): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.23.2 - '@jest/transform': 28.1.3 + '@jest/transform': 29.7.0 '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3(@babel/core@7.23.2) + babel-preset-jest: 29.6.3(@babel/core@7.23.2) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -6460,9 +6572,9 @@ packages: '@types/babel__core': 7.20.2 '@types/babel__traverse': 7.18.3 - /babel-plugin-jest-hoist@28.1.3: - resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.0 @@ -6470,22 +6582,6 @@ packages: '@types/babel__traverse': 7.18.3 dev: false - /babel-plugin-styled-components@2.0.7: - resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} - peerDependencies: - styled-components: '>= 2' - dependencies: - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - babel-plugin-syntax-jsx: 6.18.0 - lodash: 4.17.21 - picomatch: 2.3.1 - dev: false - - /babel-plugin-syntax-jsx@6.18.0: - resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} - dev: false - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -6526,14 +6622,14 @@ packages: babel-plugin-jest-hoist: 26.6.2 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) - /babel-preset-jest@28.1.3(@babel/core@7.23.2): - resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /babel-preset-jest@29.6.3(@babel/core@7.23.2): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.23.2 - babel-plugin-jest-hoist: 28.1.3 + babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) dev: false @@ -6580,7 +6676,6 @@ packages: /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} - dev: true /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -6678,7 +6773,6 @@ packages: engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.51 - dev: true /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -6884,7 +6978,6 @@ packages: engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 - dev: true /bundlesize@0.18.1: resolution: {integrity: sha512-NAsKBH6BeVmDopoa4tod0m5/koM7iLY3saKyGn7wyAravBYmKNUpDJba4zyVhwRm5Dw9WXv8FIO0N//tCkx68Q==} @@ -7363,6 +7456,15 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + /coa@2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + dependencies: + '@types/q': 1.5.8 + chalk: 2.4.2 + q: 1.5.1 + dev: false + /code-point-at@1.1.0: resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} engines: {node: '>=0.10.0'} @@ -7436,6 +7538,20 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -7675,17 +7791,16 @@ packages: requiresBuild: true dev: true - /core-js@3.22.4: - resolution: {integrity: sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: false - /core-js@3.27.1: resolution: {integrity: sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==} requiresBuild: true dev: true + /core-js@3.28.0: + resolution: {integrity: sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==} + requiresBuild: true + dev: false + /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -7937,6 +8052,19 @@ packages: postcss: 8.4.31 dev: false + /css-select-base-adapter@0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + dev: false + + /css-select@2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + dev: false + /css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} dependencies: @@ -7946,6 +8074,14 @@ packages: domutils: 2.8.0 nth-check: 2.1.1 + /css-tree@1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + dev: false + /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} @@ -7960,6 +8096,11 @@ packages: mdn-data: 2.0.30 source-map-js: 1.0.2 + /css-what@3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + dev: false + /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -7973,6 +8114,14 @@ packages: urix: 0.1.0 dev: true + /css@3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + dev: false + /cssdb@6.6.3: resolution: {integrity: sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==} dev: false @@ -8085,10 +8234,6 @@ packages: /d3-color@1.4.1: resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==} - - /d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} dev: false /d3-dsv@1.2.0: @@ -8100,8 +8245,14 @@ packages: rw: 1.3.3 dev: true - /d3-ease@1.0.7: - resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} + /d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 dev: false /d3-ease@3.0.1: @@ -8115,13 +8266,6 @@ packages: d3-color: 1.4.1 dev: false - /d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - dependencies: - d3-color: 3.1.0 - dev: false - /d3-timer@1.0.10: resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} dev: false @@ -8141,6 +8285,11 @@ packages: dependencies: assert-plus: 1.0.0 + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + /data-urls@1.1.0: resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} dependencies: @@ -8165,17 +8314,11 @@ packages: mimer: 1.1.0 dev: false - /date-fns@2.29.3: - resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} - engines: {node: '>=0.11'} - dev: false - /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: '@babel/runtime': 7.23.2 - dev: true /dayjs@1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} @@ -8296,17 +8439,29 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + /deep-rename-keys@0.2.1: + resolution: {integrity: sha512-RHd9ABw4Fvk+gYDWqwOftG849x0bYOySl/RgX0tLI9i27ZIeSO91mLZJEp7oPHOMFqHvpgu21YptmDt0FYD/0A==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + rename-keys: 1.2.0 + dev: false + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false + /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 - dev: true /default-browser@4.0.0: resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} @@ -8316,7 +8471,6 @@ packages: default-browser-id: 3.0.0 execa: 7.2.0 titleize: 3.0.0 - dev: true /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -8343,7 +8497,6 @@ packages: /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - dev: true /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} @@ -8402,13 +8555,9 @@ packages: minimalistic-assert: 1.0.1 dev: false - /detect-browser@5.3.0: - resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} - dev: false - - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} + /detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} dev: false /detect-libc@1.0.3: @@ -8425,6 +8574,11 @@ packages: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} + /detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} requiresBuild: true @@ -8461,10 +8615,6 @@ packages: dependencies: path-type: 4.0.0 - /discontinuous-range@1.0.0: - resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} - dev: false - /docsearch.js@2.6.3: resolution: {integrity: sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==} deprecated: This package has been deprecated and is no longer maintained. Please use @docsearch/js. @@ -8509,6 +8659,13 @@ packages: resolution: {integrity: sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==} dev: true + /dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: false + /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: @@ -8516,6 +8673,14 @@ packages: domhandler: 4.3.1 entities: 2.2.0 + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.4.0 + dev: false + /dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} dev: false @@ -8525,6 +8690,10 @@ packages: engines: {node: '>=0.4', npm: '>=1.2'} dev: false + /domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: false + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -8546,6 +8715,20 @@ packages: dependencies: domelementtype: 2.3.0 + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: false + /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -8553,6 +8736,14 @@ packages: domelementtype: 2.3.0 domhandler: 4.3.1 + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -8578,86 +8769,93 @@ packages: engines: {node: '>=12'} dev: true - /dumi-afx-deps@1.0.0-alpha.8: - resolution: {integrity: sha512-p1MEVM3hV8ypx1CZA4yfTeQIBmJ0wXBfj4LAYvZi7J6UjGruxOC8bZcHMtdwlnUZfo2S/LN0OcwHYQ6OENN52Q==} + /dumi-afx-deps@1.0.0-alpha.20: + resolution: {integrity: sha512-PRSJlHuJkyHDET7Hukykx/hLULkgUBX5q2CutMG5EDI3eJLzJlX634wNll10m3at1uomcDAVudL7Dgh5UOJ7IQ==} dev: false /dumi-assets-types@2.0.0-alpha.0: resolution: {integrity: sha512-a/Y5lf0G6gwsEQ9hop/n03CcjmHsGBk384Cz/AEX6mRYrfSpUx/lQvP9HLoXkCzScl9PL1sSmLPnMkgaXDCZLA==} dev: false - /dumi@2.1.1(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(postcss@8.4.31)(prettier@3.0.3)(rollup@4.1.5)(stylelint@15.11.0)(typescript@5.2.2): - resolution: {integrity: sha512-floBBYhvu2Q16V/vGSxUarWtIQnlExD3pWQGLPe2/NWL6GIB5xYnBwlga9kJPJVKsYsIaQ9VpbxzRjILYQm0mQ==} + /dumi@2.2.14(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(prettier@3.0.3)(rollup@4.1.5)(stylelint@15.11.0)(typescript@5.2.2): + resolution: {integrity: sha512-RM2T5kJvYhOsp0lOwlIUxXtY8YLWKpq2HAQeVUZJj20xqn2UXQuohpAxQhxKvTtzE+k0WE8mEzVShIM/3cW6YA==} hasBin: true peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@ant-design/icons-svg': 4.2.1 + '@ant-design/icons-svg': 4.3.1 '@makotot/ghostui': 2.0.0 - '@stackblitz/sdk': 1.8.1 - '@swc/core': 1.3.95 - '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - '@umijs/bundler-utils': 4.0.42 - '@umijs/core': 4.0.42 + '@stackblitz/sdk': 1.9.0 + '@swc/core': 1.3.72 + '@types/hast': 2.3.8 + '@types/mdast': 3.0.15 + '@umijs/bundler-utils': 4.0.88 + '@umijs/core': 4.0.88 + '@umijs/utils': 4.0.88 animated-scroll-to: 2.3.0 classnames: 2.3.2 codesandbox: 2.2.3 - deepmerge: 4.2.2 - dumi-afx-deps: 1.0.0-alpha.8 + copy-to-clipboard: 3.3.3 + deepmerge: 4.3.1 + dumi-afx-deps: 1.0.0-alpha.20 dumi-assets-types: 2.0.0-alpha.0 - enhanced-resolve: 5.12.0 - estree-util-to-js: 1.1.0 - estree-util-visit: 1.2.0 - file-system-cache: 2.0.1 + enhanced-resolve: 5.15.0 + estree-util-to-js: 1.2.0 + estree-util-visit: 1.2.1 + file-system-cache: 2.4.4 github-slugger: 1.5.0 hast-util-is-element: 2.1.3 - hast-util-raw: 7.2.3 - hast-util-to-estree: 2.1.0 + hast-util-raw: 8.0.0 + hast-util-to-estree: 2.3.3 hast-util-to-string: 2.0.0 - heti: 0.9.2 - html-to-text: 8.2.1 + heti: 0.9.4 + hosted-git-info: 6.1.1 + html-to-text: 9.0.5 + html2sketch: 1.0.2 js-yaml: 4.1.0 lodash.throttle: 4.1.1 - mdast-util-to-string: 3.1.0 + mdast-util-find-and-replace: 2.2.2 + mdast-util-to-string: 3.2.0 + nprogress: 0.2.0 pluralize: 8.0.0 prism-react-renderer: 1.3.5 prism-themes: 1.9.0 prismjs: 1.29.0 raw-loader: 4.0.2 - rc-tabs: 12.1.0-alpha.1 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-tabs: 12.13.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) react-copy-to-clipboard: 5.1.0 - react-error-boundary: 3.1.4(react@18.2.0) - react-intl: 6.2.5(typescript@5.2.2) + react-error-boundary: 4.0.11 + react-intl: 6.5.5(typescript@5.2.2) rehype-autolink-headings: 6.1.1 rehype-remove-comments: 5.0.0 rehype-stringify: 9.0.3 - remark-breaks: 3.0.2 remark-directive: 2.0.1 remark-frontmatter: 4.0.1 remark-gfm: 3.0.1 - remark-parse: 10.0.1 + remark-parse: 10.0.2 remark-rehype: 10.1.0 - sass: 1.57.1 + sass: 1.69.5 sitemap: 7.1.1 - umi: 4.0.42(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(postcss@8.4.31)(prettier@3.0.3)(rollup@4.1.5)(sass@1.57.1)(stylelint@15.11.0)(typescript@5.2.2) + umi: 4.0.88(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(prettier@3.0.3)(rollup@4.1.5)(sass@1.69.5)(stylelint@15.11.0)(typescript@5.2.2) unified: 10.1.2 - unist-util-visit: 4.1.1 - unist-util-visit-parents: 5.1.1 - url: 0.11.0 + unist-util-visit: 4.1.2 + unist-util-visit-parents: 5.1.3 + url: 0.11.3 v8-compile-cache: 2.3.0 - vfile: 5.3.6 + vfile: 5.3.7 transitivePeerDependencies: - '@babel/core' - '@swc/helpers' - '@types/node' - '@types/react' - '@types/webpack' - - encoding + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' - eslint - jest - - postcss - postcss-html - postcss-jsx - postcss-less @@ -8666,7 +8864,6 @@ packages: - prettier - rollup - sockjs-client - - styled-components - stylelint - stylus - sugarss @@ -8674,7 +8871,6 @@ packages: - terser - type-fest - typescript - - vue-template-compiler - webpack - webpack-dev-server - webpack-hot-middleware @@ -8823,8 +9019,8 @@ packages: dependencies: once: 1.4.0 - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.10 @@ -8995,7 +9191,6 @@ packages: /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: true /es-get-iterator@1.1.2: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} @@ -9026,7 +9221,6 @@ packages: internal-slot: 1.0.5 iterator.prototype: 1.1.2 safe-array-concat: 1.0.1 - dev: true /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -9049,8 +9243,8 @@ packages: is-date-object: 1.0.5 is-symbol: 1.0.4 - /es5-imcompatible-versions@0.1.77: - resolution: {integrity: sha512-PYCZ6CvLzvVOPK4Lgja32PhWUoEJkQ1mWep0xuGtvVzmRAHq2xWHUuQ+jUXsIIAHo6c3Kh+n0z4rKCgBd4CrXA==} + /es5-imcompatible-versions@0.1.88: + resolution: {integrity: sha512-GDJTmDGd65qyDk9fGClO+MOUgHuBuGMCL6EawvLH8Ob+HN8ui1OJwa4fEK0qh3fg2ieT2/pdZj41yrxnmOrK8w==} dev: false /es6-error@4.1.1: @@ -9078,15 +9272,6 @@ packages: dev: true optional: true - /esbuild-android-64@0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - /esbuild-android-arm64@0.14.54: resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} engines: {node: '>=12'} @@ -9096,15 +9281,6 @@ packages: dev: true optional: true - /esbuild-android-arm64@0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - /esbuild-darwin-64@0.14.54: resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} engines: {node: '>=12'} @@ -9114,15 +9290,6 @@ packages: dev: true optional: true - /esbuild-darwin-64@0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - /esbuild-darwin-arm64@0.14.54: resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} engines: {node: '>=12'} @@ -9132,15 +9299,6 @@ packages: dev: true optional: true - /esbuild-darwin-arm64@0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - /esbuild-freebsd-64@0.14.54: resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} engines: {node: '>=12'} @@ -9150,15 +9308,6 @@ packages: dev: true optional: true - /esbuild-freebsd-64@0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - /esbuild-freebsd-arm64@0.14.54: resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} engines: {node: '>=12'} @@ -9168,15 +9317,6 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64@0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-32@0.14.54: resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} engines: {node: '>=12'} @@ -9186,15 +9326,6 @@ packages: dev: true optional: true - /esbuild-linux-32@0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-64@0.14.54: resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} engines: {node: '>=12'} @@ -9204,15 +9335,6 @@ packages: dev: true optional: true - /esbuild-linux-64@0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-arm64@0.14.54: resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} engines: {node: '>=12'} @@ -9222,15 +9344,6 @@ packages: dev: true optional: true - /esbuild-linux-arm64@0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-arm@0.14.54: resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} engines: {node: '>=12'} @@ -9240,15 +9353,6 @@ packages: dev: true optional: true - /esbuild-linux-arm@0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-mips64le@0.14.54: resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} engines: {node: '>=12'} @@ -9258,15 +9362,6 @@ packages: dev: true optional: true - /esbuild-linux-mips64le@0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-ppc64le@0.14.54: resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} engines: {node: '>=12'} @@ -9276,15 +9371,6 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le@0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-riscv64@0.14.54: resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} engines: {node: '>=12'} @@ -9294,15 +9380,6 @@ packages: dev: true optional: true - /esbuild-linux-riscv64@0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-linux-s390x@0.14.54: resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} engines: {node: '>=12'} @@ -9312,15 +9389,6 @@ packages: dev: true optional: true - /esbuild-linux-s390x@0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - /esbuild-netbsd-64@0.14.54: resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} engines: {node: '>=12'} @@ -9330,15 +9398,6 @@ packages: dev: true optional: true - /esbuild-netbsd-64@0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - /esbuild-openbsd-64@0.14.54: resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} engines: {node: '>=12'} @@ -9348,15 +9407,6 @@ packages: dev: true optional: true - /esbuild-openbsd-64@0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - /esbuild-sunos-64@0.14.54: resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} engines: {node: '>=12'} @@ -9366,15 +9416,6 @@ packages: dev: true optional: true - /esbuild-sunos-64@0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - /esbuild-windows-32@0.14.54: resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} engines: {node: '>=12'} @@ -9384,15 +9425,6 @@ packages: dev: true optional: true - /esbuild-windows-32@0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - /esbuild-windows-64@0.14.54: resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} engines: {node: '>=12'} @@ -9402,15 +9434,6 @@ packages: dev: true optional: true - /esbuild-windows-64@0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /esbuild-windows-arm64@0.14.54: resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} engines: {node: '>=12'} @@ -9420,15 +9443,6 @@ packages: dev: true optional: true - /esbuild-windows-arm64@0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /esbuild@0.14.54: resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} engines: {node: '>=12'} @@ -9458,34 +9472,34 @@ packages: esbuild-windows-arm64: 0.14.54 dev: true - /esbuild@0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 dev: false /esbuild@0.18.20: @@ -9516,7 +9530,6 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - dev: true /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -9670,12 +9683,12 @@ packages: - supports-color dev: true - /eslint-plugin-jest@26.1.5(@typescript-eslint/eslint-plugin@5.36.1)(eslint@8.52.0)(jest@26.6.3)(typescript@5.2.2): - resolution: {integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.52.0)(jest@26.6.3)(typescript@5.2.2): + resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 + eslint: ^7.0.0 || ^8.0.0 jest: '*' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': @@ -9683,7 +9696,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.36.1(@typescript-eslint/parser@5.36.1)(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.52.0)(typescript@5.2.2) '@typescript-eslint/utils': 5.48.0(eslint@8.52.0)(typescript@5.2.2) eslint: 8.52.0 jest: 26.6.3 @@ -9781,15 +9794,6 @@ packages: synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks@4.5.0(eslint@8.52.0): - resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.52.0 - dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.52.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -9797,30 +9801,6 @@ packages: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.52.0 - dev: true - - /eslint-plugin-react@7.29.4(eslint@8.52.0): - resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - doctrine: 2.1.0 - eslint: 8.52.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.1 - string.prototype.matchall: 4.0.8 - dev: false /eslint-plugin-react@7.33.2(eslint@8.52.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} @@ -9845,7 +9825,6 @@ packages: resolve: 2.0.0-next.4 semver: 6.3.1 string.prototype.matchall: 4.0.8 - dev: true /eslint-plugin-vue@9.17.0(eslint@8.52.0): resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} @@ -9985,16 +9964,16 @@ packages: resolution: {integrity: sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==} dev: false - /estree-util-to-js@1.1.0: - resolution: {integrity: sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==} + /estree-util-to-js@1.2.0: + resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} dependencies: '@types/estree-jsx': 1.0.0 astring: 1.8.4 source-map: 0.7.4 dev: false - /estree-util-visit@1.2.0: - resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} + /estree-util-visit@1.2.1: + resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} dependencies: '@types/estree-jsx': 1.0.0 '@types/unist': 2.0.6 @@ -10016,12 +9995,16 @@ packages: engines: {node: '>=6'} dev: true + /eventemitter3@2.0.3: + resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} + dev: false + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true /events@1.1.1: resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} @@ -10122,7 +10105,6 @@ packages: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 - dev: true /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} @@ -10284,6 +10266,17 @@ packages: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: false + /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -10347,6 +10340,14 @@ packages: pend: 1.2.0 dev: true + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + /figures@2.0.0: resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} engines: {node: '>=4'} @@ -10385,11 +10386,13 @@ packages: engines: {node: '>=0.10.0'} dev: false - /file-system-cache@2.0.1: - resolution: {integrity: sha512-ypttSkXKUUEOSNU7qxmtlN/3wiFihpFdH9c7YZ/bYYepNN/+2moCI4TXIFpFWslRAb/Bzl0vyfTvYcHLqqpxfA==} + /file-system-cache@2.4.4: + resolution: {integrity: sha512-vCYhn8pb5nlC3Gs2FFCOkmf4NEg2Ym3ulJwkmS9o6p9oRShGj6CwTMFvpgZihBlsh373NaM0XgAgDHXQIlS4LQ==} dependencies: - fs-extra: 10.1.0 - ramda: 0.28.0 + '@types/fs-extra': 11.0.1 + '@types/ramda': 0.29.3 + fs-extra: 11.1.1 + ramda: 0.29.0 dev: false /file-uri-to-path@1.0.0: @@ -10545,7 +10548,7 @@ packages: /flru@1.0.2: resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} engines: {node: '>=6'} - dev: true + dev: false /flush-write-stream@1.1.1: resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} @@ -10604,25 +10607,22 @@ packages: /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - /fork-ts-checker-webpack-plugin@7.2.4(typescript@5.2.2): - resolution: {integrity: sha512-wVN8w0aGiiF4/1o0N5VPeh+PCs4OMg8VzKiYc7Uw7e2VmTt8JuKjEc2/uvd/VfG0Ux+4WnxMncSRcZpXAS6Fyw==} + /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.2.2): + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: typescript: '>3.6.0' - vue-template-compiler: '*' webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true dependencies: '@babel/code-frame': 7.22.13 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.1.0 - deepmerge: 4.2.2 + deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.4.13 minimatch: 3.1.2 + node-abort-controller: 3.1.1 schema-utils: 3.1.1 semver: 7.5.4 tapable: 2.2.1 @@ -10650,6 +10650,13 @@ packages: engines: {node: '>=0.4.x'} dev: false + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false @@ -10697,6 +10704,15 @@ packages: universalify: 2.0.0 dev: true + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs-extra@3.0.1: resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} dependencies: @@ -10757,6 +10773,14 @@ packages: requiresBuild: true optional: true + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -10782,10 +10806,6 @@ packages: es-abstract: 1.22.2 functions-have-names: 1.2.3 - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: false - /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} @@ -10905,8 +10925,10 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.3 - /get-tsconfig@4.3.0: - resolution: {integrity: sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==} + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 dev: false /get-value@2.0.6: @@ -10945,8 +10967,8 @@ packages: homedir-polyfill: 1.0.3 dev: false - /git-hooks-list@1.0.3: - resolution: {integrity: sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==} + /git-hooks-list@3.1.0: + resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} dev: false /git-log-parser@1.2.0: @@ -11007,6 +11029,7 @@ packages: /gl-matrix@3.4.3: resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + dev: false /glob-base@0.3.0: resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} @@ -11160,20 +11183,6 @@ packages: dependencies: define-properties: 1.1.4 - /globby@10.0.0: - resolution: {integrity: sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==} - engines: {node: '>=8'} - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.1 - glob: 7.2.3 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -11194,7 +11203,6 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 - dev: true /globby@6.1.0: resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} @@ -11500,7 +11508,7 @@ packages: /hast-util-heading-rank@2.1.0: resolution: {integrity: sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==} dependencies: - '@types/hast': 2.3.4 + '@types/hast': 2.3.8 dev: false /hast-util-is-body-ok-link@2.0.0: @@ -11514,7 +11522,7 @@ packages: /hast-util-is-conditional-comment@2.0.0: resolution: {integrity: sha512-U66gW8ZWQdxP4ZjTEZ3xZT72y6rIKJqV4At5QmC1ItBbQyZyVkuTp8QkQwhxsbkHdzpifiZdQWrDipc9ByqhRg==} dependencies: - '@types/hast': 2.3.4 + '@types/hast': 2.3.8 dev: false /hast-util-is-element@2.1.3: @@ -11553,12 +11561,29 @@ packages: web-namespaces: 2.0.1 zwitch: 2.0.4 - /hast-util-to-estree@2.1.0: - resolution: {integrity: sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==} + /hast-util-raw@8.0.0: + resolution: {integrity: sha512-bKbaUxMNLjZMMowgcrc4l3aQSPiMLiceZD+mp+AKF8Si0mtyR2DYVdxzS2XBxXYDeW/VvfZy40lNxHRiY6MMTg==} + dependencies: + '@types/hast': 2.3.8 + extend: 3.0.2 + hast-util-from-parse5: 7.1.0 + hast-util-to-parse5: 7.0.0 + html-void-elements: 2.0.1 + mdast-util-to-hast: 12.2.5 + parse5: 7.1.2 + unist-util-position: 4.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-estree@2.3.3: + resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} dependencies: '@types/estree': 1.0.0 '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 + '@types/hast': 2.3.8 '@types/unist': 2.0.6 comma-separated-tokens: 2.0.3 estree-util-attach-comments: 2.1.0 @@ -11568,7 +11593,7 @@ packages: mdast-util-mdxjs-esm: 1.3.0 property-information: 6.2.0 space-separated-tokens: 2.0.2 - style-to-object: 0.3.0 + style-to-object: 0.4.4 unist-util-position: 4.0.3 zwitch: 2.0.4 transitivePeerDependencies: @@ -11623,7 +11648,7 @@ packages: /hast-util-to-string@2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} dependencies: - '@types/hast': 2.3.4 + '@types/hast': 2.3.8 dev: false /hast-util-to-text@3.1.2: @@ -11638,6 +11663,11 @@ packages: /hast-util-whitespace@2.0.1: resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + /hast@1.0.0: + resolution: {integrity: sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==} + deprecated: Renamed to rehype + dev: false + /hastscript@7.2.0: resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: @@ -11655,8 +11685,8 @@ packages: resolution: {integrity: sha512-GFZjqU8LAdu1uR72GqrReI+lzNLMlcWtvdz1TKNJiofyo1mfTecFYSZEoEbcLcRMl+KwEldnNQoS4BwO8wtg0A==} dev: false - /heti@0.9.2: - resolution: {integrity: sha512-dgJqK/O3qRf4o9ZTL3bE2+7/cLYVNUoDahXYHQkV4opG8q3GwO7f5pkO9f2Yq6/rT0heiEibOps3DMqfad+sVw==} + /heti@0.9.4: + resolution: {integrity: sha512-DI1A/R6VabM8wulXrGVbeHZNZ8jJUm+Pwn+PEYZcNBxAO+4mXWPEX+Xu9R/YrHETGcevNrLO34m/99ZCnFnlhw==} dependencies: heti-findandreplacedomtext: 0.5.0 dev: false @@ -11710,6 +11740,13 @@ packages: dependencies: lru-cache: 6.0.0 + /hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + lru-cache: 7.18.3 + dev: false + /hosted-git-info@7.0.1: resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -11772,17 +11809,15 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} - /html-to-text@8.2.1: - resolution: {integrity: sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==} - engines: {node: '>=10.23.2'} - hasBin: true + /html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} dependencies: - '@selderee/plugin-htmlparser2': 0.6.0 - deepmerge: 4.2.2 - he: 1.2.0 - htmlparser2: 6.1.0 - minimist: 1.2.7 - selderee: 0.6.0 + '@selderee/plugin-htmlparser2': 0.11.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.11.0 dev: false /html-void-elements@2.0.1: @@ -11805,6 +11840,20 @@ packages: resolution: {integrity: sha512-SQdIvTTtnHAx72xGUIUudvVOCjeWvV1U7rvSFnNGxTGRw3ZC7RES4Gw6dm1nMYD60TXvm6zjk/bWqgNc5pjQaw==} dev: true + /html2sketch@1.0.2: + resolution: {integrity: sha512-/P9NcVH9yBhrOkcnaFkAbWJifDO8Ii+CTIxy9gE6trSQvo2OH++TKQIP5MICEoWvgXpVhZ6botj7P63Krl1/gg==} + engines: {node: '>=14.0.0'} + dependencies: + '@sketch-hq/sketch-file-format-ts': 6.5.0 + color: 3.2.1 + css: 3.0.0 + svg-pathdata: 5.0.5 + svgo-browser: 1.3.8 + svgson: 4.1.0 + transformation-matrix: 2.15.0 + uuid: 8.3.2 + dev: false + /htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} dependencies: @@ -11814,6 +11863,15 @@ packages: entities: 2.2.0 dev: false + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.4.0 + dev: false + /http-cache-semantics@3.8.1: resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} dev: false @@ -11919,7 +11977,6 @@ packages: /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} - dev: true /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -12201,12 +12258,12 @@ packages: resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} dev: false - /intl-messageformat@10.2.5: - resolution: {integrity: sha512-AievYMN6WLLHwBeCTv4aRKG+w3ZNyZtkObwgsKk3Q7GNTq8zDRvDbJSBQkb2OPeVCcAKcIXvak9FF/bRNavoww==} + /intl-messageformat@10.5.8: + resolution: {integrity: sha512-NRf0jpBWV0vd671G5b06wNofAN8tp7WWDogMZyaU8GUAsmbouyvgwmFJI7zLjfAMpm3zK+vSwRP3jzaoIcMbaA==} dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/fast-memoize': 1.2.7 - '@formatjs/icu-messageformat-parser': 2.1.14 + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.3 tslib: 2.6.2 dev: false @@ -12272,6 +12329,10 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-arrow-function@2.0.3: resolution: {integrity: sha512-iDStzcT1FJMzx+TjCOK//uDugSe/Mif/8a+T0htydQ3qkJGvSweTZpVYz4hpJH0baloSPiAFQdA8WslAgJphvQ==} engines: {node: '>= 0.4'} @@ -12409,7 +12470,6 @@ packages: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true - dev: true /is-dotfile@1.0.3: resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} @@ -12443,7 +12503,7 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 isarray: 2.0.5 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object.entries: 1.1.6 object.getprototypeof: 1.0.4 which-boxed-primitive: 1.0.2 @@ -12533,7 +12593,6 @@ packages: hasBin: true dependencies: is-docker: 3.0.0 - dev: true /is-installed-globally@0.1.0: resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} @@ -12622,11 +12681,6 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -12705,7 +12759,6 @@ packages: /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -12820,13 +12873,11 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - /isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + /isomorphic-unfetch@4.0.2: + resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} dependencies: - node-fetch: 2.6.7 - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding + node-fetch: 3.3.2 + unfetch: 5.0.0 dev: false /isstream@0.1.2: @@ -12932,7 +12983,6 @@ packages: has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 - dev: true /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} @@ -13256,19 +13306,19 @@ packages: transitivePeerDependencies: - supports-color - /jest-haste-map@28.1.3: - resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 28.1.3 + '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 '@types/node': 20.8.9 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - jest-worker: 28.1.3 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: @@ -13470,9 +13520,9 @@ packages: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} - /jest-regex-util@28.0.2: - resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: false /jest-resolve-dependencies@26.6.3: @@ -13735,11 +13785,11 @@ packages: is-ci: 2.0.0 micromatch: 4.0.5 - /jest-util@28.1.3: - resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 28.1.3 + '@jest/types': 29.6.3 '@types/node': 20.8.9 chalk: 4.1.2 ci-info: 3.7.1 @@ -13798,20 +13848,22 @@ packages: merge-stream: 2.0.0 supports-color: 7.2.0 - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + /jest-worker@29.4.3: + resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 20.8.9 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest-worker@28.1.3: - resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 20.8.9 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false @@ -13977,6 +14029,11 @@ packages: - supports-color - utf-8-validate + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: false + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -14170,13 +14227,23 @@ packages: engines: {node: '>=0.10.0'} dev: false + /leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + dev: false + /left-pad@1.3.0: resolution: {integrity: sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==} deprecated: use String.prototype.padStart() dev: true - /less@4.1.2: - resolution: {integrity: sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==} + /less-plugin-resolve@1.0.0: + resolution: {integrity: sha512-offjRh1TfGsTgK0cqpl+RXFB0TFL6rPWy0yhCLhqhSEdWGVQp28K7wZ/ceUrRmWfZ5CSckYMe/KI+ViwaPLljQ==} + dependencies: + enhanced-resolve: 5.15.0 + dev: false + + /less@4.1.3: + resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} engines: {node: '>=6'} hasBin: true dependencies: @@ -14189,7 +14256,7 @@ packages: image-size: 0.5.5 make-dir: 2.1.0 mime: 1.6.0 - needle: 2.9.1 + needle: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -14233,6 +14300,98 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 + /lightningcss-darwin-arm64@1.19.0: + resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /lightningcss-darwin-x64@1.19.0: + resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-arm-gnueabihf@1.19.0: + resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-arm64-gnu@1.19.0: + resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-arm64-musl@1.19.0: + resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-x64-gnu@1.19.0: + resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-x64-musl@1.19.0: + resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: false + optional: true + + /lightningcss-win32-x64-msvc@1.19.0: + resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /lightningcss@1.19.0: + resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.19.0 + lightningcss-darwin-x64: 1.19.0 + lightningcss-linux-arm-gnueabihf: 1.19.0 + lightningcss-linux-arm64-gnu: 1.19.0 + lightningcss-linux-arm64-musl: 1.19.0 + lightningcss-linux-x64-gnu: 1.19.0 + lightningcss-linux-x64-musl: 1.19.0 + lightningcss-win32-x64-msvc: 1.19.0 + dev: false + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -14532,23 +14691,14 @@ packages: dependencies: yallist: 4.0.0 - /lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - /magic-string@0.26.2: - resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 dev: false - /magic-string@0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - dev: false + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true /magic-string@0.30.4: resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} @@ -14747,12 +14897,12 @@ packages: /mdast-util-directive@2.2.2: resolution: {integrity: sha512-6BuW4dFkCbTIf9peVMXdtWylI6ovMidVjnHyJpx7IDhwk3GosIgUs87Rl3x6T6kP5iAf1qIE3lMn6CgWw40d+g==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 '@types/unist': 2.0.6 mdast-util-to-markdown: 1.5.0 parse-entities: 4.0.0 stringify-entities: 4.0.3 - unist-util-visit-parents: 5.1.1 + unist-util-visit-parents: 5.1.3 dev: false /mdast-util-find-and-replace@2.2.1: @@ -14762,6 +14912,15 @@ packages: unist-util-is: 5.1.1 unist-util-visit-parents: 5.1.1 + /mdast-util-find-and-replace@2.2.2: + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + dependencies: + '@types/mdast': 3.0.15 + escape-string-regexp: 5.0.0 + unist-util-is: 5.1.1 + unist-util-visit-parents: 5.1.3 + dev: false + /mdast-util-from-markdown@1.2.0: resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} dependencies: @@ -14840,8 +14999,8 @@ packages: resolution: {integrity: sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==} dependencies: '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 + '@types/hast': 2.3.8 + '@types/mdast': 3.0.15 mdast-util-from-markdown: 1.2.0 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: @@ -14852,8 +15011,8 @@ packages: resolution: {integrity: sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==} dependencies: '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 + '@types/hast': 2.3.8 + '@types/mdast': 3.0.15 mdast-util-from-markdown: 1.2.0 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: @@ -14894,12 +15053,22 @@ packages: /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + dependencies: + '@types/mdast': 3.0.15 + dev: false + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + /mdn-data@2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + dev: false + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true @@ -15307,7 +15476,6 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - dev: true /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} @@ -15448,10 +15616,6 @@ packages: resolution: {integrity: sha512-5iylzSJevCnzJn9UVsW8yOZ3yHjmAs4TfvH3zsbftKiFKmHG0xirGN6DK9Kk04VSWxYCZZAIafYJoNJJMAU1KA==} dev: false - /moo@0.5.2: - resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} - dev: false - /move-concurrently@1.0.1: resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} dependencies: @@ -15515,12 +15679,6 @@ packages: resolution: {integrity: sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==} dev: false - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -15552,32 +15710,12 @@ packages: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} dev: true - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - /nearley@2.20.1: - resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} - hasBin: true - dependencies: - commander: 2.20.3 - moo: 0.5.2 - railroad-diagrams: 1.0.0 - randexp: 0.4.6 + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: false - /needle@2.9.1: - resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} - engines: {node: '>= 4.4.x'} - hasBin: true - requiresBuild: true - dependencies: - debug: 3.2.7 - iconv-lite: 0.4.24 - sax: 1.2.4 - transitivePeerDependencies: - - supports-color - dev: false - optional: true + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} /needle@3.2.0: resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} @@ -15590,7 +15728,6 @@ packages: sax: 1.2.4 transitivePeerDependencies: - supports-color - dev: true optional: true /neo-async@2.6.2: @@ -15616,6 +15753,15 @@ packages: semver: 5.7.1 dev: true + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: false + + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + /node-emoji@2.1.0: resolution: {integrity: sha512-tcsBm9C6FmPN5Wo7OjFi9lgMyJjvkAeirmjR/ax8Ttfqy4N8PoFic26uqFTIgayHPNI5FH4ltUvfh9kHzwcK9A==} dependencies: @@ -15645,6 +15791,16 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: true + + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} @@ -15677,7 +15833,7 @@ packages: string_decoder: 1.3.0 timers-browserify: 2.0.12 tty-browserify: 0.0.0 - url: 0.11.0 + url: 0.11.3 util: 0.11.1 vm-browserify: 1.1.2 dev: false @@ -15832,7 +15988,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 - dev: true /npm@10.2.0: resolution: {integrity: sha512-Auyq6d4cfg/SY4URjZE2aePLOPzK4lUD+qyMxY/7HbxAvCnOCKtMlyLPcbLSOq9lhEGBZN800S1o+UmfjA5dTg==} @@ -15921,6 +16076,16 @@ packages: set-blocking: 2.0.0 dev: true + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nth-check@1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + dependencies: + boolbase: 1.0.0 + dev: false + /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -16020,7 +16185,6 @@ packages: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.21.0 - dev: true /object.getprototypeof@1.0.4: resolution: {integrity: sha512-xV/FkUNM9sHa56AB5deXrlIR+jBtDAHieyfm6XZUuehqlMX+YJPh8CAYtPrXGA/mFLFttasTc9ihhpkPrH7pLw==} @@ -16029,7 +16193,7 @@ packages: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 - reflect.getprototypeof: 1.0.3 + reflect.getprototypeof: 1.0.4 dev: false /object.groupby@1.0.1: @@ -16082,6 +16246,14 @@ packages: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: false + /omit-deep@0.3.0: + resolution: {integrity: sha512-Lbl/Ma59sss2b15DpnWnGmECBRL8cRl/PjPbPMVW+Y8zIQzRrwMaI65Oy6HvxyhYeILVKBJb2LWeG81bj5zbMg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + unset-value: 0.1.2 + dev: false + /on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} dev: false @@ -16109,7 +16281,6 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 - dev: true /open@6.4.0: resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} @@ -16134,7 +16305,6 @@ packages: define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 is-wsl: 2.2.0 - dev: true /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} @@ -16509,11 +16679,17 @@ packages: /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - /parseley@0.7.0: - resolution: {integrity: sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==} + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.4.0 + dev: false + + /parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} dependencies: - moo: 0.5.2 - nearley: 2.20.1 + leac: 0.6.0 + peberminta: 0.9.0 dev: false /pascal-case@3.1.2: @@ -16563,7 +16739,6 @@ packages: /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -16577,7 +16752,7 @@ packages: dev: true /path-to-regexp@1.7.0: - resolution: {integrity: sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=} + resolution: {integrity: sha512-nifX1uj4S9IrK/w3Xe7kKvNEepXivANs9ng60Iq7PU/BlouV3yL/VUhFqTuTq33ykwUqoNcTeGo5vdOBP4jS/Q==} dependencies: isarray: 0.0.1 dev: false @@ -16604,6 +16779,10 @@ packages: sha.js: 2.4.11 dev: false + /peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + dev: false + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true @@ -17542,18 +17721,25 @@ packages: fast-diff: 1.2.0 dev: true - /prettier-plugin-organize-imports@2.3.4(prettier@3.0.3)(typescript@5.2.2): - resolution: {integrity: sha512-R8o23sf5iVL/U71h9SFUdhdOEPsi3nm42FD/oDYIZ2PQa4TNWWuWecxln6jlIQzpZTDMUeO1NicJP6lLn2TtRw==} + /prettier-plugin-organize-imports@3.2.4(prettier@3.0.3)(typescript@5.2.2): + resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==} peerDependencies: + '@volar/vue-language-plugin-pug': ^1.0.4 + '@volar/vue-typescript': ^1.0.4 prettier: '>=2.0' typescript: '>=2.9' + peerDependenciesMeta: + '@volar/vue-language-plugin-pug': + optional: true + '@volar/vue-typescript': + optional: true dependencies: prettier: 3.0.3 typescript: 5.2.2 dev: false - /prettier-plugin-packagejson@2.3.0(prettier@3.0.3): - resolution: {integrity: sha512-2SAPMMk1UDkqsB7DifWKcwCm6VC52JXMrzLHfbcQHJRWhRCj9zziOy+s+2XOyPBeyqFqS+A/1IKzOrxKFTo6pw==} + /prettier-plugin-packagejson@2.4.3(prettier@3.0.3): + resolution: {integrity: sha512-kPeeviJiwy0BgOSk7No8NmzzXfW4R9FYWni6ziA5zc1kGVVrKnBzMZdu2TUhI+I7h8/5Htt3vARYOk7KKJTTNQ==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: @@ -17561,7 +17747,14 @@ packages: optional: true dependencies: prettier: 3.0.3 - sort-package-json: 1.57.0 + sort-package-json: 2.4.1 + synckit: 0.8.5 + dev: false + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true dev: false /prettier@3.0.3: @@ -17796,10 +17989,6 @@ packages: pump: 2.0.1 dev: false - /punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - dev: false - /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -17808,6 +17997,11 @@ packages: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} + /q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: false + /qrcode.react@3.1.0(react@18.2.0): resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} peerDependencies: @@ -17815,6 +18009,13 @@ packages: dependencies: react: 18.2.0 + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: false + /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} @@ -17834,12 +18035,6 @@ packages: engines: {node: '>=0.4.x'} dev: false - /querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: false - /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -17867,29 +18062,18 @@ packages: /quickselect@2.0.0: resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false /raf-schd@4.0.3: resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} dev: false - /railroad-diagrams@1.0.0: - resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} - dev: false - /ramda@0.25.0: resolution: {integrity: sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==} dev: true - /ramda@0.28.0: - resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} - dev: false - - /randexp@0.4.6: - resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} - engines: {node: '>=0.12'} - dependencies: - discontinuous-range: 1.0.0 - ret: 0.1.15 + /ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} dev: false /randomatic@3.1.1: @@ -17927,6 +18111,7 @@ packages: resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} dependencies: quickselect: 2.0.0 + dev: false /rc-align@4.0.15(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} @@ -18294,21 +18479,6 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /rc-menu@9.6.4: - resolution: {integrity: sha512-6DiNAjxjVIPLZXHffXxxcyE15d4isRL7iQ1ru4MqYDH2Cqc5bW96wZOdMydFtGLyDdnmEQ9jVvdCE9yliGvzkw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.2 - classnames: 2.3.2 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) - rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - shallowequal: 1.1.0 - dev: false - /rc-menu@9.8.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-179weouypfjWJSRvvoo/vPy+StojsMzK2XC5jRNhL1ryt/N/8wAFESte8K6jZJkNp9DHDLFTe+dCGmikKpiFuA==} peerDependencies: @@ -18326,19 +18496,6 @@ packages: shallowequal: 1.1.0 dev: false - /rc-motion@2.6.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.2 - classnames: 2.3.2 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-motion@2.9.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==} peerDependencies: @@ -18426,7 +18583,7 @@ packages: dependencies: '@babel/runtime': 7.23.2 classnames: 2.3.2 - date-fns: 2.29.3 + date-fns: 2.30.0 dayjs: 1.11.7 moment: 2.29.4 rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) @@ -18516,20 +18673,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /rc-resize-observer@1.2.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-g53PnWLeVOmt4XWkt2x+QlIdf/PhJSd7JqHhtMrUY370e7wJ+kxbgXicYqvENUcgFiiOiMCd07YsC2GNsoSbnA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.2 - classnames: 2.3.2 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - resize-observer-polyfill: 1.5.1 - dev: false - /rc-resize-observer@1.4.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==} peerDependencies: @@ -18716,21 +18859,21 @@ packages: rc-virtual-list: 3.11.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: true - /rc-tabs@12.1.0-alpha.1: - resolution: {integrity: sha512-M+B88WEnGSuE+mR54fpgPbZLAakzxa/H6FmEetLBl5WG4I3AcwSk9amuIPC/tu0KXBl+H6Bg5ZwrrEUOBUvgzg==} + /rc-table@7.36.0: + resolution: {integrity: sha512-3xVcdCC5OLeOOhaCg+5Lps2oPreM/GWXmUXWTSX4p6vF7F76ABM4dfPpMJ9Dnf5yGRyh+8pe7FRyhRVnWw2H/w==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.23.2 + '@rc-component/context': 1.4.0(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 - rc-dropdown: 4.0.1(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.6.4 - rc-motion: 2.6.2(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.2.1(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.11.3(react-dom@18.2.0)(react@18.2.0) dev: false /rc-tabs@12.13.1(react-dom@18.2.0)(react@18.2.0): @@ -18898,19 +19041,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /rc-upload@4.3.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.2 - classnames: 2.3.2 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-upload@4.3.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA==} peerDependencies: @@ -19027,6 +19157,14 @@ packages: '@babel/runtime': 7.23.2 react: 18.2.0 + /react-error-boundary@4.0.11: + resolution: {integrity: sha512-U13ul67aP5DOSPNSCWQ/eO0AQEYzEFkVljULQIjMV0KlffTAhxuDoBKdO0pb/JZ8mDhMKFZ9NZi0BmLGUiNphw==} + peerDependencies: + react: '>=16.13.1' + dependencies: + '@babel/runtime': 7.23.2 + dev: false + /react-error-overlay@6.0.9: resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} dev: false @@ -19068,24 +19206,24 @@ packages: react-side-effect: 2.1.2(react@18.2.0) dev: false - /react-intl@6.2.5(typescript@5.2.2): - resolution: {integrity: sha512-nz21POTKbE0sPEuEJU4o5YTZYY7VlIYCPNJaD6D2+xKyk6Noj6DoUK0LRO9LXuQNUuQ044IZl3m6ymzZRj8XFQ==} + /react-intl@6.5.5(typescript@5.2.2): + resolution: {integrity: sha512-cI5UKvBh4tc1zxLIziHBYGMX3dhYWDEFlvUDVN6NfT2i96zTXz/zH2AmM8+2waqgOhwkFUzd+7kK1G9q7fiC2g==} peerDependencies: react: ^16.6.0 || 17 || 18 - typescript: ^4.7 + typescript: '5' peerDependenciesMeta: typescript: optional: true dependencies: - '@formatjs/ecma402-abstract': 1.14.3 - '@formatjs/icu-messageformat-parser': 2.1.14 - '@formatjs/intl': 2.6.3(typescript@5.2.2) - '@formatjs/intl-displaynames': 6.2.3 - '@formatjs/intl-listformat': 7.1.7 + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/icu-messageformat-parser': 2.7.3 + '@formatjs/intl': 2.9.9(typescript@5.2.2) + '@formatjs/intl-displaynames': 6.6.4 + '@formatjs/intl-listformat': 7.5.3 '@types/hoist-non-react-statics': 3.3.1 '@types/react': 18.2.28 hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.2.5 + intl-messageformat: 10.5.8 tslib: 2.6.2 typescript: 5.2.2 dev: false @@ -19430,18 +19568,6 @@ packages: '@babel/runtime': 7.23.2 dev: false - /reflect.getprototypeof@1.0.3: - resolution: {integrity: sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - dev: false - /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -19452,10 +19578,9 @@ packages: get-intrinsic: 1.2.1 globalthis: 1.0.3 which-builtin-type: 1.1.3 - dev: true - /regenerate-unicode-properties@10.0.1: - resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -19472,10 +19597,6 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regenerator-runtime@0.13.9: - resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} - dev: false - /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} @@ -19509,9 +19630,16 @@ packages: define-properties: 1.2.1 set-function-name: 2.0.1 - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 dev: false /registry-auth-token@3.4.0: @@ -19535,16 +19663,23 @@ packages: rc: 1.2.8 dev: false + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: false + /rehype-autolink-headings@6.1.1: resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} dependencies: - '@types/hast': 2.3.4 + '@types/hast': 2.3.8 extend: 3.0.2 hast-util-has-property: 2.0.1 hast-util-heading-rank: 2.1.0 hast-util-is-element: 2.1.3 unified: 10.1.2 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: false /rehype-document@6.1.0: @@ -19601,7 +19736,7 @@ packages: /rehype-remove-comments@5.0.0: resolution: {integrity: sha512-sfiVT+u1in19sxo9vv/SDQVbHE2mADScNrpeVsUxBFl14zOMZnfPb6l4hR+lXqe10G13UFVqv5pt8zDbCR4JYQ==} dependencies: - '@types/hast': 2.3.4 + '@types/hast': 2.3.8 hast-util-is-conditional-comment: 2.0.0 unified: 10.1.2 unist-util-filter: 4.0.0 @@ -19619,18 +19754,10 @@ packages: engines: {node: '>= 0.10'} dev: false - /remark-breaks@3.0.2: - resolution: {integrity: sha512-x96YDJ9X+Ry0/JNZFKfr1hpcAKvGYWfUTszxY9RbxKEqq6uzPPoLCuHdZsLPZZUdAv3nCROyc7FPrQLWr2rxyw==} - dependencies: - '@types/mdast': 3.0.10 - unified: 10.1.2 - unist-util-visit: 4.1.1 - dev: false - /remark-directive@2.0.1: resolution: {integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 mdast-util-directive: 2.2.2 micromark-extension-directive: 2.1.2 unified: 10.1.2 @@ -19639,7 +19766,7 @@ packages: /remark-frontmatter@4.0.1: resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.15 mdast-util-frontmatter: 1.0.0 micromark-extension-frontmatter: 1.0.0 unified: 10.1.2 @@ -19663,6 +19790,17 @@ packages: unified: 10.1.2 transitivePeerDependencies: - supports-color + dev: true + + /remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + dependencies: + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.2.0 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} @@ -19697,6 +19835,11 @@ packages: /remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + /rename-keys@1.2.0: + resolution: {integrity: sha512-U7XpAktpbSgHTRSNRrjKSrjYkZKuhUukfoBlXWXUExCAqhzh1TU3BDRAfJmarcl5voKS+pbKU9MvyLWKZ4UEEg==} + engines: {node: '>= 0.8.0'} + dev: false + /renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: @@ -19821,6 +19964,10 @@ packages: global-dirs: 0.1.1 dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: false + /resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated @@ -19851,6 +19998,7 @@ packages: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} @@ -20005,15 +20153,18 @@ packages: typescript: 5.2.2 dev: true - /rollup-plugin-visualizer@5.6.0(rollup@4.1.5): - resolution: {integrity: sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA==} - engines: {node: '>=12'} + /rollup-plugin-visualizer@5.9.0(rollup@4.1.5): + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + engines: {node: '>=14'} hasBin: true peerDependencies: - rollup: ^2.0.0 + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true dependencies: - nanoid: 3.3.4 open: 8.4.0 + picomatch: 2.3.1 rollup: 4.1.5 source-map: 0.7.4 yargs: 17.7.2 @@ -20050,21 +20201,12 @@ packages: '@types/node': 20.8.9 dev: true - /rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: false - /rollup@3.29.4: resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: true /rollup@4.1.5: resolution: {integrity: sha512-AEw14/q4NHYQkQlngoSae2yi7hDBeT9w84aEzdgCr39+2RL+iTG84lGTkgC1Wp5igtquN64cNzuzZKVz+U6jOg==} @@ -20100,7 +20242,6 @@ packages: engines: {node: '>=12'} dependencies: execa: 5.1.1 - dev: true /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -20134,7 +20275,6 @@ packages: /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - dev: true /rxjs@6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} @@ -20218,9 +20358,9 @@ packages: transitivePeerDependencies: - supports-color - /sass@1.57.1: - resolution: {integrity: sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==} - engines: {node: '>=12.0.0'} + /sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 @@ -20272,10 +20412,10 @@ packages: dependencies: compute-scroll-into-view: 3.1.0 - /selderee@0.6.0: - resolution: {integrity: sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==} + /selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} dependencies: - parseley: 0.7.0 + parseley: 0.12.1 dev: false /select-hose@2.0.0: @@ -20480,6 +20620,7 @@ packages: /shortid@2.2.16: resolution: {integrity: sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: nanoid: 2.1.11 dev: false @@ -20519,6 +20660,12 @@ packages: simple-concat: 1.0.1 dev: true + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -20556,7 +20703,6 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - dev: true /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} @@ -20644,15 +20790,15 @@ packages: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} dev: false - /sort-package-json@1.57.0: - resolution: {integrity: sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==} + /sort-package-json@2.4.1: + resolution: {integrity: sha512-Nd3rgLBJcZ4iw7tpuOhwBupG6SvUDU0Fy1cZGAMorA2JmDUb+29Dg5phJK9gapa2Ak9d15w/RuMl/viwX+nKwQ==} hasBin: true dependencies: - detect-indent: 6.1.0 - detect-newline: 3.1.0 - git-hooks-list: 1.0.3 - globby: 10.0.0 - is-plain-obj: 2.1.0 + detect-indent: 7.0.1 + detect-newline: 4.0.1 + git-hooks-list: 3.1.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 sort-object-keys: 1.1.3 dev: false @@ -20670,6 +20816,14 @@ packages: source-map-url: 0.4.1 urix: 0.1.0 + /source-map-resolve@0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + dev: false + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -21125,7 +21279,6 @@ packages: /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - dev: true /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -21170,6 +21323,12 @@ packages: dependencies: inline-style-parser: 0.1.1 + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + dependencies: + inline-style-parser: 0.1.1 + dev: false + /stylehacks@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} @@ -21347,9 +21506,33 @@ packages: /svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + /svg-pathdata@5.0.5: + resolution: {integrity: sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==} + engines: {node: '>=6.9.5'} + dev: false + /svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + /svgo-browser@1.3.8: + resolution: {integrity: sha512-yOgDNIcewFZN3+jXdWeh/rQzbWJjCq1dTHphLz2r4T4AfTm+nqCxZ5B89v9bjQbFKA/s/k7TUc7J90+pP2HTyw==} + engines: {node: '>=4.0.0'} + hasBin: true + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + dev: false + /svgo@2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} engines: {node: '>=10.13.0'} @@ -21363,6 +21546,14 @@ packages: picocolors: 1.0.0 stable: 0.1.8 + /svgson@4.1.0: + resolution: {integrity: sha512-DodISxHtdLKUghDYA+PGK4Qq350+CbBAkdvGLkBFSmWd9WKSg4dijgjB1IiRPTmsUCd+a7KYe+ILHtklYgQyzQ==} + dependencies: + deep-rename-keys: 0.2.1 + omit-deep: 0.3.0 + xml-reader: 2.4.3 + dev: false + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -21372,7 +21563,10 @@ packages: dependencies: '@pkgr/utils': 2.4.2 tslib: 2.6.2 - dev: true + + /systemjs@6.14.2: + resolution: {integrity: sha512-1TlOwvKWdXxAY9vba+huLu99zrQURDWA8pUTYsRIYDZYQbGyK+pyEP4h4dlySsqo7ozyJBmYD20F+iUHhAltEg==} + dev: false /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} @@ -21578,7 +21772,6 @@ packages: /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} - dev: true /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -21666,6 +21859,7 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} @@ -21679,6 +21873,10 @@ packages: dependencies: punycode: 2.1.1 + /transformation-matrix@2.15.0: + resolution: {integrity: sha512-HN3kCvvH4ug3Xm/ycOfCFQOOktg5htxlC4Ih1Z7Wb6BMtQho+q+irOdGo10ARRKpqkRBXgBzQFw/AVmR0oIf0g==} + dev: false + /traverse@0.6.7: resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} dev: true @@ -21726,6 +21924,10 @@ packages: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false + /ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + dev: false + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -21763,15 +21965,15 @@ packages: tslib: 1.14.1 typescript: 5.2.2 - /tsx@3.12.1: - resolution: {integrity: sha512-Rcg1x+rNe7qwlP8j7kx4VjP/pJo/V57k+17hlrn6a7FuQLNwkaw5W4JF75tYornNVCxkXdSUnqlIT8JY/ttvIw==} + /tsx@3.14.0: + resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.4.1 - '@esbuild-kit/core-utils': 3.0.0 - '@esbuild-kit/esm-loader': 2.5.4 + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + source-map-support: 0.5.21 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: false /tty-browserify@0.0.0: @@ -21898,6 +22100,12 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + /types-ramda@0.29.6: + resolution: {integrity: sha512-VJoOk1uYNh9ZguGd3eZvqkdhD4hTGtnjRBUx5Zc0U9ftmnCgiWcSj/lsahzKunbiwRje1MxxNkEy1UdcXRCpYw==} + dependencies: + ts-toolbelt: 9.6.0 + dev: false + /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} @@ -21920,32 +22128,32 @@ packages: requiresBuild: true dev: true - /umi@4.0.42(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(postcss@8.4.31)(prettier@3.0.3)(rollup@4.1.5)(sass@1.57.1)(stylelint@15.11.0)(typescript@5.2.2): - resolution: {integrity: sha512-ItsrutcdOKWYKcB5aPZHk4gD9kodC/l4C9x5/9gwzN38AfEaojM5YtVFoGhZQeFcD3aBYYf/kegiUdJtdfErYA==} + /umi@4.0.88(@babel/core@7.23.2)(@types/node@20.8.9)(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(prettier@3.0.3)(rollup@4.1.5)(sass@1.69.5)(stylelint@15.11.0)(typescript@5.2.2): + resolution: {integrity: sha512-gNgBMbLuZwj5c2uroFmtgT4tJO2JFKfIxJaad3oFa0cOzJMSx6CnaG3Z2/+pU2eAy9EMBvbtY/iAmkr3ZNEAWg==} engines: {node: '>=14'} hasBin: true dependencies: - '@babel/runtime': 7.18.9 - '@umijs/bundler-utils': 4.0.42 - '@umijs/bundler-webpack': 4.0.42(typescript@5.2.2) - '@umijs/core': 4.0.42 - '@umijs/lint': 4.0.42(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(stylelint@15.11.0)(typescript@5.2.2) - '@umijs/preset-umi': 4.0.42(@types/node@20.8.9)(postcss@8.4.31)(rollup@4.1.5)(sass@1.57.1)(typescript@5.2.2) - '@umijs/renderer-react': 4.0.42(react-dom@18.1.0)(react@18.1.0) - '@umijs/server': 4.0.42 - '@umijs/test': 4.0.42(@babel/core@7.23.2) - '@umijs/utils': 4.0.42 - prettier-plugin-organize-imports: 2.3.4(prettier@3.0.3)(typescript@5.2.2) - prettier-plugin-packagejson: 2.3.0(prettier@3.0.3) + '@babel/runtime': 7.23.2 + '@umijs/bundler-utils': 4.0.88 + '@umijs/bundler-webpack': 4.0.88(typescript@5.2.2) + '@umijs/core': 4.0.88 + '@umijs/lint': 4.0.88(eslint@8.52.0)(jest@26.6.3)(postcss-less@6.0.0)(stylelint@15.11.0)(typescript@5.2.2) + '@umijs/preset-umi': 4.0.88(@types/node@20.8.9)(rollup@4.1.5)(sass@1.69.5)(typescript@5.2.2) + '@umijs/renderer-react': 4.0.88(react-dom@18.1.0)(react@18.1.0) + '@umijs/server': 4.0.88 + '@umijs/test': 4.0.88(@babel/core@7.23.2) + '@umijs/utils': 4.0.88 + prettier-plugin-organize-imports: 3.2.4(prettier@3.0.3)(typescript@5.2.2) + prettier-plugin-packagejson: 2.4.3(prettier@3.0.3) transitivePeerDependencies: - '@babel/core' - '@types/node' - '@types/react' - '@types/webpack' - - encoding + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' - eslint - jest - - postcss - postcss-html - postcss-jsx - postcss-less @@ -21957,7 +22165,6 @@ packages: - rollup - sass - sockjs-client - - styled-components - stylelint - stylus - sugarss @@ -21965,7 +22172,6 @@ packages: - terser - type-fest - typescript - - vue-template-compiler - webpack - webpack-dev-server - webpack-hot-middleware @@ -21987,8 +22193,13 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + /unfetch@5.0.0: + resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} + dev: false + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} dev: false /unicode-emoji-modifier-base@1.0.0: @@ -21996,6 +22207,24 @@ packages: engines: {node: '>=4'} dev: true + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: false + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: @@ -22052,7 +22281,7 @@ packages: dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.1 + unist-util-visit-parents: 5.1.3 dev: false /unist-util-find-after@4.0.0: @@ -22084,6 +22313,13 @@ packages: '@types/unist': 2.0.6 unist-util-is: 5.1.1 + /unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + dev: false + /unist-util-visit@4.1.1: resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} dependencies: @@ -22091,6 +22327,14 @@ packages: unist-util-is: 5.1.1 unist-util-visit-parents: 5.1.1 + /unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + unist-util-visit-parents: 5.1.1 + dev: false + /universal-user-agent@6.0.0: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} dev: true @@ -22107,6 +22351,18 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + dev: false + + /unset-value@0.1.2: + resolution: {integrity: sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: false + /unset-value@1.0.0: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} @@ -22117,7 +22373,6 @@ packages: /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - dev: true /unzip-response@2.0.1: resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==} @@ -22188,11 +22443,11 @@ packages: querystringify: 2.2.0 requires-port: 1.0.0 - /url@0.11.0: - resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} dependencies: - punycode: 1.3.2 - querystring: 0.2.0 + punycode: 1.4.1 + qs: 6.11.2 dev: false /use-isomorphic-layout-effect@1.1.2(react@18.1.0): @@ -22222,6 +22477,15 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /util.promisify@1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.2 + has-symbols: 1.0.3 + object.getownpropertydescriptors: 2.1.5 + dev: false + /util.promisify@1.1.1: resolution: {integrity: sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==} dependencies: @@ -22257,7 +22521,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true requiresBuild: true - optional: true /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} @@ -22336,6 +22599,15 @@ packages: unist-util-stringify-position: 3.0.2 vfile-message: 3.1.3 + /vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.2 + vfile-message: 3.1.3 + dev: false + /video-react@0.16.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-138NHPS8bmgqCYVCdbv2GVFhXntemNHWGw9AN8iJSzr3jizXMmWJd2LTBppr4hZJUbyW1A1tPZ3CQXZUaexMVA==} peerDependencies: @@ -22388,8 +22660,8 @@ packages: svgo: 2.8.0 dev: true - /vite@3.2.5(@types/node@20.8.9)(less@4.1.2)(sass@1.57.1): - resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} + /vite@4.3.1(@types/node@20.8.9)(less@4.1.3)(sass@1.69.5): + resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -22414,12 +22686,11 @@ packages: optional: true dependencies: '@types/node': 20.8.9 - esbuild: 0.15.18 - less: 4.1.2 + esbuild: 0.17.19 + less: 4.1.3 postcss: 8.4.31 - resolve: 1.22.8 - rollup: 2.79.1 - sass: 1.57.1 + rollup: 3.29.4 + sass: 1.69.5 optionalDependencies: fsevents: 2.3.2 dev: false @@ -22604,8 +22875,14 @@ packages: /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} @@ -22632,6 +22909,7 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: true /whatwg-url@6.5.0: resolution: {integrity: sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==} @@ -22861,6 +23139,12 @@ packages: engines: {node: '>=4'} dev: false + /xml-lexer@0.2.2: + resolution: {integrity: sha512-G0i98epIwiUEiKmMcavmVdhtymW+pCAohMRgybyIME9ygfVu8QheIi+YoQh3ngiThsT0SQzJT4R0sKDEv8Ou0w==} + dependencies: + eventemitter3: 2.0.3 + dev: false + /xml-name-validator@3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} @@ -22869,6 +23153,13 @@ packages: engines: {node: '>=12'} dev: true + /xml-reader@2.4.3: + resolution: {integrity: sha512-xWldrIxjeAMAu6+HSf9t50ot1uL5M+BtOidRCWHXIeewvSeIpscWCsp4Zxjk8kHHhdqFBrfK8U0EJeCcnyQ/gA==} + dependencies: + eventemitter3: 2.0.3 + xml-lexer: 0.2.2 + dev: false + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} diff --git a/s2-site/docs/api/general/S2Theme.zh.md b/s2-site/docs/api/general/S2Theme.zh.md index 218cf36c88..c6b05c8169 100644 --- a/s2-site/docs/api/general/S2Theme.zh.md +++ b/s2-site/docs/api/general/S2Theme.zh.md @@ -99,6 +99,8 @@ s2.setTheme({ | guideLineColor | 参考线颜色 | `string` | - | | | guideLineDash | 热区参考线 [虚线模式](https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/setLineDash) | `number[]` | `[3, 3]` | | | interactionState | 热区交互态样式 | [InteractionState](#interactionstate) | - | | +| minCellWidth | 单元格可拖拽最小宽度 | `number`| - | | +| minCellHeight | 单元格可拖拽最小高度 | `number` | - | | #### ScrollBarTheme @@ -143,14 +145,17 @@ s2.setTheme({ | 参数 | 说明 | 类型 | 默认值 | 必选 | | ------------ | ------------------------------------------------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------- | ---- | -| textAlign | 文本内容的对齐方式 | `left` \| `center` \| `right` | - | | -| textBaseline | 绘制文本时的基线 | `top` \| `middle` \| `bottom` | - | | +| textAlign | 文本内容的对齐方式 | `left \| center \| right` | - | | +| textBaseline | 绘制文本时的基线 | `top \| middle \| bottom` | - | | | fontFamily | 字体 | `string` | `Roboto, PingFangSC,`
`BlinkMacSystemFont,`
`Microsoft YaHei,`
`Arial, sans-serif` | | | fontSize | 字体大小 | `number` | - | | -| fontWeight | number
string: `normal`
`bold`
`bolder`
`lighter` 字体粗细 | `number` \| `string` | 粗体文本:Mobile:`520` PC: `bold`
普通文本:`normal` | | +| fontWeight | number
string: `normal`
`bold`
`bolder`
`lighter` 字体粗细 | `number \| string` | 粗体文本:Mobile:`520` PC: `bold`
普通文本:`normal` | | | fill | 字体颜色 | `string` | - | | | linkTextFill | 链接文本颜色 | `string` | - | | | opacity | 字体透明度 | `number` | 1 | | +| wordWrap | 文本是否自动换行 (数值单元格不建议换行)。[了解更多](https://g.antv.antgroup.com/api/basic/text#wordwrap) | `boolean` | `true` | | +| maxLines | 最大行数,文本超出后将被截断 (数值单元格不建议换行),需要配合 `wordWrap` 和 `textOverflow` 一起使用。[了解更多](https://g.antv.antgroup.com/api/basic/text#maxlines) | `number` | `1` | | +| textOverflow | 自定义隐藏的文本溢出内容,例如直接裁剪、追加省略号或一个自定义字符串,需要配合 `wordWrap` 和 `maxLines` 一起使用。[了解更多](https://g.antv.antgroup.com/api/basic/text#textoverflow) | `string` | `ellipsis` | | #### CellTheme diff --git a/s2-site/examples/case/comparison/demo/measure-comparison.tsx b/s2-site/examples/case/comparison/demo/measure-comparison.tsx index 4f0177dfac..eae238e3ed 100644 --- a/s2-site/examples/case/comparison/demo/measure-comparison.tsx +++ b/s2-site/examples/case/comparison/demo/measure-comparison.tsx @@ -203,34 +203,27 @@ class CustomDataCell extends DataCell { this.meta.colId?.includes(`root${ID_SEPARATOR}${item}${ID_SEPARATOR}`), ); - if (tagName) { - const { getCustomFormattedValue, getCustomTextStyle } = - this.textConfig[tagName] || {}; - const { formattedValue: defaultFormattedValue } = - this.getFormattedFieldValue(); - let formattedValue = defaultFormattedValue; - - if (getCustomFormattedValue) { - formattedValue = getCustomFormattedValue(fieldValue); - } - - const textStyle = this.getTextStyle(); - - this.actualTextWidth = measureTextWidth(formattedValue, textStyle); - const position = this.getTextPosition(); - - this.textShape = this.addShape('text', { - attrs: { - x: position.x, - y: position.y, - text: formattedValue, - ...textStyle, - ...(getCustomTextStyle(fieldValue, textStyle) || {}), - }, - }); - } else { - super.drawTextShape(); + if (!tagName) { + return super.drawTextShape(); } + + const { getCustomFormattedValue, getCustomTextStyle } = + this.textConfig[tagName] || {}; + const { formattedValue: defaultFormattedValue } = + this.getFormattedFieldValue(); + + const formattedValue = + getCustomFormattedValue?.(fieldValue) ?? defaultFormattedValue; + const textStyle = this.getTextStyle(); + const position = this.getTextPosition(); + + this.renderTextShape({ + x: position.x, + y: position.y, + text: formattedValue, + ...textStyle, + ...(getCustomTextStyle(fieldValue, textStyle) || {}), + }); } drawLeftBorder() { diff --git a/s2-site/package.json b/s2-site/package.json index 495245e985..a866316f9d 100644 --- a/s2-site/package.json +++ b/s2-site/package.json @@ -28,13 +28,13 @@ }, "dependencies": { "@ant-design/icons": "^5.2.6", - "@antv/dumi-theme-antv": "^0.3.5", - "@antv/g-canvas": "^0.5.12", + "@antv/dumi-theme-antv": "^0.4.3", + "@antv/g-canvas": "^1.11.24", "@antv/s2": "next", "@antv/s2-react": "next", - "antd": "^5.11.1", - "copy-to-clipboard": "^3.3.1", - "dumi": "^2.0.3", + "antd": "^5.11.2", + "copy-to-clipboard": "^3.3.3", + "dumi": "^2.2.14", "gh-pages": "^3.1.0", "lodash": "^4.17.21", "react-color": "^2.19.3"