@a3s-lab/office 0.25.0 → 0.26.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 +2 -1
- package/dist/0~spreadsheet-editor.js +20549 -19499
- package/dist/164.js +139 -80
- package/dist/6282.js +221 -235
- package/dist/9424.js +16 -0
- package/dist/internal/features/work/editors/spreadsheet-command-controller.d.ts +18 -9
- package/dist/internal/features/work/editors/spreadsheet-operation-projection.d.ts +6 -0
- package/dist/internal/features/work/editors/spreadsheet-rich-text-dom-selection.d.ts +11 -0
- package/dist/internal/features/work/editors/spreadsheet-rich-text-paste.d.ts +22 -0
- package/dist/internal/features/work/editors/spreadsheet-rich-text-selection-controller.d.ts +38 -0
- package/dist/internal/features/work/editors/spreadsheet-rich-text-selection-format.d.ts +26 -0
- package/dist/internal/features/work/work-css-color.d.ts +1 -0
- package/dist/internal/features/work/work-document-paragraph-shading.d.ts +1 -1
- package/dist/internal/features/work/work-xlsx-rich-text-edit.d.ts +28 -0
- package/dist/internal/features/work/work-xlsx-rich-text-model.d.ts +40 -0
- package/dist/internal/features/work/work-xlsx-rich-text.d.ts +4 -18
- package/dist/office-kernel.wasm +0 -0
- package/docs/latest/en/browser-editor-architecture.md +27 -0
- package/package.json +1 -1
package/dist/164.js
CHANGED
|
@@ -3532,19 +3532,136 @@ function work_spreadsheet_page_setup_boundedNumber(value, minimum, maximum, fall
|
|
|
3532
3532
|
}
|
|
3533
3533
|
const MAX_XLSX_RICH_TEXT_CELL_CHARACTERS = 32767;
|
|
3534
3534
|
const MAX_XLSX_RICH_TEXT_RUNS_PER_CELL = 512;
|
|
3535
|
-
const
|
|
3536
|
-
const
|
|
3535
|
+
const MAX_XLSX_RICH_TEXT_FONT_NAME_CHARACTERS = 128;
|
|
3536
|
+
const MAX_XLSX_RICH_TEXT_FONT_SIZE = 409;
|
|
3537
|
+
function normalizeXlsxRichTextEditSource(cell) {
|
|
3538
|
+
if (cell?.f) return null;
|
|
3539
|
+
if (cell) {
|
|
3540
|
+
const rich = normalizeXlsxRichTextCell(cell);
|
|
3541
|
+
if (rich) return rich;
|
|
3542
|
+
}
|
|
3543
|
+
const text = cell?.v;
|
|
3544
|
+
if (void 0 !== text && ('string' != typeof text || text.length > MAX_XLSX_RICH_TEXT_CELL_CHARACTERS || !validXlsxRichText(text))) return null;
|
|
3545
|
+
const value = text ?? '';
|
|
3546
|
+
return {
|
|
3547
|
+
runs: value ? [
|
|
3548
|
+
xlsxRichTextBaseRun(cell, value)
|
|
3549
|
+
] : [],
|
|
3550
|
+
text: value
|
|
3551
|
+
};
|
|
3552
|
+
}
|
|
3553
|
+
function xlsxRichTextBaseRun(cell, text) {
|
|
3554
|
+
const run = {
|
|
3555
|
+
v: text
|
|
3556
|
+
};
|
|
3557
|
+
if (1 === Number(cell?.bl)) run.bl = 1;
|
|
3558
|
+
if (1 === Number(cell?.it)) run.it = 1;
|
|
3559
|
+
if (1 === Number(cell?.cl)) run.cl = 1;
|
|
3560
|
+
const underline = Number(cell?.un);
|
|
3561
|
+
if (Number.isSafeInteger(underline) && underline >= 1 && underline <= 4) run.un = underline;
|
|
3562
|
+
if ('string' == typeof cell?.ff && cell.ff.trim() && cell.ff.trim().length <= MAX_XLSX_RICH_TEXT_FONT_NAME_CHARACTERS) run.ff = cell.ff.trim();
|
|
3563
|
+
const size = Number(cell?.fs);
|
|
3564
|
+
if (Number.isFinite(size) && size >= 1 && size <= MAX_XLSX_RICH_TEXT_FONT_SIZE) run.fs = size;
|
|
3565
|
+
const color = normalizeXlsxRichTextColor(cell?.fc);
|
|
3566
|
+
if (color) {
|
|
3567
|
+
run.fc = color;
|
|
3568
|
+
const origin = normalizeXlsxSemanticColorOrigin(xlsxCellStyleOrigin(cell ?? {})?.fontColor);
|
|
3569
|
+
if (origin && xlsxSemanticColorMatchesValue(origin, color)) run.a3sXlsxColorOrigin = origin;
|
|
3570
|
+
}
|
|
3571
|
+
return run;
|
|
3572
|
+
}
|
|
3573
|
+
function normalizeXlsxRichTextCell(cell) {
|
|
3574
|
+
if (cell.f || cell.ct?.t !== 'inlineStr' || !Array.isArray(cell.ct.s)) return null;
|
|
3575
|
+
if (!cell.ct.s.length || cell.ct.s.length > MAX_XLSX_RICH_TEXT_RUNS_PER_CELL) return null;
|
|
3576
|
+
const runs = [];
|
|
3577
|
+
let characterCount = 0;
|
|
3578
|
+
for (const candidate of cell.ct.s){
|
|
3579
|
+
const run = normalizeXlsxRichTextRun(candidate);
|
|
3580
|
+
if (!run) return null;
|
|
3581
|
+
if (run.v) {
|
|
3582
|
+
characterCount += run.v.length;
|
|
3583
|
+
if (characterCount > MAX_XLSX_RICH_TEXT_CELL_CHARACTERS) return null;
|
|
3584
|
+
runs.push(run);
|
|
3585
|
+
}
|
|
3586
|
+
}
|
|
3587
|
+
const text = runs.map((run)=>run.v).join('');
|
|
3588
|
+
return runs.length && text ? {
|
|
3589
|
+
runs,
|
|
3590
|
+
text
|
|
3591
|
+
} : null;
|
|
3592
|
+
}
|
|
3593
|
+
function normalizeXlsxRichTextRun(value) {
|
|
3594
|
+
if (!work_xlsx_rich_text_model_isRecord(value) || 'string' != typeof value.v || !validXlsxRichText(value.v)) return null;
|
|
3595
|
+
const run = {
|
|
3596
|
+
v: value.v
|
|
3597
|
+
};
|
|
3598
|
+
copyToggle(value, run, 'bl');
|
|
3599
|
+
copyToggle(value, run, 'it');
|
|
3600
|
+
copyToggle(value, run, 'cl');
|
|
3601
|
+
if ('string' == typeof value.ff && value.ff.trim() && value.ff.trim().length <= MAX_XLSX_RICH_TEXT_FONT_NAME_CHARACTERS) run.ff = value.ff.trim();
|
|
3602
|
+
if ('number' == typeof value.fs && Number.isFinite(value.fs) && value.fs >= 1 && value.fs <= MAX_XLSX_RICH_TEXT_FONT_SIZE) run.fs = value.fs;
|
|
3603
|
+
const color = normalizeXlsxRichTextColor(value.fc);
|
|
3604
|
+
if (color) run.fc = color;
|
|
3605
|
+
const underline = Number(value.un);
|
|
3606
|
+
if (Number.isSafeInteger(underline) && underline >= 0 && underline <= 4 && void 0 !== value.un) run.un = underline;
|
|
3607
|
+
const colorOrigin = normalizeXlsxSemanticColorOrigin(value.a3sXlsxColorOrigin);
|
|
3608
|
+
if (colorOrigin) run.a3sXlsxColorOrigin = colorOrigin;
|
|
3609
|
+
return run;
|
|
3610
|
+
}
|
|
3611
|
+
function normalizeXlsxRichTextColor(value) {
|
|
3612
|
+
const rgb = xlsxRgbColor(value);
|
|
3613
|
+
return rgb ? `#${rgb.slice(-6).toLowerCase()}` : null;
|
|
3614
|
+
}
|
|
3615
|
+
function coalesceXlsxRichTextRuns(source) {
|
|
3616
|
+
const result = [];
|
|
3617
|
+
for (const run of source){
|
|
3618
|
+
if (!run.v) continue;
|
|
3619
|
+
const previous = result.at(-1);
|
|
3620
|
+
if (previous && sameXlsxRichTextRunStyle(previous, run)) previous.v += run.v;
|
|
3621
|
+
else result.push({
|
|
3622
|
+
...run
|
|
3623
|
+
});
|
|
3624
|
+
}
|
|
3625
|
+
return result;
|
|
3626
|
+
}
|
|
3627
|
+
function sameXlsxRichTextRunStyle(left, right) {
|
|
3628
|
+
return left.bl === right.bl && left.cl === right.cl && left.fc === right.fc && left.ff === right.ff && left.fs === right.fs && left.it === right.it && left.un === right.un && JSON.stringify(left.a3sXlsxColorOrigin) === JSON.stringify(right.a3sXlsxColorOrigin);
|
|
3629
|
+
}
|
|
3630
|
+
function validXlsxRichText(value) {
|
|
3631
|
+
for(let index = 0; index < value.length; index += 1){
|
|
3632
|
+
const code = value.charCodeAt(index);
|
|
3633
|
+
if (0x09 !== code && 0x0a !== code && 0x0d !== code && (!(code >= 0x20) || !(code <= 0xd7ff)) && (!(code >= 0xe000) || !(code <= 0xfffd))) {
|
|
3634
|
+
if (isHighSurrogate(code) && index + 1 < value.length && isLowSurrogate(value.charCodeAt(index + 1))) {
|
|
3635
|
+
index += 1;
|
|
3636
|
+
continue;
|
|
3637
|
+
}
|
|
3638
|
+
return false;
|
|
3639
|
+
}
|
|
3640
|
+
}
|
|
3641
|
+
return true;
|
|
3642
|
+
}
|
|
3643
|
+
function isHighSurrogate(value) {
|
|
3644
|
+
return value >= 0xd800 && value <= 0xdbff;
|
|
3645
|
+
}
|
|
3646
|
+
function isLowSurrogate(value) {
|
|
3647
|
+
return value >= 0xdc00 && value <= 0xdfff;
|
|
3648
|
+
}
|
|
3649
|
+
function copyToggle(source, target, key) {
|
|
3650
|
+
if (1 === Number(source[key])) target[key] = 1;
|
|
3651
|
+
else if (0 === Number(source[key]) && void 0 !== source[key]) target[key] = 0;
|
|
3652
|
+
}
|
|
3653
|
+
function work_xlsx_rich_text_model_isRecord(value) {
|
|
3654
|
+
return 'object' == typeof value && null !== value && !Array.isArray(value);
|
|
3655
|
+
}
|
|
3537
3656
|
const MAX_XLSX_SHARED_RICH_TEXT_ITEMS = 10000;
|
|
3538
|
-
const MAX_XLSX_FONT_NAME_CHARACTERS = 128;
|
|
3539
|
-
const MAX_XLSX_FONT_SIZE = 409;
|
|
3540
3657
|
function createXlsxRichTextReadContext(options) {
|
|
3541
3658
|
const colors = createXlsxColorResolver(options.styles, options.theme);
|
|
3542
3659
|
const sharedStrings = readRichSharedStrings(options.sharedStrings, colors);
|
|
3543
3660
|
return {
|
|
3544
3661
|
colors,
|
|
3545
3662
|
hasRichSharedStrings: sharedStrings.size > 0,
|
|
3546
|
-
remainingCells:
|
|
3547
|
-
remainingRuns:
|
|
3663
|
+
remainingCells: 10000,
|
|
3664
|
+
remainingRuns: 100000,
|
|
3548
3665
|
sharedStrings
|
|
3549
3666
|
};
|
|
3550
3667
|
}
|
|
@@ -3573,7 +3690,7 @@ function readXlsxRichTextCells(worksheet, context) {
|
|
|
3573
3690
|
...run
|
|
3574
3691
|
}));
|
|
3575
3692
|
const text = runs.map((run)=>run.v).join('');
|
|
3576
|
-
if (text && !(text.length >
|
|
3693
|
+
if (text && !(text.length > 32767)) {
|
|
3577
3694
|
context.remainingCells -= 1;
|
|
3578
3695
|
context.remainingRuns -= runs.length;
|
|
3579
3696
|
result.push({
|
|
@@ -3604,8 +3721,8 @@ function applyImportedXlsxRichText(cell, richText) {
|
|
|
3604
3721
|
function patchSpreadsheetRichTextFontRuns(cell, patch) {
|
|
3605
3722
|
if (!fontPatchHasValues(patch) || cell.ct?.t !== 'inlineStr') return cell;
|
|
3606
3723
|
const source = cell.ct.s;
|
|
3607
|
-
if (!Array.isArray(source) || !source.length || source.some((run)=>!work_xlsx_rich_text_isRecord(run) || 'string' != typeof run.v || !
|
|
3608
|
-
const normalizedColor = void 0 === patch.fontColor ? void 0 :
|
|
3724
|
+
if (!Array.isArray(source) || !source.length || source.some((run)=>!work_xlsx_rich_text_isRecord(run) || 'string' != typeof run.v || !validXlsxRichText(run.v))) return cell;
|
|
3725
|
+
const normalizedColor = void 0 === patch.fontColor ? void 0 : normalizeXlsxRichTextColor(patch.fontColor);
|
|
3609
3726
|
const runs = source.map((run)=>{
|
|
3610
3727
|
const next = {
|
|
3611
3728
|
...run
|
|
@@ -3631,15 +3748,15 @@ function patchSpreadsheetRichTextFontRuns(cell, patch) {
|
|
|
3631
3748
|
};
|
|
3632
3749
|
}
|
|
3633
3750
|
function xlsxRichTextCellText(cell) {
|
|
3634
|
-
return
|
|
3751
|
+
return normalizeXlsxRichTextCell(cell)?.text ?? null;
|
|
3635
3752
|
}
|
|
3636
3753
|
function sheetHasXlsxRichTextCells(sheet) {
|
|
3637
|
-
for (const [, row] of spreadsheet_sparse_sparseArrayEntries(sheet.data))for (const [, cell] of spreadsheet_sparse_sparseArrayEntries(row))if (cell &&
|
|
3754
|
+
for (const [, row] of spreadsheet_sparse_sparseArrayEntries(sheet.data))for (const [, cell] of spreadsheet_sparse_sparseArrayEntries(row))if (cell && normalizeXlsxRichTextCell(cell)) return true;
|
|
3638
3755
|
return false;
|
|
3639
3756
|
}
|
|
3640
3757
|
function xlsxRichTextStyleOrigins(sheet) {
|
|
3641
3758
|
const origins = [];
|
|
3642
|
-
for (const [, row] of spreadsheet_sparse_sparseArrayEntries(sheet.data))for (const [, cell] of spreadsheet_sparse_sparseArrayEntries(row))if (cell) for (const run of
|
|
3759
|
+
for (const [, row] of spreadsheet_sparse_sparseArrayEntries(sheet.data))for (const [, cell] of spreadsheet_sparse_sparseArrayEntries(row))if (cell) for (const run of normalizeXlsxRichTextCell(cell)?.runs ?? []){
|
|
3643
3760
|
const fontColor = normalizeXlsxSemanticColorOrigin(run.a3sXlsxColorOrigin);
|
|
3644
3761
|
if (fontColor && run.fc && xlsxSemanticColorMatchesValue(fontColor, run.fc)) origins.push({
|
|
3645
3762
|
fontColor
|
|
@@ -3657,12 +3774,12 @@ function writeXlsxRichTextCells(worksheet, sheet, semanticPalette) {
|
|
|
3657
3774
|
]
|
|
3658
3775
|
] : [];
|
|
3659
3776
|
}));
|
|
3660
|
-
let remainingCells =
|
|
3661
|
-
let remainingRuns =
|
|
3777
|
+
let remainingCells = 10000;
|
|
3778
|
+
let remainingRuns = 100000;
|
|
3662
3779
|
for (const [row, values] of spreadsheet_sparse_sparseArrayEntries(sheet.data))for (const [column, cell] of spreadsheet_sparse_sparseArrayEntries(values)){
|
|
3663
3780
|
if (remainingCells <= 0 || remainingRuns <= 0) return;
|
|
3664
3781
|
if (!cell) continue;
|
|
3665
|
-
const richText =
|
|
3782
|
+
const richText = normalizeXlsxRichTextCell(cell);
|
|
3666
3783
|
if (!richText || richText.runs.length > remainingRuns) continue;
|
|
3667
3784
|
const element = elements.get(xlsxCellAddress(row, column));
|
|
3668
3785
|
if (element) {
|
|
@@ -3677,9 +3794,9 @@ function readRichSharedStrings(document, colors) {
|
|
|
3677
3794
|
const result = new Map();
|
|
3678
3795
|
let parsedRuns = 0;
|
|
3679
3796
|
for (const [index, item] of directChildren(document.documentElement, 'si').entries()){
|
|
3680
|
-
if (result.size >= MAX_XLSX_SHARED_RICH_TEXT_ITEMS || parsedRuns >=
|
|
3797
|
+
if (result.size >= MAX_XLSX_SHARED_RICH_TEXT_ITEMS || parsedRuns >= 100000) break;
|
|
3681
3798
|
const runs = readRichTextRuns(item, colors);
|
|
3682
|
-
if (runs && !(parsedRuns + runs.length >
|
|
3799
|
+
if (runs && !(parsedRuns + runs.length > 100000)) {
|
|
3683
3800
|
result.set(index, runs);
|
|
3684
3801
|
parsedRuns += runs.length;
|
|
3685
3802
|
}
|
|
@@ -3688,7 +3805,7 @@ function readRichSharedStrings(document, colors) {
|
|
|
3688
3805
|
}
|
|
3689
3806
|
function readRichTextRuns(container, colors) {
|
|
3690
3807
|
const elements = directChildren(container, 'r');
|
|
3691
|
-
if (directChild(container, 't') || !elements.length || elements.length >
|
|
3808
|
+
if (directChild(container, 't') || !elements.length || elements.length > 512) return null;
|
|
3692
3809
|
const runs = [];
|
|
3693
3810
|
let characterCount = 0;
|
|
3694
3811
|
for (const element of elements){
|
|
@@ -3697,7 +3814,7 @@ function readRichTextRuns(container, colors) {
|
|
|
3697
3814
|
const value = textElement.textContent ?? '';
|
|
3698
3815
|
if (value) {
|
|
3699
3816
|
characterCount += value.length;
|
|
3700
|
-
if (characterCount >
|
|
3817
|
+
if (characterCount > 32767 || !validXlsxRichText(value)) return null;
|
|
3701
3818
|
runs.push(readRichTextRun(element, value, colors));
|
|
3702
3819
|
}
|
|
3703
3820
|
}
|
|
@@ -3713,12 +3830,12 @@ function readRichTextRun(element, value, colors) {
|
|
|
3713
3830
|
};
|
|
3714
3831
|
const font = directChild(properties, 'rFont') ?? directChild(properties, 'name');
|
|
3715
3832
|
const fontName = attribute(font ?? properties, 'val')?.trim();
|
|
3716
|
-
if (fontName && fontName.length <=
|
|
3833
|
+
if (fontName && fontName.length <= 128) run.ff = fontName;
|
|
3717
3834
|
if (work_xlsx_rich_text_xlsxToggleEnabled(directChild(properties, 'b'))) run.bl = 1;
|
|
3718
3835
|
if (work_xlsx_rich_text_xlsxToggleEnabled(directChild(properties, 'i'))) run.it = 1;
|
|
3719
3836
|
if (work_xlsx_rich_text_xlsxToggleEnabled(directChild(properties, 'strike'))) run.cl = 1;
|
|
3720
3837
|
const size = finiteNumber(attribute(directChild(properties, 'sz') ?? properties, 'val'));
|
|
3721
|
-
if (null !== size && size >= 1 && size <=
|
|
3838
|
+
if (null !== size && size >= 1 && size <= 409) run.fs = size;
|
|
3722
3839
|
const underline = directChild(properties, 'u');
|
|
3723
3840
|
if (underline) {
|
|
3724
3841
|
const value = spreadsheetUnderlineCellValueFromXlsx(attribute(underline, 'val'));
|
|
@@ -3731,47 +3848,6 @@ function readRichTextRun(element, value, colors) {
|
|
|
3731
3848
|
if (colorOrigin) run.a3sXlsxColorOrigin = colorOrigin;
|
|
3732
3849
|
return run;
|
|
3733
3850
|
}
|
|
3734
|
-
function normalizeRichTextCell(cell) {
|
|
3735
|
-
if (cell.f || cell.ct?.t !== 'inlineStr' || !Array.isArray(cell.ct.s)) return null;
|
|
3736
|
-
if (!cell.ct.s.length || cell.ct.s.length > MAX_XLSX_RICH_TEXT_RUNS_PER_CELL) return null;
|
|
3737
|
-
const runs = [];
|
|
3738
|
-
let characterCount = 0;
|
|
3739
|
-
for (const candidate of cell.ct.s){
|
|
3740
|
-
const run = normalizeRichTextRun(candidate);
|
|
3741
|
-
if (!run) return null;
|
|
3742
|
-
if (run.v) {
|
|
3743
|
-
characterCount += run.v.length;
|
|
3744
|
-
if (characterCount > MAX_XLSX_RICH_TEXT_CELL_CHARACTERS) return null;
|
|
3745
|
-
runs.push(run);
|
|
3746
|
-
}
|
|
3747
|
-
}
|
|
3748
|
-
const text = runs.map((run)=>run.v).join('');
|
|
3749
|
-
return runs.length && text ? {
|
|
3750
|
-
runs,
|
|
3751
|
-
text
|
|
3752
|
-
} : null;
|
|
3753
|
-
}
|
|
3754
|
-
function normalizeRichTextRun(value) {
|
|
3755
|
-
if (!work_xlsx_rich_text_isRecord(value) || 'string' != typeof value.v || !validXmlText(value.v)) return null;
|
|
3756
|
-
const run = {
|
|
3757
|
-
v: value.v
|
|
3758
|
-
};
|
|
3759
|
-
if (1 === Number(value.bl)) run.bl = 1;
|
|
3760
|
-
else if (0 === Number(value.bl) && void 0 !== value.bl) run.bl = 0;
|
|
3761
|
-
if (1 === Number(value.it)) run.it = 1;
|
|
3762
|
-
else if (0 === Number(value.it) && void 0 !== value.it) run.it = 0;
|
|
3763
|
-
if (1 === Number(value.cl)) run.cl = 1;
|
|
3764
|
-
else if (0 === Number(value.cl) && void 0 !== value.cl) run.cl = 0;
|
|
3765
|
-
if ('string' == typeof value.ff && value.ff.trim() && value.ff.trim().length <= MAX_XLSX_FONT_NAME_CHARACTERS) run.ff = value.ff.trim();
|
|
3766
|
-
if ('number' == typeof value.fs && Number.isFinite(value.fs) && value.fs >= 1 && value.fs <= MAX_XLSX_FONT_SIZE) run.fs = value.fs;
|
|
3767
|
-
const color = normalizedColorValue(value.fc);
|
|
3768
|
-
if (color) run.fc = color;
|
|
3769
|
-
const underline = Number(value.un);
|
|
3770
|
-
if (Number.isSafeInteger(underline) && underline >= 0 && underline <= 4 && void 0 !== value.un) run.un = underline;
|
|
3771
|
-
const colorOrigin = normalizeXlsxSemanticColorOrigin(value.a3sXlsxColorOrigin);
|
|
3772
|
-
if (colorOrigin) run.a3sXlsxColorOrigin = colorOrigin;
|
|
3773
|
-
return run;
|
|
3774
|
-
}
|
|
3775
3851
|
function writeRichTextCell(element, richText, semanticPalette) {
|
|
3776
3852
|
for (const child of directChildren(element))if ('v' === child.localName || 'is' === child.localName) child.remove();
|
|
3777
3853
|
element.setAttribute('t', 'inlineStr');
|
|
@@ -3825,10 +3901,6 @@ function writeRichTextRunProperties(document, run, semanticPalette) {
|
|
|
3825
3901
|
function fontPatchHasValues(patch) {
|
|
3826
3902
|
return void 0 !== patch.fontFamily || void 0 !== patch.fontSize || void 0 !== patch.fontColor || void 0 !== patch.bold || void 0 !== patch.italic || void 0 !== patch.underline || void 0 !== patch.strike;
|
|
3827
3903
|
}
|
|
3828
|
-
function normalizedColorValue(value) {
|
|
3829
|
-
const rgb = xlsxRgbColor(value);
|
|
3830
|
-
return rgb ? `#${rgb.slice(-6).toLowerCase()}` : null;
|
|
3831
|
-
}
|
|
3832
3904
|
function work_xlsx_rich_text_xlsxToggleEnabled(element) {
|
|
3833
3905
|
if (!element) return false;
|
|
3834
3906
|
const value = attribute(element, 'val')?.trim().toLowerCase();
|
|
@@ -3844,20 +3916,7 @@ function work_xlsx_rich_text_nonNegativeInteger(value) {
|
|
|
3844
3916
|
const parsed = Number(value);
|
|
3845
3917
|
return Number.isSafeInteger(parsed) ? parsed : null;
|
|
3846
3918
|
}
|
|
3847
|
-
function validXmlText(value) {
|
|
3848
|
-
for(let index = 0; index < value.length; index += 1){
|
|
3849
|
-
const code = value.charCodeAt(index);
|
|
3850
|
-
if (0x09 !== code && 0x0a !== code && 0x0d !== code && (!(code >= 0x20) || !(code <= 0xd7ff)) && (!(code >= 0xe000) || !(code <= 0xfffd))) {
|
|
3851
|
-
if (code >= 0xd800 && code <= 0xdbff && index + 1 < value.length && value.charCodeAt(index + 1) >= 0xdc00 && value.charCodeAt(index + 1) <= 0xdfff) {
|
|
3852
|
-
index += 1;
|
|
3853
|
-
continue;
|
|
3854
|
-
}
|
|
3855
|
-
return false;
|
|
3856
|
-
}
|
|
3857
|
-
}
|
|
3858
|
-
return true;
|
|
3859
|
-
}
|
|
3860
3919
|
function work_xlsx_rich_text_isRecord(value) {
|
|
3861
3920
|
return 'object' == typeof value && null !== value && !Array.isArray(value);
|
|
3862
3921
|
}
|
|
3863
|
-
export { DEFAULT_PROTECTION_HINT, SPREADSHEET_CONDITIONAL_COMPARISON_OPERATORS, SPREADSHEET_CONDITIONAL_ICON_SETS, activeXlsxSemanticColorOrigin, applyImportedXlsxRichText, applyXlsxSemanticColorOrigin, attachSpreadsheetShownCommentCells, createWorkOfficeSpreadsheetCollaborationBinding as createOfficeSpreadsheetCollaborationBinding, createXlsxColorResolver, createXlsxRichTextReadContext, defaultSpreadsheetColorScaleThresholds, defaultSpreadsheetConditionalIconThresholds, defaultSpreadsheetDataBarOptions, defaultXlsxBorder, defaultXlsxFill, directXlsxAlignment, directXlsxFontStyle, drawSpreadsheetConditionalIcon, editableRangeCellCount, editableRangeRequiresCredentials, effectiveSpreadsheetPageSetup, ensureXlsxStyleCollection, freezeImportedSpreadsheetCell, hasXlsxDirectFontStyle, importedSheetProtectionAuthority, initializeWorkOfficeSpreadsheetCollaboration as initializeOfficeSpreadsheetCollaboration, isSpreadsheetConditionalComparisonOperator, isSpreadsheetConditionalIconSetName, isSpreadsheetTextOrientationId, isSpreadsheetUnderlineStyle, normalizeSheetProtectionAuthority, normalizeSpreadsheetConditionalIconSetFormat, normalizeSpreadsheetConditionalVisualOptions, normalizeSpreadsheetDateValidationBoundary, normalizeSpreadsheetPaperSize, patchSpreadsheetRichTextFontRuns, prepareXlsxSemanticPalette, protectedSheetCount, readWorkOfficeSpreadsheetCollaboration as readOfficeSpreadsheetCollaboration, readXlsxRichTextCells, readXlsxSemanticColorOrigin, registerDerivedSpreadsheetMatrix, registerImportedSpreadsheetMatrix, replaceWorkOfficeSpreadsheetCollaboration as replaceOfficeSpreadsheetCollaboration, resolveXlsxColor, sameSpreadsheetHistoryValue, setXlsxBorderLine, setXlsxColorChild, setXlsxToggleChild, setXlsxUnderlineChild, setXlsxValueChild, sheetHasProtectionState, sheetHasXlsxRichTextCells, sheetProtectionAuthority, spreadsheetCellValueWithDiagonalBorder, spreadsheetConditionalComparisonNeedsUpperValue, spreadsheetConditionalIconForValue, spreadsheetConditionalIconSetCount, spreadsheetConditionalThresholdValue, spreadsheetConditionalThresholdsEqual, spreadsheetDateValidationFormula, spreadsheetDiagonalBorderFromCellValue, spreadsheetExplicitTextOrientationFromCell, spreadsheetMatrixProfile, spreadsheetProtectionKey, spreadsheetTextOrientationCellStyle, spreadsheetTextOrientationChoiceFromCell, spreadsheetTextOrientationFromAngle, spreadsheetTextOrientationFromCell, spreadsheetTextOrientationFromChoice, spreadsheetTextOrientationFromXlsx, spreadsheetUnderlineCellValue, spreadsheetUnderlineCellValueFromSheetJs, spreadsheetUnderlineCellValueFromXlsx, spreadsheetUnderlineStyle, spreadsheetVisibleTextRotationFromCell, unlockedCellCount, withEditableRange, withSheetProtection, withSheetSelectionPermissions, withXlsxCellStyleOrigin, withoutEditableRange, work_xlsx_cell_style_values_xlsxBooleanAttribute, writeXlsxAlignment, writeXlsxRichTextCells, xlsxAlignmentMatches, xlsxBorderLineMatches, xlsxCellStyleOrigin, xlsxColorElementMatchesOrigin, xlsxColorMatches, xlsxRgbColor, xlsxRichTextCellText, xlsxRichTextStyleOrigins, xlsxSemanticColorOriginKey, xlsxStyleCollectionIndex, xlsxToggleEnabled, xlsxUnderlineStyle, xlsxWorksheetCellEntries };
|
|
3922
|
+
export { DEFAULT_PROTECTION_HINT, SPREADSHEET_CONDITIONAL_COMPARISON_OPERATORS, SPREADSHEET_CONDITIONAL_ICON_SETS, activeXlsxSemanticColorOrigin, applyImportedXlsxRichText, applyXlsxSemanticColorOrigin, attachSpreadsheetShownCommentCells, coalesceXlsxRichTextRuns, createWorkOfficeSpreadsheetCollaborationBinding as createOfficeSpreadsheetCollaborationBinding, createXlsxColorResolver, createXlsxRichTextReadContext, defaultSpreadsheetColorScaleThresholds, defaultSpreadsheetConditionalIconThresholds, defaultSpreadsheetDataBarOptions, defaultXlsxBorder, defaultXlsxFill, directXlsxAlignment, directXlsxFontStyle, drawSpreadsheetConditionalIcon, editableRangeCellCount, editableRangeRequiresCredentials, effectiveSpreadsheetPageSetup, ensureXlsxStyleCollection, freezeImportedSpreadsheetCell, hasXlsxDirectFontStyle, importedSheetProtectionAuthority, initializeWorkOfficeSpreadsheetCollaboration as initializeOfficeSpreadsheetCollaboration, isHighSurrogate, isLowSurrogate, isSpreadsheetConditionalComparisonOperator, isSpreadsheetConditionalIconSetName, isSpreadsheetTextOrientationId, isSpreadsheetUnderlineStyle, normalizeSheetProtectionAuthority, normalizeSpreadsheetConditionalIconSetFormat, normalizeSpreadsheetConditionalVisualOptions, normalizeSpreadsheetDateValidationBoundary, normalizeSpreadsheetPaperSize, normalizeXlsxRichTextCell, normalizeXlsxRichTextColor, normalizeXlsxRichTextEditSource, normalizeXlsxRichTextRun, normalizeXlsxSemanticColorOrigin, patchSpreadsheetRichTextFontRuns, prepareXlsxSemanticPalette, protectedSheetCount, readWorkOfficeSpreadsheetCollaboration as readOfficeSpreadsheetCollaboration, readXlsxRichTextCells, readXlsxSemanticColorOrigin, registerDerivedSpreadsheetMatrix, registerImportedSpreadsheetMatrix, replaceWorkOfficeSpreadsheetCollaboration as replaceOfficeSpreadsheetCollaboration, resolveXlsxColor, sameSpreadsheetHistoryValue, sameXlsxRichTextRunStyle, setXlsxBorderLine, setXlsxColorChild, setXlsxToggleChild, setXlsxUnderlineChild, setXlsxValueChild, sheetHasProtectionState, sheetHasXlsxRichTextCells, sheetProtectionAuthority, spreadsheetCellValueWithDiagonalBorder, spreadsheetConditionalComparisonNeedsUpperValue, spreadsheetConditionalIconForValue, spreadsheetConditionalIconSetCount, spreadsheetConditionalThresholdValue, spreadsheetConditionalThresholdsEqual, spreadsheetDateValidationFormula, spreadsheetDiagonalBorderFromCellValue, spreadsheetExplicitTextOrientationFromCell, spreadsheetMatrixProfile, spreadsheetProtectionKey, spreadsheetTextOrientationCellStyle, spreadsheetTextOrientationChoiceFromCell, spreadsheetTextOrientationFromAngle, spreadsheetTextOrientationFromCell, spreadsheetTextOrientationFromChoice, spreadsheetTextOrientationFromXlsx, spreadsheetUnderlineCellValue, spreadsheetUnderlineCellValueFromSheetJs, spreadsheetUnderlineCellValueFromXlsx, spreadsheetUnderlineStyle, spreadsheetVisibleTextRotationFromCell, unlockedCellCount, validXlsxRichText, withEditableRange, withSheetProtection, withSheetSelectionPermissions, withXlsxCellStyleOrigin, withoutEditableRange, work_xlsx_cell_style_values_xlsxBooleanAttribute, writeXlsxAlignment, writeXlsxRichTextCells, xlsxAlignmentMatches, xlsxBorderLineMatches, xlsxCellStyleOrigin, xlsxColorElementMatchesOrigin, xlsxColorMatches, xlsxRgbColor, xlsxRichTextCellText, xlsxRichTextStyleOrigins, xlsxSemanticColorMatchesValue, xlsxSemanticColorOriginKey, xlsxStyleCollectionIndex, xlsxToggleEnabled, xlsxUnderlineStyle, xlsxWorksheetCellEntries };
|