@a3s-lab/office 0.42.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -1
- package/dist/0~1403.js +1 -1
- package/dist/0~2330.js +1 -1
- package/dist/0~3539.js +2 -2
- package/dist/0~3557.js +1 -1
- package/dist/0~4980.js +1 -1
- package/dist/0~5024.js +1 -1
- package/dist/0~7828.js +1 -1
- package/dist/{0~7048.js → 0~7831.js} +2 -547
- package/dist/0~document-editor.js +4 -3
- package/dist/{0~3635.js → 0~office-color-picker.js} +1 -12
- package/dist/0~pdf-viewer.js +22 -8
- package/dist/0~presentation-editor.js +4 -3
- package/dist/0~spreadsheet-editor.js +314 -3617
- package/dist/0~work-docx-export.js +1 -1
- package/dist/0~work-docx-import.js +1 -1
- package/dist/0~work-office-diagnostics.js +1 -1
- package/dist/0~work-pptx-export.js +1 -1
- package/dist/0~work-pptx-import.js +1 -1
- package/dist/0~work-presentation-charts.js +1 -1
- package/dist/3818.js +1 -1
- package/dist/4166.js +1 -1
- package/dist/4174.js +3 -3
- package/dist/4560.js +2 -2
- package/dist/{5416.js → 610.js} +4335 -410
- package/dist/{4121.js → 6968.js} +875 -13
- package/dist/7060.js +1 -1
- package/dist/{4650.js → 816.js} +12 -1
- package/dist/8715.js +1 -1
- package/dist/9333.js +17 -17
- package/dist/core.js +7 -5
- package/dist/index.js +2 -2
- package/dist/internal/features/work/editors/spreadsheet-conditional-format-model.d.ts +6 -1
- package/dist/internal/features/work/editors/spreadsheet-data-validation-list.d.ts +44 -0
- package/dist/internal/features/work/editors/spreadsheet-data-validation.d.ts +2 -1
- package/dist/internal/features/work/editors/spreadsheet-editor-support.d.ts +1 -1
- package/dist/internal/features/work/work-spreadsheet-conditional-format.d.ts +3 -1
- package/dist/internal/features/work/work-spreadsheet-local-formula.d.ts +43 -0
- package/dist/internal/features/work/work-types.d.ts +4 -0
- package/dist/office-kernel.wasm +0 -0
- package/dist/styles.css +13 -1
- package/package.json +4 -1
package/dist/{4121.js → 6968.js}
RENAMED
|
@@ -2905,6 +2905,13 @@ const WORK_TEMPLATES = [
|
|
|
2905
2905
|
description: '自定义公式、下拉列表、输入提示与错误警告',
|
|
2906
2906
|
accent: '#13795b'
|
|
2907
2907
|
},
|
|
2908
|
+
{
|
|
2909
|
+
id: 'conditional-format',
|
|
2910
|
+
kind: 'spreadsheet',
|
|
2911
|
+
name: '公式条件格式',
|
|
2912
|
+
description: '相对引用、跨表阈值、停止后续规则与本地实时强调',
|
|
2913
|
+
accent: '#2f6fed'
|
|
2914
|
+
},
|
|
2908
2915
|
{
|
|
2909
2916
|
id: 'structured-references',
|
|
2910
2917
|
kind: 'spreadsheet',
|
|
@@ -2965,6 +2972,7 @@ function initialTitle(templateId, kind) {
|
|
|
2965
2972
|
'proofing-languages': '校对语言示例',
|
|
2966
2973
|
'quarterly-plan': '季度执行计划',
|
|
2967
2974
|
'data-validation': '数据验证示例',
|
|
2975
|
+
'conditional-format': '公式条件格式示例',
|
|
2968
2976
|
'structured-references': '结构化引用示例',
|
|
2969
2977
|
'strategy-deck': '业务策略汇报',
|
|
2970
2978
|
'animated-deck': '进入与退出动画示例'
|
|
@@ -3263,7 +3271,12 @@ function contentForTemplate(templateId) {
|
|
|
3263
3271
|
};
|
|
3264
3272
|
if ('data-validation' === templateId) return {
|
|
3265
3273
|
type: 'spreadsheet',
|
|
3266
|
-
sheets: dataValidationTemplateSheets()
|
|
3274
|
+
sheets: dataValidationTemplateSheets(),
|
|
3275
|
+
namedRanges: dataValidationTemplateNamedRanges()
|
|
3276
|
+
};
|
|
3277
|
+
if ('conditional-format' === templateId) return {
|
|
3278
|
+
type: 'spreadsheet',
|
|
3279
|
+
sheets: conditionalFormatTemplateSheets()
|
|
3267
3280
|
};
|
|
3268
3281
|
if ('structured-references' === templateId) return {
|
|
3269
3282
|
type: 'spreadsheet',
|
|
@@ -3427,7 +3440,9 @@ function dataValidationTemplateSheets() {
|
|
|
3427
3440
|
'State',
|
|
3428
3441
|
'Due date',
|
|
3429
3442
|
'Priority',
|
|
3430
|
-
'Owner'
|
|
3443
|
+
'Owner',
|
|
3444
|
+
'Region',
|
|
3445
|
+
'Regional owner'
|
|
3431
3446
|
].forEach((value, column)=>{
|
|
3432
3447
|
inputs[0][column] = headerCell(value);
|
|
3433
3448
|
});
|
|
@@ -3437,35 +3452,45 @@ function dataValidationTemplateSheets() {
|
|
|
3437
3452
|
'Ready',
|
|
3438
3453
|
'2026-09-05',
|
|
3439
3454
|
2,
|
|
3440
|
-
'Avery'
|
|
3455
|
+
'Avery',
|
|
3456
|
+
'North',
|
|
3457
|
+
''
|
|
3441
3458
|
],
|
|
3442
3459
|
[
|
|
3443
3460
|
'Review integration',
|
|
3444
3461
|
'In review',
|
|
3445
3462
|
'2026-09-12',
|
|
3446
3463
|
3,
|
|
3447
|
-
'Morgan'
|
|
3464
|
+
'Morgan',
|
|
3465
|
+
'South',
|
|
3466
|
+
''
|
|
3448
3467
|
],
|
|
3449
3468
|
[
|
|
3450
3469
|
'Resolve blockers',
|
|
3451
3470
|
'Blocked',
|
|
3452
3471
|
'2026-09-18',
|
|
3453
3472
|
5,
|
|
3454
|
-
'Riley'
|
|
3473
|
+
'Riley',
|
|
3474
|
+
'North',
|
|
3475
|
+
''
|
|
3455
3476
|
],
|
|
3456
3477
|
[
|
|
3457
3478
|
'Publish preview',
|
|
3458
3479
|
'Ready',
|
|
3459
3480
|
'2026-09-24',
|
|
3460
3481
|
1,
|
|
3461
|
-
'Jordan'
|
|
3482
|
+
'Jordan',
|
|
3483
|
+
'South',
|
|
3484
|
+
''
|
|
3462
3485
|
],
|
|
3463
3486
|
[
|
|
3464
3487
|
'Ship release',
|
|
3465
3488
|
'In review',
|
|
3466
3489
|
'2026-09-30',
|
|
3467
3490
|
4,
|
|
3468
|
-
'Taylor'
|
|
3491
|
+
'Taylor',
|
|
3492
|
+
'North',
|
|
3493
|
+
''
|
|
3469
3494
|
]
|
|
3470
3495
|
];
|
|
3471
3496
|
rows.forEach((row, rowIndex)=>{
|
|
@@ -3592,6 +3617,33 @@ function dataValidationTemplateSheets() {
|
|
|
3592
3617
|
hintTitle: 'Owner',
|
|
3593
3618
|
hintValue: 'The custom formula checks that this cell is not blank.'
|
|
3594
3619
|
})
|
|
3620
|
+
},
|
|
3621
|
+
{
|
|
3622
|
+
ranges: [
|
|
3623
|
+
{
|
|
3624
|
+
row: [
|
|
3625
|
+
1,
|
|
3626
|
+
5
|
|
3627
|
+
],
|
|
3628
|
+
column: [
|
|
3629
|
+
6,
|
|
3630
|
+
6
|
|
3631
|
+
]
|
|
3632
|
+
}
|
|
3633
|
+
],
|
|
3634
|
+
item: dataValidationTemplateItem({
|
|
3635
|
+
type: 'dropdown',
|
|
3636
|
+
rangeTxt: 'G2:G6',
|
|
3637
|
+
value1: '=INDIRECT($F2)',
|
|
3638
|
+
allowBlank: true,
|
|
3639
|
+
showDropdownArrow: true,
|
|
3640
|
+
errorStyle: 'stop',
|
|
3641
|
+
errorTitle: 'Regional owner required',
|
|
3642
|
+
errorMessage: 'Choose an owner from the selected region.',
|
|
3643
|
+
hintShow: true,
|
|
3644
|
+
hintTitle: 'Dependent list',
|
|
3645
|
+
hintValue: 'The options follow the Region column through a local INDIRECT formula.'
|
|
3646
|
+
})
|
|
3595
3647
|
}
|
|
3596
3648
|
],
|
|
3597
3649
|
luckysheet_select_save: [
|
|
@@ -3614,7 +3666,9 @@ function dataValidationTemplateSheets() {
|
|
|
3614
3666
|
1: 110,
|
|
3615
3667
|
2: 118,
|
|
3616
3668
|
3: 84,
|
|
3617
|
-
4: 104
|
|
3669
|
+
4: 104,
|
|
3670
|
+
5: 92,
|
|
3671
|
+
6: 132
|
|
3618
3672
|
},
|
|
3619
3673
|
rowlen: {
|
|
3620
3674
|
0: 30
|
|
@@ -3630,18 +3684,281 @@ function dataValidationTemplateSheets() {
|
|
|
3630
3684
|
column: 3,
|
|
3631
3685
|
data: [
|
|
3632
3686
|
[
|
|
3633
|
-
styledCell('Ready')
|
|
3687
|
+
styledCell('Ready'),
|
|
3688
|
+
styledCell('Avery'),
|
|
3689
|
+
styledCell('Morgan')
|
|
3634
3690
|
],
|
|
3635
3691
|
[
|
|
3636
|
-
styledCell('Blocked')
|
|
3692
|
+
styledCell('Blocked'),
|
|
3693
|
+
styledCell('Jordan'),
|
|
3694
|
+
styledCell('Taylor')
|
|
3637
3695
|
],
|
|
3638
3696
|
[
|
|
3639
|
-
styledCell('In review')
|
|
3697
|
+
styledCell('In review'),
|
|
3698
|
+
styledCell('Cara'),
|
|
3699
|
+
styledCell('Quinn')
|
|
3640
3700
|
]
|
|
3641
3701
|
],
|
|
3642
3702
|
config: {
|
|
3643
3703
|
columnlen: {
|
|
3644
|
-
0: 120
|
|
3704
|
+
0: 120,
|
|
3705
|
+
1: 110,
|
|
3706
|
+
2: 110
|
|
3707
|
+
}
|
|
3708
|
+
}
|
|
3709
|
+
}
|
|
3710
|
+
];
|
|
3711
|
+
}
|
|
3712
|
+
function dataValidationTemplateNamedRanges() {
|
|
3713
|
+
return [
|
|
3714
|
+
{
|
|
3715
|
+
id: 'data-validation-north',
|
|
3716
|
+
name: 'North',
|
|
3717
|
+
reference: "'Lists'!B1:B3"
|
|
3718
|
+
},
|
|
3719
|
+
{
|
|
3720
|
+
id: 'data-validation-south',
|
|
3721
|
+
name: 'South',
|
|
3722
|
+
reference: "'Lists'!C1:C3"
|
|
3723
|
+
}
|
|
3724
|
+
];
|
|
3725
|
+
}
|
|
3726
|
+
function conditionalFormatTemplateSheets() {
|
|
3727
|
+
const status = emptyMatrix(18, 8);
|
|
3728
|
+
status[0][0] = styledCell('公式条件格式 · 发布看板', {
|
|
3729
|
+
bl: 1,
|
|
3730
|
+
fs: 16,
|
|
3731
|
+
fc: '#ffffff',
|
|
3732
|
+
bg: '#2f6fed'
|
|
3733
|
+
});
|
|
3734
|
+
status[1][0] = styledCell('公式以 A2:H7 左上角为锚点;先标记阻塞项,再强调达到阈值的任务。', {
|
|
3735
|
+
fc: '#49617f',
|
|
3736
|
+
fs: 10
|
|
3737
|
+
});
|
|
3738
|
+
[
|
|
3739
|
+
'任务',
|
|
3740
|
+
'负责人',
|
|
3741
|
+
'完成率',
|
|
3742
|
+
'状态',
|
|
3743
|
+
'预算',
|
|
3744
|
+
'实际',
|
|
3745
|
+
'偏差',
|
|
3746
|
+
'备注'
|
|
3747
|
+
].forEach((value, column)=>{
|
|
3748
|
+
status[2][column] = headerCell(value);
|
|
3749
|
+
});
|
|
3750
|
+
const rows = [
|
|
3751
|
+
[
|
|
3752
|
+
'需求确认',
|
|
3753
|
+
'Avery',
|
|
3754
|
+
1,
|
|
3755
|
+
'完成',
|
|
3756
|
+
12000,
|
|
3757
|
+
11800,
|
|
3758
|
+
'按期',
|
|
3759
|
+
'可发布'
|
|
3760
|
+
],
|
|
3761
|
+
[
|
|
3762
|
+
'接口联调',
|
|
3763
|
+
'Morgan',
|
|
3764
|
+
0.82,
|
|
3765
|
+
'进行中',
|
|
3766
|
+
18000,
|
|
3767
|
+
20100,
|
|
3768
|
+
'超支',
|
|
3769
|
+
'关注预算'
|
|
3770
|
+
],
|
|
3771
|
+
[
|
|
3772
|
+
'回归测试',
|
|
3773
|
+
'Riley',
|
|
3774
|
+
0.54,
|
|
3775
|
+
'阻塞',
|
|
3776
|
+
15000,
|
|
3777
|
+
7600,
|
|
3778
|
+
'暂停',
|
|
3779
|
+
'等待依赖'
|
|
3780
|
+
],
|
|
3781
|
+
[
|
|
3782
|
+
'文档发布',
|
|
3783
|
+
'Jordan',
|
|
3784
|
+
0.76,
|
|
3785
|
+
'进行中',
|
|
3786
|
+
9000,
|
|
3787
|
+
8800,
|
|
3788
|
+
'按期',
|
|
3789
|
+
'待审阅'
|
|
3790
|
+
],
|
|
3791
|
+
[
|
|
3792
|
+
'版本发布',
|
|
3793
|
+
'Taylor',
|
|
3794
|
+
0.38,
|
|
3795
|
+
'未开始',
|
|
3796
|
+
22000,
|
|
3797
|
+
0,
|
|
3798
|
+
'未开始',
|
|
3799
|
+
'尚未排期'
|
|
3800
|
+
],
|
|
3801
|
+
[
|
|
3802
|
+
'复盘会议',
|
|
3803
|
+
'Avery',
|
|
3804
|
+
0.9,
|
|
3805
|
+
'进行中',
|
|
3806
|
+
4000,
|
|
3807
|
+
3500,
|
|
3808
|
+
'按期',
|
|
3809
|
+
'本周完成'
|
|
3810
|
+
]
|
|
3811
|
+
];
|
|
3812
|
+
rows.forEach((row, rowIndex)=>{
|
|
3813
|
+
row.forEach((value, columnIndex)=>{
|
|
3814
|
+
status[rowIndex + 3][columnIndex] = styledCell(value, {
|
|
3815
|
+
bg: rowIndex % 2 ? '#f6f9ff' : '#ffffff',
|
|
3816
|
+
...2 === columnIndex ? {
|
|
3817
|
+
ct: {
|
|
3818
|
+
fa: '0%',
|
|
3819
|
+
t: 'n'
|
|
3820
|
+
},
|
|
3821
|
+
m: `${Math.round(100 * Number(value))}%`
|
|
3822
|
+
} : {},
|
|
3823
|
+
...4 === columnIndex || 5 === columnIndex ? {
|
|
3824
|
+
ct: {
|
|
3825
|
+
fa: '#,##0',
|
|
3826
|
+
t: 'n'
|
|
3827
|
+
},
|
|
3828
|
+
m: Number(value).toLocaleString()
|
|
3829
|
+
} : {}
|
|
3830
|
+
});
|
|
3831
|
+
});
|
|
3832
|
+
});
|
|
3833
|
+
status[11][0] = styledCell('本地规则示例', {
|
|
3834
|
+
bl: 1,
|
|
3835
|
+
fc: '#244b9b'
|
|
3836
|
+
});
|
|
3837
|
+
status[12][0] = styledCell('阻塞项(停止后续规则)');
|
|
3838
|
+
status[12][1] = styledCell('=$D4="阻塞"');
|
|
3839
|
+
status[13][0] = styledCell('达标项(跨表阈值)');
|
|
3840
|
+
status[13][1] = styledCell('=AND($C4>=Limits!$A$2,$D4<>"阻塞")');
|
|
3841
|
+
const blockRule = {
|
|
3842
|
+
type: 'default',
|
|
3843
|
+
cellrange: [
|
|
3844
|
+
{
|
|
3845
|
+
row: [
|
|
3846
|
+
3,
|
|
3847
|
+
8
|
|
3848
|
+
],
|
|
3849
|
+
column: [
|
|
3850
|
+
0,
|
|
3851
|
+
7
|
|
3852
|
+
]
|
|
3853
|
+
}
|
|
3854
|
+
],
|
|
3855
|
+
format: {
|
|
3856
|
+
textColor: '#9c0006',
|
|
3857
|
+
cellColor: '#ffc7ce'
|
|
3858
|
+
},
|
|
3859
|
+
conditionName: 'formula',
|
|
3860
|
+
conditionRange: [],
|
|
3861
|
+
conditionValue: [
|
|
3862
|
+
'=$D4="阻塞"'
|
|
3863
|
+
],
|
|
3864
|
+
stopIfTrue: true
|
|
3865
|
+
};
|
|
3866
|
+
const completedRule = {
|
|
3867
|
+
type: 'default',
|
|
3868
|
+
cellrange: [
|
|
3869
|
+
{
|
|
3870
|
+
row: [
|
|
3871
|
+
3,
|
|
3872
|
+
8
|
|
3873
|
+
],
|
|
3874
|
+
column: [
|
|
3875
|
+
0,
|
|
3876
|
+
7
|
|
3877
|
+
]
|
|
3878
|
+
}
|
|
3879
|
+
],
|
|
3880
|
+
format: {
|
|
3881
|
+
textColor: '#006100',
|
|
3882
|
+
cellColor: '#c6efce'
|
|
3883
|
+
},
|
|
3884
|
+
conditionName: 'formula',
|
|
3885
|
+
conditionRange: [],
|
|
3886
|
+
conditionValue: [
|
|
3887
|
+
'=AND($C4>=Limits!$A$2,$D4<>"阻塞")'
|
|
3888
|
+
]
|
|
3889
|
+
};
|
|
3890
|
+
return [
|
|
3891
|
+
{
|
|
3892
|
+
id: createWorkId('sheet'),
|
|
3893
|
+
name: 'Status',
|
|
3894
|
+
status: 1,
|
|
3895
|
+
order: 0,
|
|
3896
|
+
row: 18,
|
|
3897
|
+
column: 8,
|
|
3898
|
+
data: status,
|
|
3899
|
+
luckysheet_conditionformat_save: [
|
|
3900
|
+
blockRule,
|
|
3901
|
+
completedRule
|
|
3902
|
+
],
|
|
3903
|
+
config: {
|
|
3904
|
+
columnlen: {
|
|
3905
|
+
0: 132,
|
|
3906
|
+
1: 92,
|
|
3907
|
+
2: 84,
|
|
3908
|
+
3: 86,
|
|
3909
|
+
4: 92,
|
|
3910
|
+
5: 92,
|
|
3911
|
+
6: 84,
|
|
3912
|
+
7: 116
|
|
3913
|
+
},
|
|
3914
|
+
rowlen: {
|
|
3915
|
+
0: 34,
|
|
3916
|
+
1: 26,
|
|
3917
|
+
2: 28,
|
|
3918
|
+
12: 24,
|
|
3919
|
+
13: 24
|
|
3920
|
+
},
|
|
3921
|
+
merge: {
|
|
3922
|
+
'0_0': {
|
|
3923
|
+
r: 0,
|
|
3924
|
+
c: 0,
|
|
3925
|
+
rs: 1,
|
|
3926
|
+
cs: 8
|
|
3927
|
+
}
|
|
3928
|
+
}
|
|
3929
|
+
}
|
|
3930
|
+
},
|
|
3931
|
+
{
|
|
3932
|
+
id: createWorkId('sheet'),
|
|
3933
|
+
name: 'Limits',
|
|
3934
|
+
status: 0,
|
|
3935
|
+
order: 1,
|
|
3936
|
+
row: 8,
|
|
3937
|
+
column: 4,
|
|
3938
|
+
data: [
|
|
3939
|
+
[
|
|
3940
|
+
headerCell('完成率阈值'),
|
|
3941
|
+
styledCell('说明')
|
|
3942
|
+
],
|
|
3943
|
+
[
|
|
3944
|
+
styledCell(0.8, {
|
|
3945
|
+
ct: {
|
|
3946
|
+
fa: '0%',
|
|
3947
|
+
t: 'n'
|
|
3948
|
+
},
|
|
3949
|
+
m: '80%'
|
|
3950
|
+
}),
|
|
3951
|
+
styledCell('达到阈值并且未阻塞的任务使用绿色强调。')
|
|
3952
|
+
]
|
|
3953
|
+
],
|
|
3954
|
+
config: {
|
|
3955
|
+
columnlen: {
|
|
3956
|
+
0: 120,
|
|
3957
|
+
1: 300
|
|
3958
|
+
},
|
|
3959
|
+
rowlen: {
|
|
3960
|
+
0: 28,
|
|
3961
|
+
1: 36
|
|
3645
3962
|
}
|
|
3646
3963
|
}
|
|
3647
3964
|
}
|
|
@@ -4299,4 +4616,549 @@ new TextEncoder();
|
|
|
4299
4616
|
function isOfficeKernelSpreadsheetError(value) {
|
|
4300
4617
|
return 'string' == typeof value && spreadsheetErrors.has(value);
|
|
4301
4618
|
}
|
|
4302
|
-
|
|
4619
|
+
const officeFontFamilies = [
|
|
4620
|
+
{
|
|
4621
|
+
id: 'microsoft-yahei',
|
|
4622
|
+
name: 'Microsoft YaHei',
|
|
4623
|
+
cssValue: '"Microsoft YaHei"',
|
|
4624
|
+
cssFamily: '"Microsoft YaHei", "PingFang SC", sans-serif',
|
|
4625
|
+
label: '微软雅黑',
|
|
4626
|
+
group: '中文字体'
|
|
4627
|
+
},
|
|
4628
|
+
{
|
|
4629
|
+
id: 'pingfang-sc',
|
|
4630
|
+
name: 'PingFang SC',
|
|
4631
|
+
cssValue: '"PingFang SC"',
|
|
4632
|
+
cssFamily: '"PingFang SC", "Microsoft YaHei", sans-serif',
|
|
4633
|
+
label: '苹方',
|
|
4634
|
+
group: '中文字体'
|
|
4635
|
+
},
|
|
4636
|
+
{
|
|
4637
|
+
id: 'simsun',
|
|
4638
|
+
name: 'SimSun',
|
|
4639
|
+
cssValue: 'SimSun',
|
|
4640
|
+
cssFamily: 'SimSun, "Songti SC", serif',
|
|
4641
|
+
label: '宋体',
|
|
4642
|
+
group: '中文字体'
|
|
4643
|
+
},
|
|
4644
|
+
{
|
|
4645
|
+
id: 'stsong',
|
|
4646
|
+
name: 'STSong',
|
|
4647
|
+
cssValue: 'STSong',
|
|
4648
|
+
cssFamily: 'STSong, "Songti SC", SimSun, serif',
|
|
4649
|
+
label: '华文宋体',
|
|
4650
|
+
group: '中文字体'
|
|
4651
|
+
},
|
|
4652
|
+
{
|
|
4653
|
+
id: 'simhei',
|
|
4654
|
+
name: 'SimHei',
|
|
4655
|
+
cssValue: 'SimHei',
|
|
4656
|
+
cssFamily: 'SimHei, "Heiti SC", sans-serif',
|
|
4657
|
+
label: '黑体',
|
|
4658
|
+
group: '中文字体'
|
|
4659
|
+
},
|
|
4660
|
+
{
|
|
4661
|
+
id: 'stheiti',
|
|
4662
|
+
name: 'STHeiti',
|
|
4663
|
+
cssValue: 'STHeiti',
|
|
4664
|
+
cssFamily: 'STHeiti, "Heiti SC", SimHei, sans-serif',
|
|
4665
|
+
label: '华文黑体',
|
|
4666
|
+
group: '中文字体'
|
|
4667
|
+
},
|
|
4668
|
+
{
|
|
4669
|
+
id: 'kaiti',
|
|
4670
|
+
name: 'KaiTi',
|
|
4671
|
+
cssValue: 'KaiTi',
|
|
4672
|
+
cssFamily: 'KaiTi, "Kaiti SC", serif',
|
|
4673
|
+
label: '楷体',
|
|
4674
|
+
group: '中文字体'
|
|
4675
|
+
},
|
|
4676
|
+
{
|
|
4677
|
+
id: 'fangsong',
|
|
4678
|
+
name: 'FangSong',
|
|
4679
|
+
cssValue: 'FangSong',
|
|
4680
|
+
cssFamily: 'FangSong, STFangsong, serif',
|
|
4681
|
+
label: '仿宋',
|
|
4682
|
+
group: '中文字体'
|
|
4683
|
+
},
|
|
4684
|
+
{
|
|
4685
|
+
id: 'hiragino-sans-gb',
|
|
4686
|
+
name: 'Hiragino Sans GB',
|
|
4687
|
+
cssValue: '"Hiragino Sans GB"',
|
|
4688
|
+
cssFamily: '"Hiragino Sans GB", "PingFang SC", sans-serif',
|
|
4689
|
+
label: '冬青黑体',
|
|
4690
|
+
group: '中文字体'
|
|
4691
|
+
},
|
|
4692
|
+
{
|
|
4693
|
+
id: 'aptos',
|
|
4694
|
+
name: 'Aptos',
|
|
4695
|
+
cssValue: 'Aptos',
|
|
4696
|
+
cssFamily: 'Aptos, sans-serif',
|
|
4697
|
+
label: 'Aptos',
|
|
4698
|
+
group: '西文字体'
|
|
4699
|
+
},
|
|
4700
|
+
{
|
|
4701
|
+
id: 'calibri',
|
|
4702
|
+
name: 'Calibri',
|
|
4703
|
+
cssValue: 'Calibri',
|
|
4704
|
+
cssFamily: 'Calibri',
|
|
4705
|
+
label: 'Calibri',
|
|
4706
|
+
group: '西文字体'
|
|
4707
|
+
},
|
|
4708
|
+
{
|
|
4709
|
+
id: 'arial',
|
|
4710
|
+
name: 'Arial',
|
|
4711
|
+
cssValue: 'Arial',
|
|
4712
|
+
cssFamily: 'Arial, sans-serif',
|
|
4713
|
+
label: 'Arial',
|
|
4714
|
+
group: '西文字体'
|
|
4715
|
+
},
|
|
4716
|
+
{
|
|
4717
|
+
id: 'helvetica',
|
|
4718
|
+
name: 'Helvetica',
|
|
4719
|
+
cssValue: 'Helvetica',
|
|
4720
|
+
cssFamily: 'Helvetica, Arial, sans-serif',
|
|
4721
|
+
label: 'Helvetica',
|
|
4722
|
+
group: '西文字体'
|
|
4723
|
+
},
|
|
4724
|
+
{
|
|
4725
|
+
id: 'times-new-roman',
|
|
4726
|
+
name: 'Times New Roman',
|
|
4727
|
+
cssValue: '"Times New Roman"',
|
|
4728
|
+
cssFamily: '"Times New Roman", Times, serif',
|
|
4729
|
+
label: 'Times New Roman',
|
|
4730
|
+
group: '西文字体'
|
|
4731
|
+
},
|
|
4732
|
+
{
|
|
4733
|
+
id: 'georgia',
|
|
4734
|
+
name: 'Georgia',
|
|
4735
|
+
cssValue: 'Georgia',
|
|
4736
|
+
cssFamily: 'Georgia, "Times New Roman", serif',
|
|
4737
|
+
label: 'Georgia',
|
|
4738
|
+
group: '西文字体'
|
|
4739
|
+
},
|
|
4740
|
+
{
|
|
4741
|
+
id: 'cambria',
|
|
4742
|
+
name: 'Cambria',
|
|
4743
|
+
cssValue: 'Cambria',
|
|
4744
|
+
cssFamily: 'Cambria, Georgia, serif',
|
|
4745
|
+
label: 'Cambria',
|
|
4746
|
+
group: '西文字体'
|
|
4747
|
+
},
|
|
4748
|
+
{
|
|
4749
|
+
id: 'garamond',
|
|
4750
|
+
name: 'Garamond',
|
|
4751
|
+
cssValue: 'Garamond',
|
|
4752
|
+
cssFamily: 'Garamond, Georgia, serif',
|
|
4753
|
+
label: 'Garamond',
|
|
4754
|
+
group: '西文字体'
|
|
4755
|
+
},
|
|
4756
|
+
{
|
|
4757
|
+
id: 'verdana',
|
|
4758
|
+
name: 'Verdana',
|
|
4759
|
+
cssValue: 'Verdana',
|
|
4760
|
+
cssFamily: 'Verdana, Arial, sans-serif',
|
|
4761
|
+
label: 'Verdana',
|
|
4762
|
+
group: '西文字体'
|
|
4763
|
+
},
|
|
4764
|
+
{
|
|
4765
|
+
id: 'tahoma',
|
|
4766
|
+
name: 'Tahoma',
|
|
4767
|
+
cssValue: 'Tahoma',
|
|
4768
|
+
cssFamily: 'Tahoma, Verdana, sans-serif',
|
|
4769
|
+
label: 'Tahoma',
|
|
4770
|
+
group: '西文字体'
|
|
4771
|
+
},
|
|
4772
|
+
{
|
|
4773
|
+
id: 'trebuchet-ms',
|
|
4774
|
+
name: 'Trebuchet MS',
|
|
4775
|
+
cssValue: '"Trebuchet MS"',
|
|
4776
|
+
cssFamily: '"Trebuchet MS", Arial, sans-serif',
|
|
4777
|
+
label: 'Trebuchet MS',
|
|
4778
|
+
group: '西文字体'
|
|
4779
|
+
},
|
|
4780
|
+
{
|
|
4781
|
+
id: 'sf-mono',
|
|
4782
|
+
name: 'SFMono-Regular',
|
|
4783
|
+
cssValue: 'SFMono-Regular',
|
|
4784
|
+
cssFamily: 'SFMono-Regular, Menlo, Consolas, monospace',
|
|
4785
|
+
label: 'SF Mono',
|
|
4786
|
+
group: '等宽字体'
|
|
4787
|
+
},
|
|
4788
|
+
{
|
|
4789
|
+
id: 'menlo',
|
|
4790
|
+
name: 'Menlo',
|
|
4791
|
+
cssValue: 'Menlo',
|
|
4792
|
+
cssFamily: 'Menlo, SFMono-Regular, Consolas, monospace',
|
|
4793
|
+
label: 'Menlo',
|
|
4794
|
+
group: '等宽字体'
|
|
4795
|
+
},
|
|
4796
|
+
{
|
|
4797
|
+
id: 'consolas',
|
|
4798
|
+
name: 'Consolas',
|
|
4799
|
+
cssValue: 'Consolas',
|
|
4800
|
+
cssFamily: 'Consolas, "Courier New", monospace',
|
|
4801
|
+
label: 'Consolas',
|
|
4802
|
+
group: '等宽字体'
|
|
4803
|
+
},
|
|
4804
|
+
{
|
|
4805
|
+
id: 'courier-new',
|
|
4806
|
+
name: 'Courier New',
|
|
4807
|
+
cssValue: '"Courier New"',
|
|
4808
|
+
cssFamily: '"Courier New", Courier, monospace',
|
|
4809
|
+
label: 'Courier New',
|
|
4810
|
+
group: '等宽字体'
|
|
4811
|
+
},
|
|
4812
|
+
{
|
|
4813
|
+
id: 'monaco',
|
|
4814
|
+
name: 'Monaco',
|
|
4815
|
+
cssValue: 'Monaco',
|
|
4816
|
+
cssFamily: 'Monaco, Menlo, Consolas, monospace',
|
|
4817
|
+
label: 'Monaco',
|
|
4818
|
+
group: '等宽字体'
|
|
4819
|
+
}
|
|
4820
|
+
];
|
|
4821
|
+
function officeFontFamilyLabel(value) {
|
|
4822
|
+
const firstFamily = value.split(',')[0]?.trim() || value.trim();
|
|
4823
|
+
return firstFamily.replace(/^(['"])(.*)\1$/, '$2');
|
|
4824
|
+
}
|
|
4825
|
+
function normalizeOfficeFontFamily(value) {
|
|
4826
|
+
return officeFontFamilyLabel(value).toLocaleLowerCase();
|
|
4827
|
+
}
|
|
4828
|
+
const browserScalarFunctionArities = new Map([
|
|
4829
|
+
[
|
|
4830
|
+
'ABS',
|
|
4831
|
+
[
|
|
4832
|
+
1,
|
|
4833
|
+
1
|
|
4834
|
+
]
|
|
4835
|
+
],
|
|
4836
|
+
[
|
|
4837
|
+
'AND',
|
|
4838
|
+
[
|
|
4839
|
+
1,
|
|
4840
|
+
255
|
|
4841
|
+
]
|
|
4842
|
+
],
|
|
4843
|
+
[
|
|
4844
|
+
'AVERAGE',
|
|
4845
|
+
[
|
|
4846
|
+
1,
|
|
4847
|
+
255
|
|
4848
|
+
]
|
|
4849
|
+
],
|
|
4850
|
+
[
|
|
4851
|
+
'COLUMN',
|
|
4852
|
+
[
|
|
4853
|
+
0,
|
|
4854
|
+
0
|
|
4855
|
+
]
|
|
4856
|
+
],
|
|
4857
|
+
[
|
|
4858
|
+
'CONCAT',
|
|
4859
|
+
[
|
|
4860
|
+
1,
|
|
4861
|
+
255
|
|
4862
|
+
]
|
|
4863
|
+
],
|
|
4864
|
+
[
|
|
4865
|
+
'CONCATENATE',
|
|
4866
|
+
[
|
|
4867
|
+
1,
|
|
4868
|
+
255
|
|
4869
|
+
]
|
|
4870
|
+
],
|
|
4871
|
+
[
|
|
4872
|
+
'COUNT',
|
|
4873
|
+
[
|
|
4874
|
+
1,
|
|
4875
|
+
255
|
|
4876
|
+
]
|
|
4877
|
+
],
|
|
4878
|
+
[
|
|
4879
|
+
'COUNTA',
|
|
4880
|
+
[
|
|
4881
|
+
1,
|
|
4882
|
+
255
|
|
4883
|
+
]
|
|
4884
|
+
],
|
|
4885
|
+
[
|
|
4886
|
+
'FALSE',
|
|
4887
|
+
[
|
|
4888
|
+
0,
|
|
4889
|
+
0
|
|
4890
|
+
]
|
|
4891
|
+
],
|
|
4892
|
+
[
|
|
4893
|
+
'IF',
|
|
4894
|
+
[
|
|
4895
|
+
2,
|
|
4896
|
+
3
|
|
4897
|
+
]
|
|
4898
|
+
],
|
|
4899
|
+
[
|
|
4900
|
+
'IFERROR',
|
|
4901
|
+
[
|
|
4902
|
+
2,
|
|
4903
|
+
2
|
|
4904
|
+
]
|
|
4905
|
+
],
|
|
4906
|
+
[
|
|
4907
|
+
'MAX',
|
|
4908
|
+
[
|
|
4909
|
+
1,
|
|
4910
|
+
255
|
|
4911
|
+
]
|
|
4912
|
+
],
|
|
4913
|
+
[
|
|
4914
|
+
'MIN',
|
|
4915
|
+
[
|
|
4916
|
+
1,
|
|
4917
|
+
255
|
|
4918
|
+
]
|
|
4919
|
+
],
|
|
4920
|
+
[
|
|
4921
|
+
'MOD',
|
|
4922
|
+
[
|
|
4923
|
+
2,
|
|
4924
|
+
2
|
|
4925
|
+
]
|
|
4926
|
+
],
|
|
4927
|
+
[
|
|
4928
|
+
'NA',
|
|
4929
|
+
[
|
|
4930
|
+
0,
|
|
4931
|
+
0
|
|
4932
|
+
]
|
|
4933
|
+
],
|
|
4934
|
+
[
|
|
4935
|
+
'NOT',
|
|
4936
|
+
[
|
|
4937
|
+
1,
|
|
4938
|
+
1
|
|
4939
|
+
]
|
|
4940
|
+
],
|
|
4941
|
+
[
|
|
4942
|
+
'OR',
|
|
4943
|
+
[
|
|
4944
|
+
1,
|
|
4945
|
+
255
|
|
4946
|
+
]
|
|
4947
|
+
],
|
|
4948
|
+
[
|
|
4949
|
+
'PI',
|
|
4950
|
+
[
|
|
4951
|
+
0,
|
|
4952
|
+
0
|
|
4953
|
+
]
|
|
4954
|
+
],
|
|
4955
|
+
[
|
|
4956
|
+
'POWER',
|
|
4957
|
+
[
|
|
4958
|
+
2,
|
|
4959
|
+
2
|
|
4960
|
+
]
|
|
4961
|
+
],
|
|
4962
|
+
[
|
|
4963
|
+
'ROUND',
|
|
4964
|
+
[
|
|
4965
|
+
2,
|
|
4966
|
+
2
|
|
4967
|
+
]
|
|
4968
|
+
],
|
|
4969
|
+
[
|
|
4970
|
+
'ROW',
|
|
4971
|
+
[
|
|
4972
|
+
0,
|
|
4973
|
+
0
|
|
4974
|
+
]
|
|
4975
|
+
],
|
|
4976
|
+
[
|
|
4977
|
+
'SQRT',
|
|
4978
|
+
[
|
|
4979
|
+
1,
|
|
4980
|
+
1
|
|
4981
|
+
]
|
|
4982
|
+
],
|
|
4983
|
+
[
|
|
4984
|
+
'SUBTOTAL',
|
|
4985
|
+
[
|
|
4986
|
+
2,
|
|
4987
|
+
255
|
|
4988
|
+
]
|
|
4989
|
+
],
|
|
4990
|
+
[
|
|
4991
|
+
'SUM',
|
|
4992
|
+
[
|
|
4993
|
+
1,
|
|
4994
|
+
255
|
|
4995
|
+
]
|
|
4996
|
+
],
|
|
4997
|
+
[
|
|
4998
|
+
'TRUE',
|
|
4999
|
+
[
|
|
5000
|
+
0,
|
|
5001
|
+
0
|
|
5002
|
+
]
|
|
5003
|
+
]
|
|
5004
|
+
]);
|
|
5005
|
+
function normalizeSpreadsheetFunctionName(name) {
|
|
5006
|
+
let normalized = name.toUpperCase();
|
|
5007
|
+
while(normalized.startsWith('_XLFN.') || normalized.startsWith('_XLWS.'))normalized = normalized.slice(6);
|
|
5008
|
+
return normalized;
|
|
5009
|
+
}
|
|
5010
|
+
function evaluateParserSubtotal(parameters) {
|
|
5011
|
+
const codeValue = parserNumericValue(parameters[0]);
|
|
5012
|
+
if (void 0 === codeValue) return 'VALUE!';
|
|
5013
|
+
const code = Math.trunc(codeValue);
|
|
5014
|
+
const values = parameters.slice(1).flatMap((parameter)=>flattenParserValues(parameter));
|
|
5015
|
+
for (const value of values){
|
|
5016
|
+
const error = parserErrorValue(value);
|
|
5017
|
+
if (error) return error;
|
|
5018
|
+
}
|
|
5019
|
+
switch(code){
|
|
5020
|
+
case 1:
|
|
5021
|
+
case 101:
|
|
5022
|
+
return parserSubtotalNumeric(values, 'average');
|
|
5023
|
+
case 2:
|
|
5024
|
+
case 102:
|
|
5025
|
+
return values.filter((value)=>'number' == typeof value).length;
|
|
5026
|
+
case 3:
|
|
5027
|
+
case 103:
|
|
5028
|
+
return values.filter((value)=>null != value).length;
|
|
5029
|
+
case 4:
|
|
5030
|
+
case 104:
|
|
5031
|
+
return parserSubtotalNumeric(values, 'max');
|
|
5032
|
+
case 5:
|
|
5033
|
+
case 105:
|
|
5034
|
+
return parserSubtotalNumeric(values, 'min');
|
|
5035
|
+
case 6:
|
|
5036
|
+
case 106:
|
|
5037
|
+
return parserSubtotalNumeric(values, 'product');
|
|
5038
|
+
case 7:
|
|
5039
|
+
case 107:
|
|
5040
|
+
return parserSubtotalNumeric(values, 'stddev');
|
|
5041
|
+
case 8:
|
|
5042
|
+
case 108:
|
|
5043
|
+
return parserSubtotalNumeric(values, 'stddevp');
|
|
5044
|
+
case 9:
|
|
5045
|
+
case 109:
|
|
5046
|
+
return parserSubtotalNumeric(values, 'sum');
|
|
5047
|
+
case 10:
|
|
5048
|
+
case 110:
|
|
5049
|
+
return parserSubtotalNumeric(values, 'var');
|
|
5050
|
+
case 11:
|
|
5051
|
+
case 111:
|
|
5052
|
+
return parserSubtotalNumeric(values, 'varp');
|
|
5053
|
+
default:
|
|
5054
|
+
return 'VALUE!';
|
|
5055
|
+
}
|
|
5056
|
+
}
|
|
5057
|
+
function parserSubtotalNumeric(values, operation) {
|
|
5058
|
+
const numbers = values.filter((value)=>'number' == typeof value && Number.isFinite(value));
|
|
5059
|
+
const count = numbers.length;
|
|
5060
|
+
const sum = numbers.reduce((total, value)=>total + value, 0);
|
|
5061
|
+
if ('sum' === operation) return finiteParserNumber(sum);
|
|
5062
|
+
if ('average' === operation) return count ? finiteParserNumber(sum / count) : 'DIV/0!';
|
|
5063
|
+
if ('max' === operation) return finiteParserNumber(Math.max(...numbers, 0));
|
|
5064
|
+
if ('min' === operation) return finiteParserNumber(Math.min(...numbers, 0));
|
|
5065
|
+
if ('product' === operation) return finiteParserNumber(count ? numbers.reduce((total, value)=>total * value, 1) : 0);
|
|
5066
|
+
if ('stddev' === operation || 'var' === operation) {
|
|
5067
|
+
if (count < 2) return 'DIV/0!';
|
|
5068
|
+
} else if (0 === count) return 'DIV/0!';
|
|
5069
|
+
const mean = sum / count;
|
|
5070
|
+
const divisor = 'stddev' === operation || 'var' === operation ? count - 1 : count;
|
|
5071
|
+
const variance = numbers.reduce((total, value)=>total + (value - mean) ** 2, 0) / divisor;
|
|
5072
|
+
return finiteParserNumber('stddev' === operation || 'stddevp' === operation ? Math.sqrt(variance) : variance);
|
|
5073
|
+
}
|
|
5074
|
+
function flattenParserValues(value) {
|
|
5075
|
+
if (!Array.isArray(value)) return [
|
|
5076
|
+
value
|
|
5077
|
+
];
|
|
5078
|
+
return value.flatMap((entry)=>flattenParserValues(entry));
|
|
5079
|
+
}
|
|
5080
|
+
function parserNumericValue(value) {
|
|
5081
|
+
if ('number' == typeof value) return Number.isFinite(value) ? value : void 0;
|
|
5082
|
+
if ('boolean' == typeof value) return value ? 1 : 0;
|
|
5083
|
+
if ('string' != typeof value || !value.trim()) return;
|
|
5084
|
+
const parsed = Number(value);
|
|
5085
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
5086
|
+
}
|
|
5087
|
+
function parserErrorValue(value) {
|
|
5088
|
+
if (value instanceof Error) return value.message.startsWith('#') ? value.message.slice(1) : 'VALUE!';
|
|
5089
|
+
return 'string' == typeof value && value.startsWith('#') ? value.slice(1) : void 0;
|
|
5090
|
+
}
|
|
5091
|
+
function finiteParserNumber(value) {
|
|
5092
|
+
return Number.isFinite(value) ? value : 'NUM!';
|
|
5093
|
+
}
|
|
5094
|
+
function normalizeFormulaForFortuneParser(formula) {
|
|
5095
|
+
const source = formula.replace(/^=/, '');
|
|
5096
|
+
let output = '';
|
|
5097
|
+
let cursor = 0;
|
|
5098
|
+
let bracketDepth = 0;
|
|
5099
|
+
while(cursor < source.length){
|
|
5100
|
+
const character = source[cursor] ?? '';
|
|
5101
|
+
if ('"' === character || "'" === character) {
|
|
5102
|
+
const quote = character;
|
|
5103
|
+
output += quote;
|
|
5104
|
+
cursor += 1;
|
|
5105
|
+
while(cursor < source.length){
|
|
5106
|
+
const quoted = source[cursor] ?? '';
|
|
5107
|
+
output += quoted;
|
|
5108
|
+
cursor += 1;
|
|
5109
|
+
if (quoted !== quote) continue;
|
|
5110
|
+
if (source[cursor] === quote) {
|
|
5111
|
+
output += quote;
|
|
5112
|
+
cursor += 1;
|
|
5113
|
+
continue;
|
|
5114
|
+
}
|
|
5115
|
+
break;
|
|
5116
|
+
}
|
|
5117
|
+
continue;
|
|
5118
|
+
}
|
|
5119
|
+
if ('[' === character) {
|
|
5120
|
+
bracketDepth += 1;
|
|
5121
|
+
output += character;
|
|
5122
|
+
cursor += 1;
|
|
5123
|
+
continue;
|
|
5124
|
+
}
|
|
5125
|
+
if (']' === character && bracketDepth > 0) {
|
|
5126
|
+
bracketDepth -= 1;
|
|
5127
|
+
output += character;
|
|
5128
|
+
cursor += 1;
|
|
5129
|
+
continue;
|
|
5130
|
+
}
|
|
5131
|
+
if (0 === bracketDepth && isAsciiFormulaNameStart(character)) {
|
|
5132
|
+
const start = cursor;
|
|
5133
|
+
cursor += 1;
|
|
5134
|
+
while(cursor < source.length && isAsciiFormulaNameContinue(source[cursor] ?? ''))cursor += 1;
|
|
5135
|
+
const token = source.slice(start, cursor);
|
|
5136
|
+
const normalized = token.toUpperCase();
|
|
5137
|
+
const normalizedFunction = normalizeSpreadsheetFunctionName(token);
|
|
5138
|
+
const previous = adjacentNonWhitespace(source, start - 1, -1);
|
|
5139
|
+
const next = adjacentNonWhitespace(source, cursor, 1);
|
|
5140
|
+
if ('(' === next && normalizedFunction !== normalized) output += normalizedFunction;
|
|
5141
|
+
else if (('TRUE' === normalized || 'FALSE' === normalized) && '!' !== previous && '!' !== next && '(' !== next) output += `${token}()`;
|
|
5142
|
+
else output += token;
|
|
5143
|
+
continue;
|
|
5144
|
+
}
|
|
5145
|
+
output += character;
|
|
5146
|
+
cursor += 1;
|
|
5147
|
+
}
|
|
5148
|
+
return output;
|
|
5149
|
+
}
|
|
5150
|
+
function adjacentNonWhitespace(value, start, direction) {
|
|
5151
|
+
let cursor = start;
|
|
5152
|
+
while(cursor >= 0 && cursor < value.length){
|
|
5153
|
+
const character = value[cursor];
|
|
5154
|
+
if (character && !/\s/u.test(character)) return character;
|
|
5155
|
+
cursor += direction;
|
|
5156
|
+
}
|
|
5157
|
+
}
|
|
5158
|
+
function isAsciiFormulaNameStart(value) {
|
|
5159
|
+
return /[A-Za-z_]/u.test(value);
|
|
5160
|
+
}
|
|
5161
|
+
function isAsciiFormulaNameContinue(value) {
|
|
5162
|
+
return /[A-Za-z0-9_.]/u.test(value);
|
|
5163
|
+
}
|
|
5164
|
+
export { DEFAULT_DOCUMENT_INDEX_OPTIONS, DEFAULT_DOCUMENT_TABLE_OF_CONTENTS_OPTIONS, DOCUMENT_HIGHLIGHT_ATTRIBUTE, DOCUMENT_NO_PROOF_ATTRIBUTE, DOCUMENT_PARAGRAPH_BORDERS_ATTRIBUTE, DOCUMENT_PARAGRAPH_BORDER_EDGES, DOCUMENT_PARAGRAPH_BORDER_STYLES, DOCUMENT_PARAGRAPH_ID_ATTRIBUTE, DOCUMENT_PARAGRAPH_TEXT_ID_ATTRIBUTE, DOCUMENT_PROOFING_LANGUAGES_ATTRIBUTE, DOCUMENT_RUN_BORDER_ATTRIBUTE, DOCUMENT_RUN_BORDER_STYLES, DOCUMENT_RUN_SHADING_ATTRIBUTE, DOCUMENT_SCRIPT_FONTS_ATTRIBUTE, DOCUMENT_SCRIPT_FONT_SLOT_ATTRIBUTE, DocumentParagraphIdentity, DocxThemePatchCollector, OFFICE_KERNEL_SPREADSHEET_MAX_ROWS, OoxmlPackage, WORK_TEMPLATES as officeTemplates, applyDocumentParagraphIdentityToElement, attribute, browserScalarFunctionArities, buildDocumentIndexEntries, buildDocumentTableOfContentsEntries, bytesToDataUrl, childPath, collectWorkDocumentOutline, contentTypeForPart, createDocumentParagraphIdentity, createDocumentParagraphIdentityRegistry, createWorkArtifact as createArtifact, createWorkId as createOfficeId, cssDocumentFontFamily, currentWorkDocumentOutlineItem, decodeXmlBytes, descendants, directChild, directChildren, documentBorderPresentation, documentFontNameFromCssFamily, documentHasIntegrityFeature, documentHighlightCssColor, documentHighlightDomAttributes, documentHighlightForCssColor, documentHighlightFromDocxValue, documentHighlightFromElement, documentIndexEntryFromElement, documentIndexEntryHtml, documentIndexHtml, documentIndexValueFromElement, documentNoProofFromElement, documentParagraphBordersDomAttributes, documentParagraphIdentityFromElement, documentParagraphShadingDomAttributes, documentProofingDomAttributes, documentProofingLanguagesFromElement, documentRunBorderDomAttributes, documentRunBorderIsVisible, documentRunShadingDomAttributes, documentScriptFontDirectFamily, documentScriptFontFallbackSlots, documentScriptFontFamily, documentScriptFontFamilyForRendering, documentScriptFontSegments, documentScriptFontSlotFromElement, documentScriptFontSlotFromHint, documentScriptFontsDomAttributes, documentScriptFontsForAllText, documentScriptFontsFromElement, documentTableOfContentsHtml, documentTableOfContentsValueFromElement, evaluateParserSubtotal, firstDescendant, isDocumentParagraphArtBorderStyle, isOfficeKernelSpreadsheetError, normalizeCssColor, normalizeDocumentFontName, normalizeDocumentHighlight, normalizeDocumentIndexEntry, normalizeDocumentIndexEntryDraft, normalizeDocumentIndexOptions, normalizeDocumentIndexValue, normalizeDocumentIndexesHtml, normalizeDocumentLanguageTag, normalizeDocumentNoProof, normalizeDocumentParagraphBorder, normalizeDocumentParagraphBorders, normalizeDocumentParagraphId, normalizeDocumentParagraphIdentity, normalizeDocumentProofingLanguages, normalizeDocumentRunBorder, normalizeDocumentRunShading, normalizeDocumentScriptFontHint, normalizeDocumentScriptFontSlot, normalizeDocumentScriptFonts, normalizeDocumentTableOfContentsHtml, normalizeDocumentTableOfContentsOptions, normalizeDocumentTableOfContentsValue, normalizeDocumentThemeFont, normalizeFormulaForFortuneParser, normalizeOfficeFontFamily, normalizeSpreadsheetFunctionName, officeFontFamilies, officeFontFamilyLabel, parseDocumentParagraphBorders, parseDocumentParagraphBordersElement, parseDocumentParagraphShading, parseDocumentParagraphShadingElement, parseDocumentProofingLanguages, parseDocumentRunBorder, parseDocumentRunBorderElement, parseDocumentRunShading, parseDocumentRunShadingElement, parseDocumentScriptFonts, parseDocumentTableOfContentsInstruction, parseDocxThemeReference, parseXml, patchDocumentProofingLanguages, patchDocumentScriptFonts, patchDocxThemeReferences, primeDocumentIntegrityFeatures, resolvePartTarget, serializeDocumentParagraphBorders, serializeDocumentParagraphShading, serializeDocumentProofingLanguages, serializeDocumentRunBorder, serializeDocumentRunShading, serializeDocumentScriptFonts, serializeDocxThemeReference, serializeUtf8Xml, uniqueDocumentParagraphIdentity, visibleWorkDocumentOutlineItems, workDocumentOutlineLevel, work_document_paragraph_shading_DOCUMENT_PARAGRAPH_SHADING_PATTERNS, xmlContainsAnyElement, xmlNamespacePrefix };
|