ooxml-core 1.9.0 → 1.10.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.
Files changed (126) hide show
  1. package/dist/PptxHandler-5UURGJEV.mjs +2 -0
  2. package/dist/{PptxHandler-EX4WBIQQ.mjs → PptxHandler-ADEFY476.mjs} +2 -2
  3. package/dist/PptxHandler-U5XB2HUE.cjs +11 -0
  4. package/dist/automation/index.cjs +744 -192
  5. package/dist/automation/index.mjs +744 -192
  6. package/dist/{chunk-SWF7KVL5.cjs → chunk-3N6XMMTT.cjs} +1365 -1062
  7. package/dist/{chunk-FIELY5PI.mjs → chunk-5NVJN4E6.mjs} +30 -2
  8. package/dist/{chunk-IGOA57LE.mjs → chunk-A6P7G3UK.mjs} +1 -1
  9. package/dist/{chunk-CPKNMQLX.cjs → chunk-AWIDASUW.cjs} +25 -2
  10. package/dist/{chunk-SVQZXP3F.mjs → chunk-CBNKBVX5.mjs} +25 -2
  11. package/dist/{chunk-OXHMZS7B.mjs → chunk-CCHYFCPD.mjs} +649 -172
  12. package/dist/{chunk-OB277ZGE.mjs → chunk-R6KSBNKX.mjs} +27 -1
  13. package/dist/{chunk-AT66SA5M.cjs → chunk-S6DOCMQC.cjs} +28 -0
  14. package/dist/{chunk-WSO4T2LJ.mjs → chunk-WUE5ZHU3.mjs} +26 -3
  15. package/dist/{chunk-LCS3J3QI.mjs → chunk-ZE53K7DH.mjs} +474 -171
  16. package/dist/{chunk-M76PHYRR.mjs → chunk-ZOUGMAZG.mjs} +1 -1
  17. package/dist/docx/layout/adapt-table.d.ts +2 -2
  18. package/dist/docx/layout/adapt-table.d.ts.map +1 -1
  19. package/dist/docx/layout/flow-table.d.ts.map +1 -1
  20. package/dist/docx/layout/index.cjs +477 -75
  21. package/dist/docx/layout/index.mjs +477 -76
  22. package/dist/docx/layout/nested-frame-profile.d.ts +9 -0
  23. package/dist/docx/layout/nested-frame-profile.d.ts.map +1 -0
  24. package/dist/docx/layout/page-cursor.d.ts +2 -0
  25. package/dist/docx/layout/page-cursor.d.ts.map +1 -1
  26. package/dist/docx/layout/result.d.ts +13 -0
  27. package/dist/docx/layout/result.d.ts.map +1 -1
  28. package/dist/docx/layout/table-border-layout.d.ts +16 -0
  29. package/dist/docx/layout/table-border-layout.d.ts.map +1 -0
  30. package/dist/docx/layout/table-cell-layout.d.ts +2 -1
  31. package/dist/docx/layout/table-cell-layout.d.ts.map +1 -1
  32. package/dist/docx/layout/table-content.d.ts +4 -0
  33. package/dist/docx/layout/table-content.d.ts.map +1 -0
  34. package/dist/docx/layout/table-footnotes.d.ts +5 -0
  35. package/dist/docx/layout/table-footnotes.d.ts.map +1 -1
  36. package/dist/docx/layout/table-frames.d.ts +4 -0
  37. package/dist/docx/layout/table-frames.d.ts.map +1 -0
  38. package/dist/docx/layout/table-layout.d.ts +8 -3
  39. package/dist/docx/layout/table-layout.d.ts.map +1 -1
  40. package/dist/docx/layout/table-note-completion.d.ts +5 -0
  41. package/dist/docx/layout/table-note-completion.d.ts.map +1 -0
  42. package/dist/docx/layout/table-note-stories.d.ts +6 -0
  43. package/dist/docx/layout/table-note-stories.d.ts.map +1 -0
  44. package/dist/pptx/automation/index.cjs +535 -182
  45. package/dist/pptx/automation/index.d.ts +4 -4
  46. package/dist/pptx/automation/index.mjs +5 -5
  47. package/dist/pptx/chunks/{index-BZh-IMkN.d.ts → index-Cuxtr76Y.d.ts} +17 -3
  48. package/dist/pptx/chunks/index-Cuxtr76Y.d.ts.map +1 -0
  49. package/dist/pptx/chunks/{index-B4cnSPNz.d.ts → index-DUCGeZh7.d.ts} +65 -5
  50. package/dist/pptx/chunks/index-DUCGeZh7.d.ts.map +1 -0
  51. package/dist/pptx/chunks/{smart-art-Q2kZQtHh.d.ts → smart-art-D-sXa_Nb.d.ts} +11 -1
  52. package/dist/pptx/chunks/smart-art-D-sXa_Nb.d.ts.map +1 -0
  53. package/dist/pptx/chunks/{text-operations-BLodkuXE.d.ts → text-operations-BqHmLaLA.d.ts} +26 -2
  54. package/dist/pptx/chunks/text-operations-BqHmLaLA.d.ts.map +1 -0
  55. package/dist/pptx/cli/index.cjs +535 -182
  56. package/dist/pptx/cli/index.d.ts +1 -1
  57. package/dist/pptx/cli/index.mjs +4 -4
  58. package/dist/pptx/converter/index.cjs +1 -0
  59. package/dist/pptx/converter/index.d.ts +1 -1
  60. package/dist/pptx/converter/index.mjs +2 -2
  61. package/dist/pptx/editor/render/collaboration-live-patch-target.cjs +2 -2
  62. package/dist/pptx/editor/render/collaboration-live-patch-target.mjs +1 -1
  63. package/dist/pptx/editor/render/find-replace.cjs +18 -18
  64. package/dist/pptx/editor/render/find-replace.d.ts +2 -2
  65. package/dist/pptx/editor/render/find-replace.mjs +2 -2
  66. package/dist/pptx/editor/render/remap-text.cjs +2 -2
  67. package/dist/pptx/editor/render/remap-text.d.ts.map +1 -1
  68. package/dist/pptx/editor/render/remap-text.mjs +1 -1
  69. package/dist/pptx/editor/render/slide-operations.cjs +8 -8
  70. package/dist/pptx/editor/render/slide-operations.mjs +2 -2
  71. package/dist/pptx/index.cjs +762 -182
  72. package/dist/pptx/index.d.ts +5 -5
  73. package/dist/pptx/index.mjs +5 -5
  74. package/dist/pptx/smartart-layouts/index.d.ts +1 -1
  75. package/dist/teams/index.cjs +486 -114
  76. package/dist/teams/index.mjs +486 -114
  77. package/dist/visio/date-cache.d.ts +3 -0
  78. package/dist/visio/date-cache.d.ts.map +1 -0
  79. package/dist/visio/edit-text-field.d.ts.map +1 -1
  80. package/dist/visio/index.cjs +131 -22
  81. package/dist/visio/index.mjs +131 -22
  82. package/dist/visio/shape-metadata.d.ts.map +1 -1
  83. package/dist/visio/text-field-display.d.ts.map +1 -1
  84. package/dist/visio/text-field-fraction.d.ts +3 -0
  85. package/dist/visio/text-field-fraction.d.ts.map +1 -0
  86. package/dist/visio/text-field-numeric.d.ts +1 -1
  87. package/dist/visio/text-field-numeric.d.ts.map +1 -1
  88. package/dist/visio/text-field-system-date.d.ts +4 -0
  89. package/dist/visio/text-field-system-date.d.ts.map +1 -0
  90. package/dist/visio/text-fields.d.ts +1 -0
  91. package/dist/visio/text-fields.d.ts.map +1 -1
  92. package/dist/visio/ui/index.cjs +132 -22
  93. package/dist/visio/ui/index.mjs +132 -22
  94. package/dist/visio/ui/text-field-catalog.d.ts.map +1 -1
  95. package/dist/xlsx/edit/pivots.d.ts.map +1 -1
  96. package/dist/xlsx/index.cjs +614 -170
  97. package/dist/xlsx/index.mjs +614 -170
  98. package/dist/xlsx/load/index.cjs +575 -163
  99. package/dist/xlsx/load/index.mjs +575 -163
  100. package/dist/xlsx/model-pivots.d.ts +23 -2
  101. package/dist/xlsx/model-pivots.d.ts.map +1 -1
  102. package/dist/xlsx/pivot/admission.d.ts.map +1 -1
  103. package/dist/xlsx/pivot/aggregate.d.ts +3 -1
  104. package/dist/xlsx/pivot/aggregate.d.ts.map +1 -1
  105. package/dist/xlsx/pivot/data.d.ts +1 -1
  106. package/dist/xlsx/pivot/data.d.ts.map +1 -1
  107. package/dist/xlsx/pivot/hierarchy-first.d.ts +21 -0
  108. package/dist/xlsx/pivot/hierarchy-first.d.ts.map +1 -0
  109. package/dist/xlsx/pivot/hierarchy.d.ts +2 -4
  110. package/dist/xlsx/pivot/hierarchy.d.ts.map +1 -1
  111. package/dist/xlsx/pivot/measures.d.ts +13 -0
  112. package/dist/xlsx/pivot/measures.d.ts.map +1 -0
  113. package/dist/xlsx/pivot/read.d.ts.map +1 -1
  114. package/dist/xlsx/pivot/table-xml.d.ts.map +1 -1
  115. package/dist/xlsx/pivot/values-axis.d.ts +9 -0
  116. package/dist/xlsx/pivot/values-axis.d.ts.map +1 -0
  117. package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -1
  118. package/dist/xlsx/ui/index.cjs +547 -127
  119. package/dist/xlsx/ui/index.mjs +547 -127
  120. package/package.json +1 -1
  121. package/dist/PptxHandler-AT7FVG5Q.mjs +0 -2
  122. package/dist/PptxHandler-VFSCECPL.cjs +0 -11
  123. package/dist/pptx/chunks/index-B4cnSPNz.d.ts.map +0 -1
  124. package/dist/pptx/chunks/index-BZh-IMkN.d.ts.map +0 -1
  125. package/dist/pptx/chunks/smart-art-Q2kZQtHh.d.ts.map +0 -1
  126. package/dist/pptx/chunks/text-operations-BLodkuXE.d.ts.map +0 -1
