microsoft-graph 2.31.0 → 2.32.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/dist/cjs/models/Border.d.ts +2 -2
- package/dist/cjs/models/Border.d.ts.map +1 -1
- package/dist/cjs/models/Cell.d.ts +7 -7
- package/dist/cjs/models/Cell.d.ts.map +1 -1
- package/dist/cjs/operations/workbook/createBinaryWorkbook.js +1 -1
- package/dist/cjs/services/cell.d.ts +12 -0
- package/dist/cjs/services/cell.d.ts.map +1 -0
- package/dist/cjs/services/cell.js +25 -0
- package/dist/cjs/services/dataSource.js +2 -2
- package/dist/cjs/services/drive.d.ts +1 -0
- package/dist/cjs/services/drive.d.ts.map +1 -1
- package/dist/cjs/services/drive.js +1 -0
- package/dist/cjs/tasks/iterateRows.d.ts +18 -6
- package/dist/cjs/tasks/iterateRows.d.ts.map +1 -1
- package/dist/cjs/tasks/iterateRows.js +24 -18
- package/dist/cjs/tasks/readFirstRow.d.ts +18 -0
- package/dist/cjs/tasks/readFirstRow.d.ts.map +1 -0
- package/dist/cjs/tasks/readFirstRow.js +31 -0
- package/dist/cjs/tasks/readRows.d.ts +20 -0
- package/dist/cjs/tasks/readRows.d.ts.map +1 -0
- package/dist/cjs/tasks/readRows.js +28 -0
- package/dist/esm/models/Border.d.ts +2 -2
- package/dist/esm/models/Border.d.ts.map +1 -1
- package/dist/esm/models/Cell.d.ts +7 -7
- package/dist/esm/models/Cell.d.ts.map +1 -1
- package/dist/esm/operations/workbook/createBinaryWorkbook.js +1 -1
- package/dist/esm/services/cell.d.ts +12 -0
- package/dist/esm/services/cell.d.ts.map +1 -0
- package/dist/esm/services/cell.js +22 -0
- package/dist/esm/services/dataSource.js +1 -1
- package/dist/esm/services/drive.d.ts +1 -0
- package/dist/esm/services/drive.d.ts.map +1 -1
- package/dist/esm/services/drive.js +1 -0
- package/dist/esm/tasks/iterateRows.d.ts +18 -6
- package/dist/esm/tasks/iterateRows.d.ts.map +1 -1
- package/dist/esm/tasks/iterateRows.js +24 -18
- package/dist/esm/tasks/readFirstRow.d.ts +18 -0
- package/dist/esm/tasks/readFirstRow.d.ts.map +1 -0
- package/dist/esm/tasks/readFirstRow.js +25 -0
- package/dist/esm/tasks/readRows.d.ts +20 -0
- package/dist/esm/tasks/readRows.d.ts.map +1 -0
- package/dist/esm/tasks/readRows.js +25 -0
- package/docs/api/Border.md +3 -3
- package/docs/api/Cell.md +7 -7
- package/docs/api/CellFormat.md +8 -32
- package/docs/api/README.md +3 -1
- package/docs/api/createBinaryWorkbook.md +1 -1
- package/docs/api/drive.md +0 -24
- package/docs/api/iterateRows.md +26 -7
- package/docs/api/readFirstRow.md +40 -0
- package/docs/api/readRows.md +40 -0
- package/package.json +71 -21
- package/dist/cjs/services/cellFormat.d.ts +0 -15
- package/dist/cjs/services/cellFormat.d.ts.map +0 -1
- package/dist/cjs/services/cellFormat.js +0 -16
- package/dist/esm/services/cellFormat.d.ts +0 -15
- package/dist/esm/services/cellFormat.d.ts.map +0 -1
- package/dist/esm/services/cellFormat.js +0 -13
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
import type { Color } from "./Color.ts";
|
|
8
8
|
export type Border = {
|
|
9
9
|
color: Color;
|
|
10
|
-
style:
|
|
10
|
+
style: BorderStyle;
|
|
11
11
|
weight: BorderWeight;
|
|
12
12
|
};
|
|
13
13
|
export type BorderSide = "EdgeTop" | "EdgeBottom" | "EdgeLeft" | "EdgeRight" | "InsideVertical" | "InsideHorizontal" | "DiagonalDown" | "DiagonalUp";
|
|
14
|
-
export type
|
|
14
|
+
export type BorderStyle = "None" | "Continuous" | "Dash" | "DashDot" | "DashDotDot" | "Dot" | "Double" | "SlantDashDot";
|
|
15
15
|
export type BorderWeight = "Hairline" | "Thin" | "Medium" | "Thick";
|
|
16
16
|
//# sourceMappingURL=Border.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Border.d.ts","sourceRoot":"","sources":["../../../src/models/Border.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Border.d.ts","sourceRoot":"","sources":["../../../src/models/Border.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,GAAG,YAAY,CAAC;AAErJ,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,cAAc,CAAC;AAExH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC"}
|
|
@@ -106,19 +106,19 @@ export type CellStyle = {
|
|
|
106
106
|
* The amount of detail that we're reading from a cell.
|
|
107
107
|
*/
|
|
108
108
|
export type CellScope = {
|
|
109
|
-
/** Raw
|
|
109
|
+
/** Raw cell value. CHEAP (~1 op per 10K cells, no additional op with `text` or `format`) */
|
|
110
110
|
values: boolean;
|
|
111
|
-
/** Formatted value, as presented to the user.
|
|
111
|
+
/** Formatted value, as presented to the user. CHEAP (~1 op per 10K cells, no additional call op `values` or `format`) */
|
|
112
112
|
text: boolean;
|
|
113
|
-
/** Logic used to format values to text.
|
|
113
|
+
/** Logic used to format values to text. CHEAP (~1 op per 10K cells, no additional call op `values` or `text`) */
|
|
114
114
|
format: boolean;
|
|
115
|
-
/** Content position with the cell.
|
|
115
|
+
/** Content position with the cell. VERY EXPENSIVE (+1 op per cell) */
|
|
116
116
|
alignment: boolean;
|
|
117
|
-
/** Cell borders.
|
|
117
|
+
/** Cell borders. VERY EXPENSIVE (+1 op per cell) */
|
|
118
118
|
borders: boolean;
|
|
119
|
-
/** Background fill style.
|
|
119
|
+
/** Background fill style. VERY EXPENSIVE (+1 op per cell) */
|
|
120
120
|
fill: boolean;
|
|
121
|
-
/** Text style.
|
|
121
|
+
/** Text style. VERY EXPENSIVE (+1 op per cell) */
|
|
122
122
|
font: boolean;
|
|
123
123
|
};
|
|
124
124
|
export type CellHorizontalAlignment = "General" | "Left" | "Center" | "Right" | "Fill" | "Justify" | "CenterAcrossSelection" | "Distributed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../src/models/Cell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG;IAClB;;;OAGG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IACjC,OAAO,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACvB;;;;OAIG;IACH,KAAK,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF;;;OAGG;IACH,SAAS,EAAE;QACV,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;QACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAC/B,CAAC;IACF;;;OAGG;IACH,OAAO,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,CAAC;IAUF;;;OAGG;IACH,IAAI,EAAE;QACL,KAAK,CAAC,EAAE,KAAK,CAAC;KACd,CAAC;IACF;;;OAGG;IACH,IAAI,EAAE;QACL,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,aAAa,CAAC;KAC1B,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACvB,
|
|
1
|
+
{"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../src/models/Cell.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ const InvalidArgumentError_ts_1 = __importDefault(require("../../errors/InvalidA
|
|
|
13
13
|
const driveItem_ts_1 = require("../../services/driveItem.js");
|
|
14
14
|
const operationInvoker_ts_1 = require("../../services/operationInvoker.js");
|
|
15
15
|
const templatedPaths_ts_1 = require("../../services/templatedPaths.js");
|
|
16
|
-
const blankFile = "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";
|
|
16
|
+
const blankFile = "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";
|
|
17
17
|
/**
|
|
18
18
|
* Create a new blank binary workbook (XLSB).
|
|
19
19
|
* @param parentRef Reference to the parent drive or folder where the workbook will be created.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell utilities.
|
|
3
|
+
* @module CellFormat
|
|
4
|
+
* @category Services
|
|
5
|
+
*/
|
|
6
|
+
import type { CellFormat, CellScope } from "../models/Cell.ts";
|
|
7
|
+
export declare const generalCellFormat: CellFormat;
|
|
8
|
+
export declare const textCellFormat: CellFormat;
|
|
9
|
+
export declare const numberCellFormat: CellFormat;
|
|
10
|
+
export declare const accountingCellFormat: CellFormat;
|
|
11
|
+
export declare const defaultCellScope: CellScope;
|
|
12
|
+
//# sourceMappingURL=cell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../../src/services/cell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,iBAAiB,EAAgB,UAAU,CAAC;AACzD,eAAO,MAAM,cAAc,EAAU,UAAU,CAAC;AAChD,eAAO,MAAM,gBAAgB,EAAiB,UAAU,CAAC;AACzD,eAAO,MAAM,oBAAoB,EAA2D,UAAU,CAAC;AAMvG,eAAO,MAAM,gBAAgB,EAAE,SAQ9B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cell utilities.
|
|
4
|
+
* @module CellFormat
|
|
5
|
+
* @category Services
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.defaultCellScope = exports.accountingCellFormat = exports.numberCellFormat = exports.textCellFormat = exports.generalCellFormat = void 0;
|
|
9
|
+
exports.generalCellFormat = "General";
|
|
10
|
+
exports.textCellFormat = "@";
|
|
11
|
+
exports.numberCellFormat = "#,##0.00";
|
|
12
|
+
exports.accountingCellFormat = '_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)';
|
|
13
|
+
// export const currencyCellFormat = "$#,##0.00" as CellFormat;
|
|
14
|
+
// export const percentageCellFormat = "0.00%" as CellFormat;
|
|
15
|
+
// export const dateShortCellFormat = "dd/mm/yyyy" as CellFormat;
|
|
16
|
+
// export const timeCellFormat = "h:mm:ss AM/PM" as CellFormat;
|
|
17
|
+
exports.defaultCellScope = {
|
|
18
|
+
values: true,
|
|
19
|
+
text: true,
|
|
20
|
+
format: true,
|
|
21
|
+
alignment: false,
|
|
22
|
+
borders: false,
|
|
23
|
+
fill: false,
|
|
24
|
+
font: false,
|
|
25
|
+
};
|
|
@@ -25,7 +25,7 @@ const getWorkbookWorksheetUsedRangeRef_ts_1 = __importDefault(require("../operat
|
|
|
25
25
|
const readWorkbookRows_ts_1 = __importDefault(require("../tasks/readWorkbookRows.js"));
|
|
26
26
|
const addressManipulation_ts_1 = require("./addressManipulation.js");
|
|
27
27
|
const cartesianAddress_ts_1 = require("./cartesianAddress.js");
|
|
28
|
-
const
|
|
28
|
+
const cell_ts_1 = require("./cell.js");
|
|
29
29
|
/**
|
|
30
30
|
* Define a datasource from an entire worksheet.
|
|
31
31
|
* @template T Type of the record, extending RecordBase.
|
|
@@ -173,7 +173,7 @@ function recordToRow(record, source) {
|
|
|
173
173
|
return {
|
|
174
174
|
value: cell.value ?? "",
|
|
175
175
|
text: cell.text ?? (cell.value ?? "").toString(),
|
|
176
|
-
format: cell.format ??
|
|
176
|
+
format: cell.format ?? cell_ts_1.generalCellFormat,
|
|
177
177
|
style: {
|
|
178
178
|
merge: {},
|
|
179
179
|
alignment: {},
|
|
@@ -21,6 +21,7 @@ export declare function createClientSecretContextWithDriveRef(tenantId: AzureTen
|
|
|
21
21
|
* @returns A reference to the default drive.
|
|
22
22
|
* @remarks This method is opinionated and not recommended for production use.
|
|
23
23
|
* @deprecated Use `createClientSecretContextWithDriveRef()` instead.
|
|
24
|
+
* @hidden
|
|
24
25
|
*/
|
|
25
26
|
export declare function getDefaultDriveRef(): DriveRef;
|
|
26
27
|
//# sourceMappingURL=drive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../../src/services/drive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAChH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKzD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAUvF;AAED,qDAAqD;AACrD,wBAAgB,qCAAqC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAKnL;AAED
|
|
1
|
+
{"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../../src/services/drive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAChH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKzD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAUvF;AAED,qDAAqD;AACrD,wBAAgB,qCAAqC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAKnL;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAY7C"}
|
|
@@ -44,6 +44,7 @@ function createClientSecretContextWithDriveRef(tenantId, clientId, clientSecret,
|
|
|
44
44
|
* @returns A reference to the default drive.
|
|
45
45
|
* @remarks This method is opinionated and not recommended for production use.
|
|
46
46
|
* @deprecated Use `createClientSecretContextWithDriveRef()` instead.
|
|
47
|
+
* @hidden
|
|
47
48
|
*/
|
|
48
49
|
function getDefaultDriveRef() {
|
|
49
50
|
const tenantId = (0, environmentVariable_ts_1.getEnvironmentVariable)("AZURE_TENANT_ID");
|
|
@@ -4,21 +4,33 @@
|
|
|
4
4
|
* @category Tasks
|
|
5
5
|
* @experimental
|
|
6
6
|
*/
|
|
7
|
-
import type { CellScope } from "../models/Cell.ts";
|
|
8
|
-
import type {
|
|
7
|
+
import type { Cell, CellScope } from "../models/Cell.ts";
|
|
8
|
+
import type { RowOffset } from "../models/Row.ts";
|
|
9
9
|
import type { WorkbookRangeRef } from "../models/WorkbookRange.ts";
|
|
10
|
+
/**
|
|
11
|
+
* Represents a row yielded by the {@link iterateRows} generator.
|
|
12
|
+
* @property {Cell[]} cells Array of cells in the row, each containing value, text, format, and optionally style information depending on the scope.
|
|
13
|
+
* @property {RowOffset} offset Zero-based offset of the row within the original range.
|
|
14
|
+
* @property {boolean} isFirst If this is the first row in the iteration.
|
|
15
|
+
* @property {boolean} isLast If this is the last row in the iteration.
|
|
16
|
+
*/
|
|
17
|
+
export type IteratedRow = {
|
|
18
|
+
cells: Cell[];
|
|
19
|
+
offset: RowOffset;
|
|
20
|
+
isFirst: boolean;
|
|
21
|
+
isLast: boolean;
|
|
22
|
+
};
|
|
10
23
|
/**
|
|
11
24
|
* Iterate over the rows in a given worksheet range.
|
|
12
25
|
* @param rangeRef Reference to the workbook range to iterate over.
|
|
13
|
-
* @param skip Number of rows to skip before starting to yield rows. Can be negative to get last rows (e.g., -1 for the last row).
|
|
14
|
-
* @param take Max number of rows to yield. `POSITIVE_INFINITY` returns all rows.
|
|
15
26
|
* @param scope Amount of detail to include for each cell.
|
|
16
27
|
* @param maxCellsPerOperation Prescribe max cells to retrieve per operation. `null` automatically determines value. DO NOT SET EXCEPT FOR ADVANCED TUNING.
|
|
17
28
|
* @remarks Including `style` in the scope requires over three operations for each and every cell. Use this sparingly!
|
|
29
|
+
* @experimental
|
|
18
30
|
* @example
|
|
19
|
-
* for await (const row of iterateRows(rangeRef)) {
|
|
31
|
+
* for await (const { row } of iterateRows(rangeRef)) {
|
|
20
32
|
* console.log(row);
|
|
21
33
|
* }
|
|
22
34
|
*/
|
|
23
|
-
export declare function iterateRows(rangeRef: WorkbookRangeRef,
|
|
35
|
+
export declare function iterateRows(rangeRef: WorkbookRangeRef, scope?: Partial<CellScope>, maxCellsPerOperation?: number | null): AsyncIterable<IteratedRow>;
|
|
24
36
|
//# sourceMappingURL=iterateRows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterateRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateRows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"iterateRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateRows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAuC,SAAS,EAAwE,MAAM,mBAAmB,CAAC;AAIpK,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAUnE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAuB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,GAAE,OAAO,CAAC,SAAS,CAAoB,EAAE,oBAAoB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAwCnL"}
|
|
@@ -18,45 +18,51 @@ const getWorkbookWorksheetRange_ts_1 = __importDefault(require("../operations/wo
|
|
|
18
18
|
const listWorkbookRangeBorders_ts_1 = __importDefault(require("../operations/workbookRange/listWorkbookRangeBorders.js"));
|
|
19
19
|
const addressManipulation_ts_1 = require("../services/addressManipulation.js");
|
|
20
20
|
const batch_ts_1 = require("../services/batch.js");
|
|
21
|
-
const
|
|
21
|
+
const cell_ts_1 = require("../services/cell.js");
|
|
22
22
|
/**
|
|
23
23
|
* Iterate over the rows in a given worksheet range.
|
|
24
24
|
* @param rangeRef Reference to the workbook range to iterate over.
|
|
25
|
-
* @param skip Number of rows to skip before starting to yield rows. Can be negative to get last rows (e.g., -1 for the last row).
|
|
26
|
-
* @param take Max number of rows to yield. `POSITIVE_INFINITY` returns all rows.
|
|
27
25
|
* @param scope Amount of detail to include for each cell.
|
|
28
26
|
* @param maxCellsPerOperation Prescribe max cells to retrieve per operation. `null` automatically determines value. DO NOT SET EXCEPT FOR ADVANCED TUNING.
|
|
29
27
|
* @remarks Including `style` in the scope requires over three operations for each and every cell. Use this sparingly!
|
|
28
|
+
* @experimental
|
|
30
29
|
* @example
|
|
31
|
-
* for await (const row of iterateRows(rangeRef)) {
|
|
30
|
+
* for await (const { row } of iterateRows(rangeRef)) {
|
|
32
31
|
* console.log(row);
|
|
33
32
|
* }
|
|
34
33
|
*/
|
|
35
|
-
async function* iterateRows(rangeRef,
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const totalRowCount = (0, addressManipulation_ts_1.countAddressRows)(totalRangeRef.address);
|
|
34
|
+
async function* iterateRows(rangeRef, scope = cell_ts_1.defaultCellScope, maxCellsPerOperation = null) {
|
|
35
|
+
const totalColumnCount = (0, addressManipulation_ts_1.countAddressColumns)(rangeRef.address);
|
|
36
|
+
const totalRowCount = (0, addressManipulation_ts_1.countAddressRows)(rangeRef.address);
|
|
39
37
|
const maxRowsPerOperation = calculateMaxRowsPerOperation(totalColumnCount, maxCellsPerOperation);
|
|
40
38
|
const rangeSelect = scopeToRangeSelect(scope);
|
|
41
39
|
for (let operationRowStart = 0; operationRowStart < totalRowCount; operationRowStart += maxRowsPerOperation) {
|
|
42
40
|
const operationRowCount = Math.min(maxRowsPerOperation, totalRowCount - operationRowStart);
|
|
43
|
-
const operationRangeRef = (0, addressManipulation_ts_1.subRange)(
|
|
41
|
+
const operationRangeRef = (0, addressManipulation_ts_1.subRange)(rangeRef, operationRowStart, operationRowCount);
|
|
44
42
|
const range = rangeSelect ? await (0, getWorkbookWorksheetRange_ts_1.default)(operationRangeRef, rangeSelect) : null;
|
|
45
|
-
for (let
|
|
46
|
-
const
|
|
47
|
-
for (let
|
|
48
|
-
const value = (range?.values?.[
|
|
49
|
-
const text = (range?.text?.[
|
|
50
|
-
const format = (range?.numberFormat?.[
|
|
51
|
-
const style = await getStyle((0, addressManipulation_ts_1.subRange)(rangeRef,
|
|
52
|
-
|
|
43
|
+
for (let operationRowOffset = 0; operationRowOffset < operationRowCount; operationRowOffset++) {
|
|
44
|
+
const cells = [];
|
|
45
|
+
for (let columnOffset = 0; columnOffset < totalColumnCount; columnOffset++) {
|
|
46
|
+
const value = (range?.values?.[operationRowOffset]?.[columnOffset] ?? ""); // The root of these is undefined if that detail isn't in scope
|
|
47
|
+
const text = (range?.text?.[operationRowOffset]?.[columnOffset] ?? "");
|
|
48
|
+
const format = (range?.numberFormat?.[operationRowOffset]?.[columnOffset] ?? "");
|
|
49
|
+
const style = await getStyle((0, addressManipulation_ts_1.subRange)(rangeRef, operationRowOffset, 1, columnOffset, 1), scope); // This line is potentially expensive
|
|
50
|
+
cells.push({
|
|
53
51
|
value,
|
|
54
52
|
text,
|
|
55
53
|
format,
|
|
56
54
|
style,
|
|
57
55
|
});
|
|
58
56
|
}
|
|
59
|
-
|
|
57
|
+
const offset = (operationRowStart + operationRowOffset);
|
|
58
|
+
const isFirst = offset === 0;
|
|
59
|
+
const isLast = offset === totalRowCount - 1;
|
|
60
|
+
yield {
|
|
61
|
+
cells,
|
|
62
|
+
offset,
|
|
63
|
+
isFirst,
|
|
64
|
+
isLast,
|
|
65
|
+
};
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
68
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the first row from a given workbook range.
|
|
3
|
+
* @module readFirstRow
|
|
4
|
+
* @category Tasks
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
import type { Cell } from "../models/Cell.ts";
|
|
8
|
+
import type { WorkbookRangeRef } from "../models/WorkbookRange.ts";
|
|
9
|
+
/** * Read the first row from a given workbook range.
|
|
10
|
+
* @param rangeRef Reference to the workbook range to read.
|
|
11
|
+
* @param scope Amount of detail to include for each cell.
|
|
12
|
+
* @returns A promise that resolves to an array of cells in the first row.
|
|
13
|
+
* @remarks Particularly useful for reading header rows.
|
|
14
|
+
* @example
|
|
15
|
+
* const firstRow = await readFirstRow(rangeRef);
|
|
16
|
+
*/
|
|
17
|
+
export default function readFirstRow(rangeRef: WorkbookRangeRef, scope?: import("../models/Cell.ts").CellScope): Promise<Cell[]>;
|
|
18
|
+
//# sourceMappingURL=readFirstRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readFirstRow.d.ts","sourceRoot":"","sources":["../../../src/tasks/readFirstRow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAKnE;;;;;;;GAOG;AACH,wBAA8B,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,wCAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAQhH"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Read the first row from a given workbook range.
|
|
4
|
+
* @module readFirstRow
|
|
5
|
+
* @category Tasks
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.default = readFirstRow;
|
|
13
|
+
const InvalidArgumentError_ts_1 = __importDefault(require("../errors/InvalidArgumentError.js"));
|
|
14
|
+
const addressManipulation_ts_1 = require("../services/addressManipulation.js");
|
|
15
|
+
const cell_ts_1 = require("../services/cell.js");
|
|
16
|
+
const iterateRows_ts_1 = require("./iterateRows.js");
|
|
17
|
+
/** * Read the first row from a given workbook range.
|
|
18
|
+
* @param rangeRef Reference to the workbook range to read.
|
|
19
|
+
* @param scope Amount of detail to include for each cell.
|
|
20
|
+
* @returns A promise that resolves to an array of cells in the first row.
|
|
21
|
+
* @remarks Particularly useful for reading header rows.
|
|
22
|
+
* @example
|
|
23
|
+
* const firstRow = await readFirstRow(rangeRef);
|
|
24
|
+
*/
|
|
25
|
+
async function readFirstRow(rangeRef, scope = cell_ts_1.defaultCellScope) {
|
|
26
|
+
const firstRowRef = (0, addressManipulation_ts_1.subRange)(rangeRef, 0, 1);
|
|
27
|
+
for await (const { cells } of (0, iterateRows_ts_1.iterateRows)(firstRowRef, scope)) {
|
|
28
|
+
return cells;
|
|
29
|
+
}
|
|
30
|
+
throw new InvalidArgumentError_ts_1.default("No rows in the specified range.");
|
|
31
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read all rows from a given workbook range.
|
|
3
|
+
* @module readRows
|
|
4
|
+
* @category Tasks
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
import type { Cell } from "../models/Cell.ts";
|
|
8
|
+
import type { WorkbookRangeRef } from "../models/WorkbookRange.ts";
|
|
9
|
+
/**
|
|
10
|
+
* Read all rows from a given workbook range.
|
|
11
|
+
* @param rangeRef Reference to the workbook range to read.
|
|
12
|
+
* @param scope Amount of detail to include for each cell.
|
|
13
|
+
* @returns A promise that resolves to an array of rows, each containing an array of cells.
|
|
14
|
+
* @remarks Where practical, prefer using {@link iterateRows} for more efficient memory usage.
|
|
15
|
+
* @experimental
|
|
16
|
+
* @example
|
|
17
|
+
* const rows = await readRows(rangeRef);
|
|
18
|
+
*/
|
|
19
|
+
export default function readRows(rangeRef: WorkbookRangeRef, scope?: import("../models/Cell.ts").CellScope): Promise<Cell[][]>;
|
|
20
|
+
//# sourceMappingURL=readRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/readRows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;;;;;;GASG;AACH,wBAA8B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,wCAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAO9G"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Read all rows from a given workbook range.
|
|
4
|
+
* @module readRows
|
|
5
|
+
* @category Tasks
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.default = readRows;
|
|
10
|
+
const cell_ts_1 = require("../services/cell.js");
|
|
11
|
+
const iterateRows_ts_1 = require("./iterateRows.js");
|
|
12
|
+
/**
|
|
13
|
+
* Read all rows from a given workbook range.
|
|
14
|
+
* @param rangeRef Reference to the workbook range to read.
|
|
15
|
+
* @param scope Amount of detail to include for each cell.
|
|
16
|
+
* @returns A promise that resolves to an array of rows, each containing an array of cells.
|
|
17
|
+
* @remarks Where practical, prefer using {@link iterateRows} for more efficient memory usage.
|
|
18
|
+
* @experimental
|
|
19
|
+
* @example
|
|
20
|
+
* const rows = await readRows(rangeRef);
|
|
21
|
+
*/
|
|
22
|
+
async function readRows(rangeRef, scope = cell_ts_1.defaultCellScope) {
|
|
23
|
+
const rows = [];
|
|
24
|
+
for await (const { cells } of (0, iterateRows_ts_1.iterateRows)(rangeRef, scope)) {
|
|
25
|
+
rows.push(cells);
|
|
26
|
+
}
|
|
27
|
+
return rows;
|
|
28
|
+
}
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
import type { Color } from "./Color.ts";
|
|
8
8
|
export type Border = {
|
|
9
9
|
color: Color;
|
|
10
|
-
style:
|
|
10
|
+
style: BorderStyle;
|
|
11
11
|
weight: BorderWeight;
|
|
12
12
|
};
|
|
13
13
|
export type BorderSide = "EdgeTop" | "EdgeBottom" | "EdgeLeft" | "EdgeRight" | "InsideVertical" | "InsideHorizontal" | "DiagonalDown" | "DiagonalUp";
|
|
14
|
-
export type
|
|
14
|
+
export type BorderStyle = "None" | "Continuous" | "Dash" | "DashDot" | "DashDotDot" | "Dot" | "Double" | "SlantDashDot";
|
|
15
15
|
export type BorderWeight = "Hairline" | "Thin" | "Medium" | "Thick";
|
|
16
16
|
//# sourceMappingURL=Border.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Border.d.ts","sourceRoot":"","sources":["../../../src/models/Border.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Border.d.ts","sourceRoot":"","sources":["../../../src/models/Border.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,GAAG,YAAY,CAAC;AAErJ,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,cAAc,CAAC;AAExH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC"}
|
|
@@ -106,19 +106,19 @@ export type CellStyle = {
|
|
|
106
106
|
* The amount of detail that we're reading from a cell.
|
|
107
107
|
*/
|
|
108
108
|
export type CellScope = {
|
|
109
|
-
/** Raw
|
|
109
|
+
/** Raw cell value. CHEAP (~1 op per 10K cells, no additional op with `text` or `format`) */
|
|
110
110
|
values: boolean;
|
|
111
|
-
/** Formatted value, as presented to the user.
|
|
111
|
+
/** Formatted value, as presented to the user. CHEAP (~1 op per 10K cells, no additional call op `values` or `format`) */
|
|
112
112
|
text: boolean;
|
|
113
|
-
/** Logic used to format values to text.
|
|
113
|
+
/** Logic used to format values to text. CHEAP (~1 op per 10K cells, no additional call op `values` or `text`) */
|
|
114
114
|
format: boolean;
|
|
115
|
-
/** Content position with the cell.
|
|
115
|
+
/** Content position with the cell. VERY EXPENSIVE (+1 op per cell) */
|
|
116
116
|
alignment: boolean;
|
|
117
|
-
/** Cell borders.
|
|
117
|
+
/** Cell borders. VERY EXPENSIVE (+1 op per cell) */
|
|
118
118
|
borders: boolean;
|
|
119
|
-
/** Background fill style.
|
|
119
|
+
/** Background fill style. VERY EXPENSIVE (+1 op per cell) */
|
|
120
120
|
fill: boolean;
|
|
121
|
-
/** Text style.
|
|
121
|
+
/** Text style. VERY EXPENSIVE (+1 op per cell) */
|
|
122
122
|
font: boolean;
|
|
123
123
|
};
|
|
124
124
|
export type CellHorizontalAlignment = "General" | "Left" | "Center" | "Right" | "Fill" | "Justify" | "CenterAcrossSelection" | "Distributed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../src/models/Cell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG;IAClB;;;OAGG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IACjC,OAAO,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACvB;;;;OAIG;IACH,KAAK,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF;;;OAGG;IACH,SAAS,EAAE;QACV,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;QACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAC/B,CAAC;IACF;;;OAGG;IACH,OAAO,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,CAAC;IAUF;;;OAGG;IACH,IAAI,EAAE;QACL,KAAK,CAAC,EAAE,KAAK,CAAC;KACd,CAAC;IACF;;;OAGG;IACH,IAAI,EAAE;QACL,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,aAAa,CAAC;KAC1B,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACvB,
|
|
1
|
+
{"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../src/models/Cell.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import InvalidArgumentError from "../../errors/InvalidArgumentError.js";
|
|
|
7
7
|
import { binaryWorkbookFileExtension, createDriveItemRef, workbookFileExtension } from "../../services/driveItem.js";
|
|
8
8
|
import { operation } from "../../services/operationInvoker.js";
|
|
9
9
|
import { generatePath } from "../../services/templatedPaths.js";
|
|
10
|
-
const blankFile = "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";
|
|
10
|
+
const blankFile = "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";
|
|
11
11
|
/**
|
|
12
12
|
* Create a new blank binary workbook (XLSB).
|
|
13
13
|
* @param parentRef Reference to the parent drive or folder where the workbook will be created.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell utilities.
|
|
3
|
+
* @module CellFormat
|
|
4
|
+
* @category Services
|
|
5
|
+
*/
|
|
6
|
+
import type { CellFormat, CellScope } from "../models/Cell.ts";
|
|
7
|
+
export declare const generalCellFormat: CellFormat;
|
|
8
|
+
export declare const textCellFormat: CellFormat;
|
|
9
|
+
export declare const numberCellFormat: CellFormat;
|
|
10
|
+
export declare const accountingCellFormat: CellFormat;
|
|
11
|
+
export declare const defaultCellScope: CellScope;
|
|
12
|
+
//# sourceMappingURL=cell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../../src/services/cell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,iBAAiB,EAAgB,UAAU,CAAC;AACzD,eAAO,MAAM,cAAc,EAAU,UAAU,CAAC;AAChD,eAAO,MAAM,gBAAgB,EAAiB,UAAU,CAAC;AACzD,eAAO,MAAM,oBAAoB,EAA2D,UAAU,CAAC;AAMvG,eAAO,MAAM,gBAAgB,EAAE,SAQ9B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell utilities.
|
|
3
|
+
* @module CellFormat
|
|
4
|
+
* @category Services
|
|
5
|
+
*/
|
|
6
|
+
export const generalCellFormat = "General";
|
|
7
|
+
export const textCellFormat = "@";
|
|
8
|
+
export const numberCellFormat = "#,##0.00";
|
|
9
|
+
export const accountingCellFormat = '_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)';
|
|
10
|
+
// export const currencyCellFormat = "$#,##0.00" as CellFormat;
|
|
11
|
+
// export const percentageCellFormat = "0.00%" as CellFormat;
|
|
12
|
+
// export const dateShortCellFormat = "dd/mm/yyyy" as CellFormat;
|
|
13
|
+
// export const timeCellFormat = "h:mm:ss AM/PM" as CellFormat;
|
|
14
|
+
export const defaultCellScope = {
|
|
15
|
+
values: true,
|
|
16
|
+
text: true,
|
|
17
|
+
format: true,
|
|
18
|
+
alignment: false,
|
|
19
|
+
borders: false,
|
|
20
|
+
fill: false,
|
|
21
|
+
font: false,
|
|
22
|
+
};
|