@rowsncolumns/utils 9.6.2 → 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 (37) 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/index.d.ts +2 -0
  5. package/dist/cjs/index.d.ts.map +1 -1
  6. package/dist/cjs/index.js +2 -0
  7. package/dist/cjs/insert-date-time.d.ts +17 -0
  8. package/dist/cjs/insert-date-time.d.ts.map +1 -0
  9. package/dist/cjs/insert-date-time.js +26 -0
  10. package/dist/cjs/sparkline-groups.d.ts.map +1 -1
  11. package/dist/cjs/sparkline-groups.js +2 -0
  12. package/dist/cjs/table-style-presets.d.ts +9 -0
  13. package/dist/cjs/table-style-presets.d.ts.map +1 -0
  14. package/dist/cjs/table-style-presets.js +559 -0
  15. package/dist/cjs/table-styles.d.ts +52 -1
  16. package/dist/cjs/table-styles.d.ts.map +1 -1
  17. package/dist/cjs/table-styles.js +191 -386
  18. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  19. package/dist/esm/autocorrect.d.ts +28 -0
  20. package/dist/esm/autocorrect.d.ts.map +1 -0
  21. package/dist/esm/autocorrect.js +76 -0
  22. package/dist/esm/index.d.ts +2 -0
  23. package/dist/esm/index.d.ts.map +1 -1
  24. package/dist/esm/index.js +2 -0
  25. package/dist/esm/insert-date-time.d.ts +17 -0
  26. package/dist/esm/insert-date-time.d.ts.map +1 -0
  27. package/dist/esm/insert-date-time.js +21 -0
  28. package/dist/esm/sparkline-groups.d.ts.map +1 -1
  29. package/dist/esm/sparkline-groups.js +2 -0
  30. package/dist/esm/table-style-presets.d.ts +9 -0
  31. package/dist/esm/table-style-presets.d.ts.map +1 -0
  32. package/dist/esm/table-style-presets.js +556 -0
  33. package/dist/esm/table-styles.d.ts +52 -1
  34. package/dist/esm/table-styles.d.ts.map +1 -1
  35. package/dist/esm/table-styles.js +149 -383
  36. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  37. 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
+ };
@@ -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":"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"}