@@ -0,0 +1,3 @@
1
+ /** Native DATE caches are wall-clock ISO text, without a timezone. */
2
+ export declare function visioIsoDateSerial(text: string): number | undefined;
3
+ //# sourceMappingURL=date-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-cache.d.ts","sourceRoot":"","sources":["../../visio/date-cache.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuBnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit-text-field.d.ts","sourceRoot":"","sources":["../../visio/edit-text-field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAuG3E,iGAAiG;AACjG,wBAAsB,oBAAoB,CACzC,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,wBAAwB,EAC9B,KAAK,EAAE,MAAM,IAAI,GACf,OAAO,CAAC,OAAO,CAAC,CAoFlB"}
1
+ {"version":3,"file":"edit-text-field.d.ts","sourceRoot":"","sources":["../../visio/edit-text-field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAuG3E,iGAAiG;AACjG,wBAAsB,oBAAoB,CACzC,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,wBAAwB,EAC9B,KAAK,EAAE,MAAM,IAAI,GACf,OAAO,CAAC,OAAO,CAAC,CAqFlB"}
@@ -8917,7 +8917,6 @@ function visioWallClock(date2) {
8917
8917
  );
8918
8918
  }
8919
8919
  var EPOCH = Date.UTC(1899, 11, 30);
8920
- var visioDateSerial = (date2) => Number(((date2.getTime() - EPOCH) / 864e5).toFixed(8));
8921
8920
  var visioSerialDate = (serial) => Number.isFinite(serial) && Math.abs(serial) < 3e6 ? new Date(EPOCH + Math.round(serial * 864e5)) : void 0;
