@rowsncolumns/utils 9.6.1 → 9.6.3

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.
Files changed (49) hide show
  1. package/dist/cjs/autocorrect.d.ts +28 -0
  2. package/dist/cjs/autocorrect.d.ts.map +1 -0
  3. package/dist/cjs/autocorrect.js +91 -0
  4. package/dist/cjs/excel-number-format.d.ts.map +1 -1
  5. package/dist/cjs/excel-number-format.js +13 -1
  6. package/dist/cjs/formatter.d.ts.map +1 -1
  7. package/dist/cjs/formatter.js +1 -9
  8. package/dist/cjs/index.d.ts +2 -0
  9. package/dist/cjs/index.d.ts.map +1 -1
  10. package/dist/cjs/index.js +2 -0
  11. package/dist/cjs/insert-date-time.d.ts +17 -0
  12. package/dist/cjs/insert-date-time.d.ts.map +1 -0
  13. package/dist/cjs/insert-date-time.js +26 -0
  14. package/dist/cjs/selection.d.ts.map +1 -1
  15. package/dist/cjs/selection.js +2 -2
  16. package/dist/cjs/sparkline-groups.d.ts.map +1 -1
  17. package/dist/cjs/sparkline-groups.js +2 -0
  18. package/dist/cjs/table-style-presets.d.ts +9 -0
  19. package/dist/cjs/table-style-presets.d.ts.map +1 -0
  20. package/dist/cjs/table-style-presets.js +559 -0
  21. package/dist/cjs/table-styles.d.ts +52 -1
  22. package/dist/cjs/table-styles.d.ts.map +1 -1
  23. package/dist/cjs/table-styles.js +191 -386
  24. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  25. package/dist/esm/autocorrect.d.ts +28 -0
  26. package/dist/esm/autocorrect.d.ts.map +1 -0
  27. package/dist/esm/autocorrect.js +76 -0
  28. package/dist/esm/excel-number-format.d.ts.map +1 -1
  29. package/dist/esm/excel-number-format.js +13 -1
  30. package/dist/esm/formatter.d.ts.map +1 -1
  31. package/dist/esm/formatter.js +1 -7
  32. package/dist/esm/index.d.ts +2 -0
  33. package/dist/esm/index.d.ts.map +1 -1
  34. package/dist/esm/index.js +2 -0
  35. package/dist/esm/insert-date-time.d.ts +17 -0
  36. package/dist/esm/insert-date-time.d.ts.map +1 -0
  37. package/dist/esm/insert-date-time.js +21 -0
  38. package/dist/esm/selection.d.ts.map +1 -1
  39. package/dist/esm/selection.js +2 -2
  40. package/dist/esm/sparkline-groups.d.ts.map +1 -1
  41. package/dist/esm/sparkline-groups.js +2 -0
  42. package/dist/esm/table-style-presets.d.ts +9 -0
  43. package/dist/esm/table-style-presets.d.ts.map +1 -0
  44. package/dist/esm/table-style-presets.js +556 -0
  45. package/dist/esm/table-styles.d.ts +52 -1
  46. package/dist/esm/table-styles.d.ts.map +1 -1
  47. package/dist/esm/table-styles.js +149 -383
  48. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  49. package/package.json +2 -2