8922
8921
  function evaluateVisioTextField(formula, context) {
8923
8922
  let ast;
@@ -9028,7 +9027,10 @@ function formatNumber(value, picture) {
9028
9027
  if (!match) return void 0;
9029
9028
  const decimals = match[2]?.length ?? 0;
9030
9029
  const optional = match[2]?.startsWith("#") ?? false;
9031
- let text5 = value.toFixed(decimals);
9030
+ const [coefficient, exponent = "0"] = Math.abs(value).toString().split("e");
9031
+ const shifted = Number(coefficient + "e" + (Number(exponent) + decimals));
9032
+ const rounded = Math.floor(shifted + 0.5) / 10 ** decimals;
9033
+ let text5 = (Math.sign(value) * rounded).toFixed(decimals);
9032
9034
  if (optional && text5.includes(".")) text5 = text5.replace(/\.?0+$/, "");
9033
9035
  if (match[1]) {
9034
9036
  const [whole, fraction] = text5.split(".");
@@ -9038,6 +9040,7 @@ function formatNumber(value, picture) {
9038
9040
  }
9039
9041
  var VISIO_FIELD_FORMATS = {
9040
9042
  shortDate: "{{M/d/yyyy}}",
9043
+ isoDate: "{{yyyy-MM-dd}}",
9041
9044
  longDate: "{{dddd, MMMM d, yyyy}}",
9042
9045
  time: "{{h:mm tt}}",
9043
9046
  dateTime: "{{M/d/yyyy h:mm tt}}",
@@ -9067,9 +9070,35 @@ function formatVisioFieldValue(value, format4 = "") {
9067
9070
  return units2 || body === "" ? `${text5}${suffix}` : text5;
9068
9071
  }
9069
9072
 
9073
+ // visio/text-field-fraction.ts
9074
+ function fractionalFieldNumber(value, maxDenominator) {
9075
+ if (!Number.isFinite(value) || Math.abs(value) > 1e15) return void 0;
9076
+ const absolute = Math.abs(value);
9077
+ let whole = Math.floor(absolute);
9078
+ const remainder = absolute - whole;
9079
+ let numerator = 0, denominator = 1, error = remainder;
9080
+ for (let candidate = 1; candidate <= maxDenominator; candidate++) {
9081
+ const top = Math.round(remainder * candidate);
9082
+ const fraction = top / candidate;
9083
+ const distance4 = Math.abs(remainder - fraction);
9084
+ if (distance4 < error || distance4 === error && fraction > numerator / denominator) {
9085
+ numerator = top;
9086
+ denominator = candidate;
9087
+ error = distance4;
9088
+ }
9089
+ }
9090
+ if (numerator === denominator) {
9091
+ whole++;
9092
+ numerator = 0;
9093
+ }
9094
+ const text5 = numerator ? `${whole ? whole + " " : ""}${numerator}/${denominator}` : String(whole);
9095
+ return value < 0 && text5 !== "0" ? "-" + text5 : text5;
9096
+ }
9097
+
9070
9098
  // visio/text-field-numeric.ts
9071
9099
  function numericFieldPicture(value, code, displayUnit) {
9072
- if (value.kind !== "number" || code < 2 || code > 9 || !Number.isInteger(code)) return void 0;
9100
+ if (value.kind !== "number" || code < 0 || code > 18 || code > 9 && code < 15 || !Number.isInteger(code))
9101
+ return void 0;
9073
9102
  const unit3 = displayUnit?.toUpperCase() ?? "NUM";
9074
9103
  const units2 = {
9075
9104
  NUM: ["scalar", 1, ""],
@@ -9082,21 +9111,106 @@ function numericFieldPicture(value, code, displayUnit) {
9082
9111
  };
9083
9112
  const definition = Object.hasOwn(units2, unit3) ? units2[unit3] : void 0;
9084
9113
  if (!definition || definition[0] !== value.unit) return void 0;
9085
- const decimals = Math.floor((code - 2) / 2);
9086
- const picture = decimals ? `0.${"0".repeat(decimals)}` : "0";
9087
- const text5 = formatVisioFieldValue(
9088
- { kind: "number", value: value.value * definition[1], unit: "scalar" },
9089
- picture
9090
- );
9114
+ const general = code < 2;
9115
+ const decimals = general ? 4 : Math.floor((code - 2) / 2);
9116
+ const picture = general ? "0.####" : decimals ? `0.${"0".repeat(decimals)}` : "0";
9117
+ const displayed = value.value * definition[1];
9118
+ if (!Number.isFinite(displayed)) return void 0;
9119
+ if (code >= 15) {
9120
+ const fraction = fractionalFieldNumber(displayed, code < 17 ? 9 : 99);
9121
+ return fraction === void 0 ? void 0 : fraction + (code % 2 === 0 ? definition[2] : "");
9122
+ }
9123
+ if ((general || !decimals) && Math.abs(displayed) > 1e15) return void 0;
9124
+ const scientific = decimals > 0 && (Math.abs(displayed) >= 1e15 || displayed !== 0 && Math.abs(displayed) < 0.5 / 10 ** decimals);
9125
+ let text5;
9126
+ if (scientific) {
9127
+ const [coefficient, power] = displayed.toExponential().split("e");
9128
+ let exponent = Number(power);
9129
+ let precision = Math.abs(displayed) >= 1e15 ? decimals : decimals - 1;
9130
+ const mantissaPicture = precision ? `0.${"0".repeat(precision)}` : "0";
9131
+ let mantissa = formatVisioFieldValue(
9132
+ { kind: "number", value: Number(coefficient), unit: "scalar" },
9133
+ mantissaPicture
9134
+ );
9135
+ if (mantissa === void 0) return void 0;
9136
+ if (Math.abs(Number(mantissa)) >= 10) {
9137
+ exponent += 1;
9138
+ precision = decimals;
9139
+ mantissa = Math.sign(displayed).toFixed(precision);
9140
+ }
9141
+ if (general) mantissa = mantissa.replace(/\.?0+$/, "");
9142
+ else if (!mantissa.includes(".")) mantissa += ".";
9143
+ text5 = mantissa + (code % 2 ? "e" : "E") + exponent;
9144
+ } else {
9145
+ text5 = formatVisioFieldValue({ kind: "number", value: displayed, unit: "scalar" }, picture);
9146
+ }
9091
9147
  return text5 === void 0 ? void 0 : text5 + (code % 2 ? definition[2] : "");
9092
9148
  }
9093
9149
 
9150
+ // visio/date-cache.ts
9151
+ function visioIsoDateSerial(text5) {
9152
+ const match = /^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?)?$/.exec(
9153
+ text5.trim()
9154
+ );
9155
+ if (!match) return void 0;
9156
+ const year = Number(match[1]), month = Number(match[2]), day = Number(match[3]);
9157
+ const hour = Number(match[4] ?? 0), minute = Number(match[5] ?? 0), second = Number(match[6] ?? 0);
9158
+ const millisecond = Number((match[7] ?? "").padEnd(3, "0").slice(0, 3));
9159
+ if (year < 1 || hour > 23 || minute > 59 || second > 59) return void 0;
9160
+ const date2 = /* @__PURE__ */ new Date(0);
9161
+ date2.setUTCFullYear(year, month - 1, day);
9162
+ date2.setUTCHours(hour, minute, second, millisecond);
9163
+ if (date2.getUTCFullYear() !== year || date2.getUTCMonth() !== month - 1 || date2.getUTCDate() !== day)
9164
+ return void 0;
9165
+ return (date2.getTime() - Date.UTC(1899, 11, 30)) / 864e5;
9166
+ }
9167
+
9168
+ // visio/text-field-system-date.ts
9169
+ var LONG_DATE = "{{dddd, MMMM d, yyyy}}";
9170
+ function englishLongDateProfile(cached5) {
9171
+ const match = /^[A-Za-z]+, [A-Za-z]+ ([1-9]|[12]\d|3[01]), (\d{4})$/.exec(cached5);
9172
+ if (!match) return false;
9173
+ for (let month = 0; month < 12; month++) {
9174
+ const candidate = /* @__PURE__ */ new Date(0);
9175
+ candidate.setUTCFullYear(Number(match[2]), month, Number(match[1]));
9176
+ if (candidate.getUTCMonth() === month && candidate.getTime() >= Date.UTC(1899, 11, 30) && formatVisioFieldValue({ kind: "date", date: candidate }, LONG_DATE) === cached5)
9177
+ return true;
9178
+ }
9179
+ return false;
9180
+ }
9181
+ function systemDatePicture(date2, code, cached5) {
9182
+ if (!Number.isFinite(date2.getTime()) || date2.getTime() < Date.UTC(1899, 11, 30) || date2.getUTCFullYear() > 9999)
9183
+ return void 0;
9184
+ if (code === "204") return formatVisioFieldValue({ kind: "date", date: date2 }, "{{yyyy-MM-dd}}");
9185
+ if (code === "21" || code === "201")
9186
+ return englishLongDateProfile(cached5) ? formatVisioFieldValue({ kind: "date", date: date2 }, LONG_DATE) : void 0;
9187
+ if (code === "20" || code === "200") {
9188
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(cached5) || visioIsoDateSerial(cached5) === void 0)
9189
+ return void 0;
9190
+ return formatVisioFieldValue({ kind: "date", date: date2 }, "{{yyyy-MM-dd}}");
9191
+ }
9192
+ if (code !== "211" && code !== "212") return void 0;
9193
+ const match = /^(\d{4}-\d{2}-\d{2}) ([1-9]|1[0-2]):([0-5]\d)(?::([0-5]\d))? (AM|PM)$/.exec(
9194
+ cached5
9195
+ );
9196
+ if (!match || code === "212" !== (match[4] !== void 0)) return void 0;
9197
+ const hour = Number(match[2]) % 12 + (match[5] === "PM" ? 12 : 0);
9198
+ if (visioIsoDateSerial(
9199
+ `${match[1]}T${String(hour).padStart(2, "0")}:${match[3]}:${match[4] ?? "00"}`
9200
+ ) === void 0)
9201
+ return void 0;
9202
+ return formatVisioFieldValue(
9203
+ { kind: "date", date: date2 },
9204
+ code === "211" ? "{{yyyy-MM-dd h:mm tt}}" : "{{yyyy-MM-dd h:mm:ss tt}}"
9205
+ );
9206
+ }
9207
+
9094
9208
  // visio/text-field-display.ts
9095
9209
  function cachedValue(value, unit3) {
9096
9210
  if (value === void 0) return void 0;
9097
9211
  if (unit3 === "STR") return { kind: "string", text: value };
9098
9212
  if (unit3 === "DATE") {
9099
- const date2 = visioSerialDate(Number(value));
9213
+ const date2 = visioSerialDate(visioIsoDateSerial(value) ?? Number(value));
9100
9214
  return date2 ? { kind: "date", date: date2 } : void 0;
9101
9215
  }
9102
9216
  try {
@@ -9126,6 +9240,8 @@ function textFieldDisplay(element2, sheet, context) {
9126
9240
  }
9127
9241
  if (source?.kind === "number" && code !== void 0)
9128
9242
  text6 = numericFieldPicture(source, Number(code), value?.unit) ?? cached5;
9243
+ if (source?.kind === "date" && code !== void 0)
9244
+ text6 = systemDatePicture(source.date, code, cached5) ?? cached5;
9129
9245
  return { text: text6, ...result };
9130
9246
  }
9131
9247
  const text5 = source ? formatVisioFieldValue(source, picture) : void 0;
@@ -10582,15 +10698,6 @@ function booleanValue(text5) {
10582
10698
  const value = numeric3(text5);
10583
10699
  return value === void 0 ? void 0 : value !== 0;
10584
10700
  }
10585
- function isoSerialDays(text5) {
10586
- const match = /^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2}(?:\.\d+)?))?)?$/.exec(
10587
- text5.trim()
10588
- );
10589
- if (!match) return void 0;
10590
- const [year, month, day, hour, minute, second] = match.slice(1).map((part) => Number(part ?? 0));
10591
- const time = Date.UTC(year, month - 1, day, hour, minute, second);
10592
- return Number.isFinite(time) ? (time - Date.UTC(1899, 11, 30)) / 864e5 : void 0;
10593
- }
10594
10701
  function property(row2, budget, report) {
10595
10702
  const get = (key2) => cached(row2.cells, key2, budget, report);
10596
10703
  const rawType = get("Type"), rawValue = get("Value");
@@ -10601,7 +10708,7 @@ function property(row2, budget, report) {
10601
10708
  if (rawValue !== void 0 && row2.cells.get("Value")?.error === void 0) {
10602
10709
  if (type === 0 || type === 1 || type === 4) value = budget.retain(rawValue);
10603
10710
  else if (type === 3) value = booleanValue(rawValue);
10604
- else if (type === 5) value = numeric3(rawValue) ?? isoSerialDays(rawValue);
10711
+ else if (type === 5) value = numeric3(rawValue) ?? visioIsoDateSerial(rawValue);
10605
10712
  else if (valueKind !== "unparsed") value = numeric3(rawValue);
10606
10713
  }
10607
10714
  if (value === void 0) {
@@ -26819,7 +26926,8 @@ function shapeResolver(shape) {
26819
26926
  }
26820
26927
  function valueCell(value) {
26821
26928
  if (value.kind === "string") return { v: value.text, u: "STR", type: 0 };
26822
- if (value.kind === "date") return { v: String(visioDateSerial(value.date)), u: "DATE", type: 5 };
26929
+ if (value.kind === "date")
26930
+ return { v: value.date.toISOString().replace(/Z$/, ""), u: "DATE", type: 5 };
26823
26931
  const unit3 = value.unit === "length" ? "IN" : value.unit === "angle" ? "DEG" : void 0;
26824
26932
  return { v: String(Number(value.value.toFixed(10))), ...unit3 ? { u: unit3 } : {}, type: 2 };
26825
26933
  }
@@ -26906,7 +27014,8 @@ async function insertVisioTextField(pkg, pagePaths, roots, document, edit, check
26906
27014
  };
26907
27015
  const stored = valueCell(value);
26908
27016
  cell("Value", stored.v, { ...stored.u ? { U: stored.u } : {}, F: edit.formula });
26909
- if (edit.format) cell("Format", edit.format, { F: `"${edit.format.replaceAll('"', '""')}"` });
27017
+ if (edit.format)
27018
+ cell("Format", edit.format, { U: "STR", F: `"${edit.format.replaceAll('"', '""')}"` });
26910
27019
  cell("Type", String(stored.type));
26911
27020
  section3.appendChild(row2);
26912
27021
  const field2 = owner.createElementNS(ns, "fld");
@@ -8911,7 +8911,6 @@ function visioWallClock(date2) {
8911
8911
  );
8912
8912
  }
8913
8913
  var EPOCH = Date.UTC(1899, 11, 30);
8914
- var visioDateSerial = (date2) => Number(((date2.getTime() - EPOCH) / 864e5).toFixed(8));
8915
8914
  var visioSerialDate = (serial) => Number.isFinite(serial) && Math.abs(serial) < 3e6 ? new Date(EPOCH + Math.round(serial * 864e5)) : void 0;
8916
8915
  function evaluateVisioTextField(formula, context) {
8917
8916
  let ast;
@@ -9022,7 +9021,10 @@ function formatNumber(value, picture) {
9022
9021
  if (!match) return void 0;
9023
9022
  const decimals = match[2]?.length ?? 0;
9024
9023
  const optional = match[2]?.startsWith("#") ?? false;
9025
- let text5 = value.toFixed(decimals);
9024
+ const [coefficient, exponent = "0"] = Math.abs(value).toString().split("e");
9025
+ const shifted = Number(coefficient + "e" + (Number(exponent) + decimals));
9026
+ const rounded = Math.floor(shifted + 0.5) / 10 ** decimals;
9027
+ let text5 = (Math.sign(value) * rounded).toFixed(decimals);
9026
9028
  if (optional && text5.includes(".")) text5 = text5.replace(/\.?0+$/, "");
9027
9029
  if (match[1]) {
9028
9030
  const [whole, fraction] = text5.split(".");
@@ -9032,6 +9034,7 @@ function formatNumber(value, picture) {
9032
9034
  }
9033
9035
  var VISIO_FIELD_FORMATS = {
9034
9036
  shortDate: "{{M/d/yyyy}}",
9037
+ isoDate: "{{yyyy-MM-dd}}",
9035
9038
  longDate: "{{dddd, MMMM d, yyyy}}",
9036
9039
  time: "{{h:mm tt}}",
9037
9040
  dateTime: "{{M/d/yyyy h:mm tt}}",
@@ -9061,9 +9064,35 @@ function formatVisioFieldValue(value, format4 = "") {
9061
9064
  return units2 || body === "" ? `${text5}${suffix}` : text5;
9062
9065
  }
9063
9066
 
9067
+ // visio/text-field-fraction.ts
9068
+ function fractionalFieldNumber(value, maxDenominator) {
9069
+ if (!Number.isFinite(value) || Math.abs(value) > 1e15) return void 0;
9070
+ const absolute = Math.abs(value);
9071
+ let whole = Math.floor(absolute);
9072
+ const remainder = absolute - whole;
9073
+ let numerator = 0, denominator = 1, error = remainder;
9074
+ for (let candidate = 1; candidate <= maxDenominator; candidate++) {
9075
+ const top = Math.round(remainder * candidate);
9076
+ const fraction = top / candidate;
9077
+ const distance4 = Math.abs(remainder - fraction);
9078
+ if (distance4 < error || distance4 === error && fraction > numerator / denominator) {
9079
+ numerator = top;
9080
+ denominator = candidate;
9081
+ error = distance4;
9082
+ }
9083
+ }
9084
+ if (numerator === denominator) {
9085
+ whole++;
9086
+ numerator = 0;
9087
+ }
9088
+ const text5 = numerator ? `${whole ? whole + " " : ""}${numerator}/${denominator}` : String(whole);
9089
+ return value < 0 && text5 !== "0" ? "-" + text5 : text5;
9090
+ }
9091
+
9064
9092
  // visio/text-field-numeric.ts
9065
9093
  function numericFieldPicture(value, code, displayUnit) {
9066
- if (value.kind !== "number" || code < 2 || code > 9 || !Number.isInteger(code)) return void 0;
9094
+ if (value.kind !== "number" || code < 0 || code > 18 || code > 9 && code < 15 || !Number.isInteger(code))
9095
+ return void 0;
9067
9096
  const unit3 = displayUnit?.toUpperCase() ?? "NUM";
9068
9097
  const units2 = {
9069
9098
  NUM: ["scalar", 1, ""],
@@ -9076,21 +9105,106 @@ function numericFieldPicture(value, code, displayUnit) {
9076
9105
  };
9077
9106
  const definition = Object.hasOwn(units2, unit3) ? units2[unit3] : void 0;
9078
9107
  if (!definition || definition[0] !== value.unit) return void 0;
9079
- const decimals = Math.floor((code - 2) / 2);
9080
- const picture = decimals ? `0.${"0".repeat(decimals)}` : "0";
9081
- const text5 = formatVisioFieldValue(
9082
- { kind: "number", value: value.value * definition[1], unit: "scalar" },
9083
- picture
9084
- );
9108
+ const general = code < 2;
9109
+ const decimals = general ? 4 : Math.floor((code - 2) / 2);
9110
+ const picture = general ? "0.####" : decimals ? `0.${"0".repeat(decimals)}` : "0";
9111
+ const displayed = value.value * definition[1];
9112
+ if (!Number.isFinite(displayed)) return void 0;
9113
+ if (code >= 15) {
9114
+ const fraction = fractionalFieldNumber(displayed, code < 17 ? 9 : 99);
9115
+ return fraction === void 0 ? void 0 : fraction + (code % 2 === 0 ? definition[2] : "");
9116
+ }
9117
+ if ((general || !decimals) && Math.abs(displayed) > 1e15) return void 0;
9118
+ const scientific = decimals > 0 && (Math.abs(displayed) >= 1e15 || displayed !== 0 && Math.abs(displayed) < 0.5 / 10 ** decimals);
9119
+ let text5;
9120
+ if (scientific) {
9121
+ const [coefficient, power] = displayed.toExponential().split("e");
9122
+ let exponent = Number(power);
9123
+ let precision = Math.abs(displayed) >= 1e15 ? decimals : decimals - 1;
9124
+ const mantissaPicture = precision ? `0.${"0".repeat(precision)}` : "0";
9125
+ let mantissa = formatVisioFieldValue(
9126
+ { kind: "number", value: Number(coefficient), unit: "scalar" },
9127
+ mantissaPicture
9128
+ );
9129
+ if (mantissa === void 0) return void 0;
9130
+ if (Math.abs(Number(mantissa)) >= 10) {
9131
+ exponent += 1;
9132
+ precision = decimals;
9133
+ mantissa = Math.sign(displayed).toFixed(precision);
9134
+ }
9135
+ if (general) mantissa = mantissa.replace(/\.?0+$/, "");
9136
+ else if (!mantissa.includes(".")) mantissa += ".";
9137
+ text5 = mantissa + (code % 2 ? "e" : "E") + exponent;
9138
+ } else {
9139
+ text5 = formatVisioFieldValue({ kind: "number", value: displayed, unit: "scalar" }, picture);
9140
+ }
9085
9141
  return text5 === void 0 ? void 0 : text5 + (code % 2 ? definition[2] : "");
9086
9142
  }
9087
9143
 
9144
+ // visio/date-cache.ts
9145
+ function visioIsoDateSerial(text5) {
9146
+ const match = /^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?)?$/.exec(
9147
+ text5.trim()
9148
+ );
9149
+ if (!match) return void 0;
9150
+ const year = Number(match[1]), month = Number(match[2]), day = Number(match[3]);
9151
+ const hour = Number(match[4] ?? 0), minute = Number(match[5] ?? 0), second = Number(match[6] ?? 0);
9152
+ const millisecond = Number((match[7] ?? "").padEnd(3, "0").slice(0, 3));
9153
+ if (year < 1 || hour > 23 || minute > 59 || second > 59) return void 0;
9154
+ const date2 = /* @__PURE__ */ new Date(0);
9155
+ date2.setUTCFullYear(year, month - 1, day);
9156
+ date2.setUTCHours(hour, minute, second, millisecond);
9157
+ if (date2.getUTCFullYear() !== year || date2.getUTCMonth() !== month - 1 || date2.getUTCDate() !== day)
9158
+ return void 0;
9159
+ return (date2.getTime() - Date.UTC(1899, 11, 30)) / 864e5;
9160
+ }
9161
+
9162
+ // visio/text-field-system-date.ts
9163
+ var LONG_DATE = "{{dddd, MMMM d, yyyy}}";
9164
+ function englishLongDateProfile(cached5) {
9165
+ const match = /^[A-Za-z]+, [A-Za-z]+ ([1-9]|[12]\d|3[01]), (\d{4})$/.exec(cached5);
9166
+ if (!match) return false;
9167
+ for (let month = 0; month < 12; month++) {
9168
+ const candidate = /* @__PURE__ */ new Date(0);
9169
+ candidate.setUTCFullYear(Number(match[2]), month, Number(match[1]));
9170
+ if (candidate.getUTCMonth() === month && candidate.getTime() >= Date.UTC(1899, 11, 30) && formatVisioFieldValue({ kind: "date", date: candidate }, LONG_DATE) === cached5)
9171
+ return true;
9172
+ }
9173
+ return false;
9174
+ }
9175
+ function systemDatePicture(date2, code, cached5) {
9176
+ if (!Number.isFinite(date2.getTime()) || date2.getTime() < Date.UTC(1899, 11, 30) || date2.getUTCFullYear() > 9999)
9177
+ return void 0;
9178
+ if (code === "204") return formatVisioFieldValue({ kind: "date", date: date2 }, "{{yyyy-MM-dd}}");
9179
+ if (code === "21" || code === "201")
9180
+ return englishLongDateProfile(cached5) ? formatVisioFieldValue({ kind: "date", date: date2 }, LONG_DATE) : void 0;
9181
+ if (code === "20" || code === "200") {
9182
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(cached5) || visioIsoDateSerial(cached5) === void 0)
9183
+ return void 0;
9184
+ return formatVisioFieldValue({ kind: "date", date: date2 }, "{{yyyy-MM-dd}}");
9185
+ }
9186
+ if (code !== "211" && code !== "212") return void 0;
9187
+ const match = /^(\d{4}-\d{2}-\d{2}) ([1-9]|1[0-2]):([0-5]\d)(?::([0-5]\d))? (AM|PM)$/.exec(
9188
+ cached5
9189
+ );
9190
+ if (!match || code === "212" !== (match[4] !== void 0)) return void 0;
9191
+ const hour = Number(match[2]) % 12 + (match[5] === "PM" ? 12 : 0);
9192
+ if (visioIsoDateSerial(
9193
+ `${match[1]}T${String(hour).padStart(2, "0")}:${match[3]}:${match[4] ?? "00"}`
9194
+ ) === void 0)
9195
+ return void 0;
9196
+ return formatVisioFieldValue(
9197
+ { kind: "date", date: date2 },
9198
+ code === "211" ? "{{yyyy-MM-dd h:mm tt}}" : "{{yyyy-MM-dd h:mm:ss tt}}"
9199
+ );
9200
+ }
9201
+
9088
9202
  // visio/text-field-display.ts
9089
9203
  function cachedValue(value, unit3) {
9090
9204
  if (value === void 0) return void 0;
9091
9205
  if (unit3 === "STR") return { kind: "string", text: value };
9092
9206
  if (unit3 === "DATE") {
9093
- const date2 = visioSerialDate(Number(value));
9207
+ const date2 = visioSerialDate(visioIsoDateSerial(value) ?? Number(value));
9094
9208
  return date2 ? { kind: "date", date: date2 } : void 0;
9095
9209
  }
9096
9210
  try {
@@ -9120,6 +9234,8 @@ function textFieldDisplay(element2, sheet, context) {
9120
9234
  }
9121
9235
  if (source?.kind === "number" && code !== void 0)
9122
9236
  text6 = numericFieldPicture(source, Number(code), value?.unit) ?? cached5;
9237
+ if (source?.kind === "date" && code !== void 0)
9238
+ text6 = systemDatePicture(source.date, code, cached5) ?? cached5;
9123
9239
  return { text: text6, ...result };
9124
9240
  }
9125
9241
  const text5 = source ? formatVisioFieldValue(source, picture) : void 0;
@@ -10576,15 +10692,6 @@ function booleanValue(text5) {
10576
10692
  const value = numeric3(text5);
10577
10693
  return value === void 0 ? void 0 : value !== 0;
10578
10694
  }
10579
- function isoSerialDays(text5) {
10580
- const match = /^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2}(?:\.\d+)?))?)?$/.exec(
10581
- text5.trim()
10582
- );
10583
- if (!match) return void 0;
10584
- const [year, month, day, hour, minute, second] = match.slice(1).map((part) => Number(part ?? 0));
10585
- const time = Date.UTC(year, month - 1, day, hour, minute, second);
10586
- return Number.isFinite(time) ? (time - Date.UTC(1899, 11, 30)) / 864e5 : void 0;
10587
- }
10588
10695
  function property(row2, budget, report) {
10589
10696
  const get = (key2) => cached(row2.cells, key2, budget, report);
10590
10697
  const rawType = get("Type"), rawValue = get("Value");
@@ -10595,7 +10702,7 @@ function property(row2, budget, report) {
10595
10702
  if (rawValue !== void 0 && row2.cells.get("Value")?.error === void 0) {
10596
10703
  if (type === 0 || type === 1 || type === 4) value = budget.retain(rawValue);
10597
10704
  else if (type === 3) value = booleanValue(rawValue);
10598
- else if (type === 5) value = numeric3(rawValue) ?? isoSerialDays(rawValue);
10705
+ else if (type === 5) value = numeric3(rawValue) ?? visioIsoDateSerial(rawValue);
10599
10706
  else if (valueKind !== "unparsed") value = numeric3(rawValue);
10600
10707
  }
10601
10708
  if (value === void 0) {
@@ -26813,7 +26920,8 @@ function shapeResolver(shape) {
26813
26920
  }
26814
26921
  function valueCell(value) {
26815
26922
  if (value.kind === "string") return { v: value.text, u: "STR", type: 0 };
26816
- if (value.kind === "date") return { v: String(visioDateSerial(value.date)), u: "DATE", type: 5 };
26923
+ if (value.kind === "date")
26924
+ return { v: value.date.toISOString().replace(/Z$/, ""), u: "DATE", type: 5 };
26817
26925
  const unit3 = value.unit === "length" ? "IN" : value.unit === "angle" ? "DEG" : void 0;
26818
26926
  return { v: String(Number(value.value.toFixed(10))), ...unit3 ? { u: unit3 } : {}, type: 2 };
26819
26927
  }
@@ -26900,7 +27008,8 @@ async function insertVisioTextField(pkg, pagePaths, roots, document, edit, check
26900
27008
  };
26901
27009
  const stored = valueCell(value);
26902
27010
  cell("Value", stored.v, { ...stored.u ? { U: stored.u } : {}, F: edit.formula });
26903
- if (edit.format) cell("Format", edit.format, { F: `"${edit.format.replaceAll('"', '""')}"` });
27011
+ if (edit.format)
27012
+ cell("Format", edit.format, { U: "STR", F: `"${edit.format.replaceAll('"', '""')}"` });
26904
27013
  cell("Type", String(stored.type));
26905
27014
  section3.appendChild(row2);
26906
27015
  const field2 = owner.createElementNS(ns, "fld");
@@ -1 +1 @@
1
- {"version":3,"file":"shape-metadata.d.ts","sourceRoot":"","sources":["../../visio/shape-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,MAAM,EAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EACN,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,eAAe,GACf,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,CAAC;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,MAAM,EACH;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAClC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACxC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AACD,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,mBAAmB;IACnC,UAAU,IAAI,IAAI,CAAC;IACnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AACD,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAoB5F;AAmND;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GACzB;IAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAgB3D;AAED,wBAAgB,aAAa,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,sBAAyB,GAC7B;IACF,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAwBA"}
1
+ {"version":3,"file":"shape-metadata.d.ts","sourceRoot":"","sources":["../../visio/shape-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,MAAM,EAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAGzD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EACN,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,eAAe,GACf,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,CAAC;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,MAAM,EACH;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAClC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACxC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AACD,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,mBAAmB;IACnC,UAAU,IAAI,IAAI,CAAC;IACnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AACD,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAoB5F;AAyMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GACzB;IAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAgB3D;AAED,wBAAgB,aAAa,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,sBAAyB,GAC7B;IACF,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAwBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"text-field-display.d.ts","sourceRoot":"","sources":["../../visio/text-field-display.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAIN,KAAK,iBAAiB,EAEtB,MAAM,eAAe,CAAC;AAqBvB;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CA4BpD"}
1
+ {"version":3,"file":"text-field-display.d.ts","sourceRoot":"","sources":["../../visio/text-field-display.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAIN,KAAK,iBAAiB,EAEtB,MAAM,eAAe,CAAC;AAqBvB;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CA8BpD"}
@@ -0,0 +1,3 @@
1
+ /** Nearest fraction with a one/two-digit denominator, as measured in native Visio. */
2
+ export declare function fractionalFieldNumber(value: number, maxDenominator: 9 | 99): string | undefined;
3
+ //# sourceMappingURL=text-field-fraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-field-fraction.d.ts","sourceRoot":"","sources":["../../visio/text-field-fraction.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,CAwB/F"}
@@ -1,4 +1,4 @@
1
1
  import { type VisioFieldValue } from './text-fields.js';
2
- /** Native FIELDPICTURE decimal formats use the Value cell's display unit. */
2
+ /** Native FIELDPICTURE numeric formats use the Value cell's display unit. */
3
3
  export declare function numericFieldPicture(value: VisioFieldValue, code: number, displayUnit: string | undefined): string | undefined;
4
4
  //# sourceMappingURL=text-field-numeric.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-field-numeric.d.ts","sourceRoot":"","sources":["../../visio/text-field-numeric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAE5E,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,GAAG,SAAS,CAsBpB"}
1
+ {"version":3,"file":"text-field-numeric.d.ts","sourceRoot":"","sources":["../../visio/text-field-numeric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAG5E,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,GAAG,SAAS,CA6DpB"}
@@ -0,0 +1,4 @@
1
+ /** Native system pictures are locale-dependent. Admit only a validated stored ISO
2
+ * or English long-date profile, with measured English time suffixes for 211/212. */
3
+ export declare function systemDatePicture(date: Date, code: string, cached: string): string | undefined;
4
+ //# sourceMappingURL=text-field-system-date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-field-system-date.d.ts","sourceRoot":"","sources":["../../visio/text-field-system-date.ts"],"names":[],"mappings":"AAsBA;oFACoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiC9F"}
@@ -51,6 +51,7 @@ export declare function evaluateVisioTextField(formula: string, context: VisioFi
51
51
  /** Supported format pictures: `{{date picture}}`, `0`, `0.00`, `0.##`, `#,##0` (with ` u`), `@`. */
52
52
  export declare const VISIO_FIELD_FORMATS: {
53
53
  readonly shortDate: '{{M/d/yyyy}}';
54
+ readonly isoDate: '{{yyyy-MM-dd}}';
54
55
  readonly longDate: '{{dddd, MMMM d, yyyy}}';
55
56
  readonly time: '{{h:mm tt}}';
56
57
  readonly dateTime: '{{M/d/yyyy h:mm tt}}';
@@ -1 +1 @@
1
- {"version":3,"file":"text-fields.d.ts","sourceRoot":"","sources":["../../visio/text-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,MAAM,WAAW,CAAC;AAEnB,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iFAAiF;IACjF,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,qBAAqB,KAAK,iBAAiB,CAAC;CAClE;AACD,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAmBhC,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAIlD,CAAC;AAEF,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAW/C;AAED,2DAA2D;AAC3D,eAAO,MAAM,eAAe,SAAU,IAAI,KAAG,MACc,CAAC;AAC5D,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,IAAI,GAAG,SAG3C,CAAC;AAEd;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACxB,eAAe,GAAG,SAAS,CA0C7B;AAsFD,oGAAoG;AACpG,eAAO,MAAM,mBAAmB;aAC/B,SAAS,EAAE,cAAc;aACzB,QAAQ,EAAE,wBAAwB;aAClC,IAAI,EAAE,aAAa;aACnB,QAAQ,EAAE,sBAAsB;aAChC,IAAI,EAAE,GAAG;aACT,OAAO,EAAE,GAAG;aACZ,OAAO,EAAE,MAAM;aACf,YAAY,EAAE,QAAQ;aACtB,YAAY,EAAE,KAAK;CACV,CAAC;AAEX,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,SAAK,GAAG,MAAM,GAAG,SAAS,CAsB7F"}
1
+ {"version":3,"file":"text-fields.d.ts","sourceRoot":"","sources":["../../visio/text-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,MAAM,WAAW,CAAC;AAEnB,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iFAAiF;IACjF,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,qBAAqB,KAAK,iBAAiB,CAAC;CAClE;AACD,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAmBhC,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAIlD,CAAC;AAEF,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAW/C;AAED,2DAA2D;AAC3D,eAAO,MAAM,eAAe,SAAU,IAAI,KAAG,MACc,CAAC;AAC5D,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,IAAI,GAAG,SAG3C,CAAC;AAEd;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACxB,eAAe,GAAG,SAAS,CA0C7B;AA0FD,oGAAoG;AACpG,eAAO,MAAM,mBAAmB;aAC/B,SAAS,EAAE,cAAc;aACzB,OAAO,EAAE,gBAAgB;aACzB,QAAQ,EAAE,wBAAwB;aAClC,IAAI,EAAE,aAAa;aACnB,QAAQ,EAAE,sBAAsB;aAChC,IAAI,EAAE,GAAG;aACT,OAAO,EAAE,GAAG;aACZ,OAAO,EAAE,MAAM;aACf,YAAY,EAAE,QAAQ;aACtB,YAAY,EAAE,KAAK;CACV,CAAC;AAEX,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,SAAK,GAAG,MAAM,GAAG,SAAS,CAsB7F"}