@@ -0,0 +1,76 @@
1
+ export const DEFAULT_AUTOCORRECT_OPTIONS = {
2
+ capitalizeSentences: true,
3
+ replaceText: true,
4
+ };
5
+ /** The symbol entries of Office's built-in AutoCorrect list, longest first where they overlap. */
6
+ export const AUTOCORRECT_REPLACEMENTS = [
7
+ [/\(c\)/gi, "©"],
8
+ [/\(r\)/gi, "®"],
9
+ [/\(tm\)/gi, "™"],
10
+ [/\(e\)/gi, "€"],
11
+ [/\.\.\./g, "…"],
12
+ [/<=>/g, "⇔"],
13
+ [/==>/g, "⇒"],
14
+ [/<==/g, "⇐"],
15
+ [/-->/g, "→"],
16
+ [/<--/g, "←"],
17
+ ];
18
+ /**
19
+ * Abbreviations a period ends without ending the sentence, as Office's AutoCorrect exceptions list
20
+ * keeps them: the word after `e.g.` or `approx.` stays as typed.
21
+ */
22
+ const SENTENCE_EXCEPTIONS = new Set([
23
+ "approx",
24
+ "co",
25
+ "dept",
26
+ "dr",
27
+ "etc",
28
+ "fig",
29
+ "inc",
30
+ "incl",
31
+ "jr",
32
+ "ltd",
33
+ "mr",
34
+ "mrs",
35
+ "ms",
36
+ "no",
37
+ "sr",
38
+ "st",
39
+ "vs",
40
+ ]);
41
+ /** A sentence end (`.`, `!`, `?`), the space after it and the next word's first character. */
42
+ const SENTENCE_START = /(\S*)([.!?])(\s+)(\S)/g;
43
+ const capitalizeSentences = (text) => text.replace(SENTENCE_START, (match, word, end, space, letter) => {
44
+ const upper = letter.toUpperCase();
45
+ // Only a lower-case letter changes (not a digit, a symbol or a capital).
46
+ if (upper === letter || letter !== letter.toLowerCase())
47
+ return match;
48
+ if (end === ".") {
49
+ const bare = word.toLowerCase();
50
+ // `e.g.` / `i.e.` (a period inside the word) and the listed abbreviations.
51
+ if (bare.includes(".") || SENTENCE_EXCEPTIONS.has(bare))
52
+ return match;
53
+ }
54
+ return `${word}${end}${space}${upper}`;
55
+ });
56
+ const replaceText = (text) => AUTOCORRECT_REPLACEMENTS.reduce((current, [pattern, replacement]) => current.replace(pattern, replacement), text);
57
+ /** An entry AutoCorrect leaves as typed: a formula, or a number. */
58
+ const isAutoCorrectExempt = (text) => text.startsWith("=") || (text.trim() !== "" && Number.isFinite(Number(text)));
59
+ /** A whole entry that is a web or email address, which the engines turn into a link. */
60
+ const LINK_ENTRY = /^(?:(?:https?|ftp):\/\/|mailto:|www\.)\S+$|^[^\s@]+@[^\s@]+\.[^\s@]+$/i;
61
+ const isLinkEntry = (text) => LINK_ENTRY.test(text.trim());
62
+ /**
63
+ * The entry after AutoCorrect. `lengthPreserving` keeps the text the same length (only
64
+ * capitalisation), for an entry whose rich-text runs index into it.
65
+ */
66
+ export const applyAutoCorrect = ({ text, options = DEFAULT_AUTOCORRECT_OPTIONS, lengthPreserving = false, }) => {
67
+ if (isAutoCorrectExempt(text) || isLinkEntry(text)) {
68
+ return text;
69
+ }
70
+ let next = text;
71
+ if (options.replaceText && !lengthPreserving)
72
+ next = replaceText(next);
73
+ if (options.capitalizeSentences)
74
+ next = capitalizeSentences(next);
75
+ return next;
76
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"excel-number-format.d.ts","sourceRoot":"","sources":["../../excel-number-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excel-number-format.d.ts","sourceRoot":"","sources":["../../excel-number-format.ts"],"names":[],"mappings":"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"}
@@ -621,7 +621,9 @@ export const excelNumberPrePass = (pattern, value, l10n, render) => {
621
621
  if (!info)
622
622
  return { value };
623
623
  if (info.kind === "date") {
624
- if (info.isElapsed && sections.length === 1)
624
+ // A negative date or time — an elapsed `[h]:mm` duration included —
625
+ // shows `#######` in Excel's 1900 date system.
626
+ if (info.isElapsed && sections.length === 1 && value >= 0)
625
627
  return { value };
626
628
  if (value < 0 || value >= MAX_DATE_SERIAL_EXCLUSIVE) {
627
629
  return { text: DATE_OVERFLOW_DISPLAY, value };
@@ -636,5 +638,15 @@ export const excelNumberPrePass = (pattern, value, l10n, render) => {
636
638
  if (index === 1 && value < 0 && pre.text === undefined && pre.value === 0) {
637
639
  return { text: render(sections[index], 0), value };
638
640
  }
641
+ // A one-section format keeps the minus of a negative that rounds to zero:
642
+ // Excel shows -0.4 in `0` as `-0` (and -0.004 in `0.00` as `-0.00`).
643
+ if (index === 0 &&
644
+ implicitSign &&
645
+ value < 0 &&
646
+ info.kind === "number" &&
647
+ pre.text === undefined &&
648
+ pre.value === 0) {
649
+ return { text: `-${render(sections[0], 0)}`, value };
650
+ }
639
651
  return pre;
640
652
  };
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../formatter.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OASlE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KACjC,OAWF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OAWlE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OAOlE,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,KAAG,OA4B1D,CAAC;AA+LF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SA4C9D,CAAC;AAiIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,MAAM,EACf,SAAS,MAAM,KACd,MAAM,GAAG,SAiBX,CAAC;AAiBF,eAAO,MAAM,SAAS,GACpB,SAAS,MAAM,EACf,OAAO,GAAG,EACV,SAAS,MAAM,KACd,MASF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAoDtB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,OAAO,GAAG,EACV,SAAS,MAAM,KACd,sBAAsB,EAAE,GAAG,SA8C7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,SAAS,sBAAsB,EAAE,KACvC,MAOF,CAAC;AAkQF,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,OAAO,GAAG,KACT,MAAM,GAAG,SAoBX,CAAC"}
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../formatter.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OASlE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KACjC,OAWF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OAWlE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,OAOlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,KAAG,OA4B1D,CAAC;AA+LF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SA4C9D,CAAC;AAiIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,MAAM,EACf,SAAS,MAAM,KACd,MAAM,GAAG,SAiBX,CAAC;AAiBF,eAAO,MAAM,SAAS,GACpB,SAAS,MAAM,EACf,OAAO,GAAG,EACV,SAAS,MAAM,KACd,MASF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAoDtB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,OAAO,GAAG,EACV,SAAS,MAAM,KACd,sBAAsB,EAAE,GAAG,SA8C7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,SAAS,sBAAsB,EAAE,KACvC,MAOF,CAAC;AAyPF,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,OAAO,GAAG,KACT,MAAM,GAAG,SAoBX,CAAC"}
@@ -70,8 +70,6 @@ export const isTextPattern = (pattern) => {
70
70
  return false;
71
71
  }
72
72
  };
73
- const isSingleSectionElapsedTimePattern = (pattern) => !pattern.includes(";") &&
74
- /\[(?:h+|m+|s+)\]/i.test(pattern.replace(/\[\$[^\]]+\]/g, ""));
75
73
  /**
76
74
  * Does the pattern spell a month name (`mmm`+) with no day-of-month field
77
75
  * (`d`/`dd`) beside it? Quoted literals, bracket directives and escaped
@@ -680,11 +678,7 @@ function ssfFormatBase(pattern, value, locale, layout) {
680
678
  }
681
679
  value = pre.value;
682
680
  }
683
- const isNegativeElapsedTime = typeof value === "number" &&
684
- value < 0 &&
685
- isSingleSectionElapsedTimePattern(pattern);
686
- const formatted = format(code, isNegativeElapsedTime ? Math.abs(value) : value, options);
687
- return isNegativeElapsedTime ? `-${formatted}` : formatted;
681
+ return format(code, value, options);
688
682
  }
689
683
  catch (err) {
690
684
  return layout ? undefined : String(value);
@@ -34,4 +34,6 @@ export * from "./sparkline-groups";
34
34
  export * from "./rich-text-html";
35
35
  export * from "./clipboard-html-sanitize";
36
36
  export * from "./rich-text-links";
37
+ export * from "./insert-date-time";
38
+ export * from "./autocorrect";
37
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
package/dist/esm/index.js CHANGED
@@ -34,3 +34,5 @@ export * from "./sparkline-groups";
34
34
  export * from "./rich-text-html";
35
35
  export * from "./clipboard-html-sanitize";
36
36
  export * from "./rich-text-links";
37
+ export * from "./insert-date-time";
38
+ export * from "./autocorrect";
@@ -0,0 +1,17 @@
1
+ /** What Excel's Ctrl+; and Ctrl+Shift+; type into a cell. */
2
+ export type InsertedDateTimeKind = "date" | "time";
3
+ /**
4
+ * The text Excel's Ctrl+; (the date) and Ctrl+Shift+; (the time) type, as the
5
+ * locale writes a short date or a time to the minute: en-US `11/3/2026` and
6
+ * `2:05 PM`, de-DE `3.11.2026` and `14:05`. It is the text a person would type,
7
+ * so committing it lets the date parser give the cell the matching Short Date
8
+ * or Time format ("Keyboard shortcuts in Excel", support.microsoft.com:
9
+ * "Enter the current date: Ctrl+Semicolon", "Enter the current time:
10
+ * Ctrl+Shift+Colon").
11
+ */
12
+ export declare const formatInsertedDateTime: ({ kind, date, locale, }: {
13
+ kind: InsertedDateTimeKind;
14
+ date?: Date;
15
+ locale?: string;
16
+ }) => string;
17
+ //# sourceMappingURL=insert-date-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-date-time.d.ts","sourceRoot":"","sources":["../../insert-date-time.ts"],"names":[],"mappings":"AAQA,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAKnD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAAI,yBAIpC;IACD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,MAWH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { toSerial } from "./date";
2
+ import { ssfFormat } from "./formatter";
3
+ import { getCurrentLocale, getDefaultDateFormat, getDefaultTimeFormat, } from "./locale";
4
+ /** ICU's narrow and plain no-break spaces (`2:05\u202fPM`), which a person types as a space. */
5
+ const NO_BREAK_SPACES = /[\u00a0\u202f]/g;
6
+ /**
7
+ * The text Excel's Ctrl+; (the date) and Ctrl+Shift+; (the time) type, as the
8
+ * locale writes a short date or a time to the minute: en-US `11/3/2026` and
9
+ * `2:05 PM`, de-DE `3.11.2026` and `14:05`. It is the text a person would type,
10
+ * so committing it lets the date parser give the cell the matching Short Date
11
+ * or Time format ("Keyboard shortcuts in Excel", support.microsoft.com:
12
+ * "Enter the current date: Ctrl+Semicolon", "Enter the current time:
13
+ * Ctrl+Shift+Colon").
14
+ */
15
+ export const formatInsertedDateTime = ({ kind, date = new Date(), locale = getCurrentLocale(), }) => {
16
+ const serial = toSerial(date);
17
+ const text = kind === "date"
18
+ ? ssfFormat(getDefaultDateFormat(locale), Math.floor(serial), locale)
19
+ : ssfFormat(getDefaultTimeFormat(locale, "minute"), serial - Math.floor(serial), locale);
20
+ return text.replace(NO_BREAK_SPACES, " ");
21
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../selection.ts"],"names":[],"mappings":"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"}
@@ -294,11 +294,11 @@ export const cellToArea = ({ rowIndex, columnIndex, }) => {
294
294
  /**
295
295
  * Convert font size from points to pixels.
296
296
  */
297
- export const pointToPixel = (pt) => Math.round((13 / 10) * pt);
297
+ export const pointToPixel = (pt) => (pt * 96) / 72;
298
298
  /**
299
299
  * Convert font size from pixels to points.
300
300
  */
301
- export const pixelToPoint = (px) => Math.round((px / 13) * 10);
301
+ export const pixelToPoint = (px) => Math.round((px * 72) / 96);
302
302
  /**
303
303
  * Resolve a table column name to absolute column index.
304
304
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline-groups.d.ts","sourceRoot":"","sources":["../../sparkline-groups.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sparkline-groups.d.ts","sourceRoot":"","sources":["../../sparkline-groups.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ const OPTION_KEYS = {
31
31
  min: "min",
32
32
  minaxistype: "minaxistype",
33
33
  maxaxistype: "maxaxistype",
34
+ group: "group",
34
35
  };
35
36
  /** Emission order of `buildSparklineFormula` — the XLSX importers' order, so a group written here
36
37
  * and a group read from a workbook produce byte-identical formulas. */
@@ -59,6 +60,7 @@ const OPTION_ORDER = [
59
60
  "min",
60
61
  "minaxistype",
61
62
  "maxaxistype",
63
+ "group",
62
64
  ];
63
65
  const SPARKLINE_HEAD = /^\s*=\s*SPARKLINE\s*\(/i;
64
66
  export const isSparklineFormula = (formula) => typeof formula === "string" && SPARKLINE_HEAD.test(formula);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generated by scripts/gen-table-style-presets.mjs from ECMA-376 presetTableStyles.xml — do not edit.
3
+ *
4
+ * Excel's built-in table styles, element by element. Colours stay theme + tint references so
5
+ * they resolve through the workbook theme.
6
+ */
7
+ import type { TableStyleElements } from "./table-styles";
8
+ export declare const TABLE_STYLE_PRESETS: Readonly<Record<string, TableStyleElements>>;
9
+ //# sourceMappingURL=table-style-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-style-presets.d.ts","sourceRoot":"","sources":["../../table-style-presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CA2iB5E,CAAC"}