@ricsam/formula-engine 0.2.1 → 0.2.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 (337) hide show
  1. package/dist/cjs/core/ast-traverser.cjs +19 -9
  2. package/dist/cjs/core/ast-traverser.cjs.map +2 -2
  3. package/dist/cjs/core/autofill-utils.cjs +19 -9
  4. package/dist/cjs/core/autofill-utils.cjs.map +2 -2
  5. package/dist/cjs/core/cell-mover.cjs +19 -9
  6. package/dist/cjs/core/cell-mover.cjs.map +2 -2
  7. package/dist/cjs/core/commands/command-executor.cjs +24 -13
  8. package/dist/cjs/core/commands/command-executor.cjs.map +3 -3
  9. package/dist/cjs/core/commands/content-commands.cjs +292 -9
  10. package/dist/cjs/core/commands/content-commands.cjs.map +3 -3
  11. package/dist/cjs/core/commands/metadata-commands.cjs +19 -9
  12. package/dist/cjs/core/commands/metadata-commands.cjs.map +2 -2
  13. package/dist/cjs/core/commands/named-expression-commands.cjs +138 -13
  14. package/dist/cjs/core/commands/named-expression-commands.cjs.map +3 -3
  15. package/dist/cjs/core/commands/structure-commands.cjs +216 -15
  16. package/dist/cjs/core/commands/structure-commands.cjs.map +3 -3
  17. package/dist/cjs/core/commands/style-commands.cjs +19 -9
  18. package/dist/cjs/core/commands/style-commands.cjs.map +2 -2
  19. package/dist/cjs/core/commands/table-commands.cjs +134 -13
  20. package/dist/cjs/core/commands/table-commands.cjs.map +3 -3
  21. package/dist/cjs/core/commands/types.cjs +36 -9
  22. package/dist/cjs/core/commands/types.cjs.map +3 -3
  23. package/dist/cjs/core/engine-snapshot.cjs +51 -0
  24. package/dist/cjs/core/engine-snapshot.cjs.map +10 -0
  25. package/dist/cjs/core/engine.cjs +58 -34
  26. package/dist/cjs/core/engine.cjs.map +3 -3
  27. package/dist/cjs/core/managers/cache-manager.cjs +123 -9
  28. package/dist/cjs/core/managers/cache-manager.cjs.map +3 -3
  29. package/dist/cjs/core/managers/copy-manager.cjs +19 -9
  30. package/dist/cjs/core/managers/copy-manager.cjs.map +2 -2
  31. package/dist/cjs/core/managers/dependency-manager.cjs +697 -9
  32. package/dist/cjs/core/managers/dependency-manager.cjs.map +3 -3
  33. package/dist/cjs/core/managers/dependency-node.cjs +14 -8
  34. package/dist/cjs/core/managers/dependency-node.cjs.map +1 -1
  35. package/dist/cjs/core/managers/evaluation-manager.cjs +296 -11
  36. package/dist/cjs/core/managers/evaluation-manager.cjs.map +3 -3
  37. package/dist/cjs/core/managers/event-manager.cjs +19 -9
  38. package/dist/cjs/core/managers/event-manager.cjs.map +2 -2
  39. package/dist/cjs/core/managers/frontier-dependency-manager.cjs +65 -12
  40. package/dist/cjs/core/managers/frontier-dependency-manager.cjs.map +3 -3
  41. package/dist/cjs/core/managers/isDependencyNode.cjs +19 -9
  42. package/dist/cjs/core/managers/isDependencyNode.cjs.map +2 -2
  43. package/dist/cjs/core/managers/named-expression-manager.cjs +121 -29
  44. package/dist/cjs/core/managers/named-expression-manager.cjs.map +3 -3
  45. package/dist/cjs/core/managers/range-eval-order-builder.cjs +19 -9
  46. package/dist/cjs/core/managers/range-eval-order-builder.cjs.map +2 -2
  47. package/dist/cjs/core/managers/reference-manager.cjs +25 -9
  48. package/dist/cjs/core/managers/reference-manager.cjs.map +3 -3
  49. package/dist/cjs/core/managers/schema-manager.cjs +19 -9
  50. package/dist/cjs/core/managers/schema-manager.cjs.map +2 -2
  51. package/dist/cjs/core/managers/style-manager.cjs +28 -9
  52. package/dist/cjs/core/managers/style-manager.cjs.map +3 -3
  53. package/dist/cjs/core/managers/table-manager.cjs +25 -9
  54. package/dist/cjs/core/managers/table-manager.cjs.map +3 -3
  55. package/dist/cjs/core/managers/workbook-manager.cjs +38 -13
  56. package/dist/cjs/core/managers/workbook-manager.cjs.map +3 -3
  57. package/dist/cjs/core/map-serializer.cjs +19 -9
  58. package/dist/cjs/core/map-serializer.cjs.map +2 -2
  59. package/dist/cjs/core/named-expression-renamer.cjs +19 -9
  60. package/dist/cjs/core/named-expression-renamer.cjs.map +2 -2
  61. package/dist/cjs/core/resource-keys.cjs +67 -0
  62. package/dist/cjs/core/resource-keys.cjs.map +10 -0
  63. package/dist/cjs/core/schema/cell-orm.cjs +19 -9
  64. package/dist/cjs/core/schema/cell-orm.cjs.map +2 -2
  65. package/dist/cjs/core/schema/grid-orm.cjs +19 -9
  66. package/dist/cjs/core/schema/grid-orm.cjs.map +2 -2
  67. package/dist/cjs/core/schema/schema-builder.cjs +19 -9
  68. package/dist/cjs/core/schema/schema-builder.cjs.map +2 -2
  69. package/dist/cjs/core/schema/schema-helpers.cjs +19 -9
  70. package/dist/cjs/core/schema/schema-helpers.cjs.map +2 -2
  71. package/dist/cjs/core/schema/schema.cjs +19 -9
  72. package/dist/cjs/core/schema/schema.cjs.map +2 -2
  73. package/dist/cjs/core/schema/table-orm.cjs +19 -9
  74. package/dist/cjs/core/schema/table-orm.cjs.map +2 -2
  75. package/dist/cjs/core/sheet-renamer.cjs +19 -9
  76. package/dist/cjs/core/sheet-renamer.cjs.map +2 -2
  77. package/dist/cjs/core/sheet-utils.cjs +19 -9
  78. package/dist/cjs/core/sheet-utils.cjs.map +2 -2
  79. package/dist/cjs/core/table-renamer.cjs +19 -9
  80. package/dist/cjs/core/table-renamer.cjs.map +2 -2
  81. package/dist/cjs/core/types.cjs +19 -9
  82. package/dist/cjs/core/types.cjs.map +2 -2
  83. package/dist/cjs/core/utils/color-utils.cjs +19 -9
  84. package/dist/cjs/core/utils/color-utils.cjs.map +2 -2
  85. package/dist/cjs/core/utils/range-serializer.cjs +19 -9
  86. package/dist/cjs/core/utils/range-serializer.cjs.map +2 -2
  87. package/dist/cjs/core/utils/range-utils.cjs +19 -9
  88. package/dist/cjs/core/utils/range-utils.cjs.map +2 -2
  89. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs +19 -9
  90. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs.map +2 -2
  91. package/dist/cjs/core/utils.cjs +19 -9
  92. package/dist/cjs/core/utils.cjs.map +2 -2
  93. package/dist/cjs/core/workbook-renamer.cjs +19 -9
  94. package/dist/cjs/core/workbook-renamer.cjs.map +2 -2
  95. package/dist/cjs/debug/flags.cjs +19 -9
  96. package/dist/cjs/debug/flags.cjs.map +2 -2
  97. package/dist/cjs/evaluator/arithmetic/add/add.cjs +19 -9
  98. package/dist/cjs/evaluator/arithmetic/add/add.cjs.map +2 -2
  99. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs +19 -9
  100. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs.map +2 -2
  101. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs +19 -9
  102. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs.map +2 -2
  103. package/dist/cjs/evaluator/arithmetic/power/power.cjs +19 -9
  104. package/dist/cjs/evaluator/arithmetic/power/power.cjs.map +2 -2
  105. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs +19 -9
  106. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs.map +2 -2
  107. package/dist/cjs/evaluator/comparison/equals.cjs +19 -9
  108. package/dist/cjs/evaluator/comparison/equals.cjs.map +2 -2
  109. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs +19 -9
  110. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs.map +2 -2
  111. package/dist/cjs/evaluator/comparison/greater-than.cjs +19 -9
  112. package/dist/cjs/evaluator/comparison/greater-than.cjs.map +2 -2
  113. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs +19 -9
  114. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs.map +2 -2
  115. package/dist/cjs/evaluator/comparison/less-than.cjs +19 -9
  116. package/dist/cjs/evaluator/comparison/less-than.cjs.map +2 -2
  117. package/dist/cjs/evaluator/comparison/not-equals.cjs +19 -9
  118. package/dist/cjs/evaluator/comparison/not-equals.cjs.map +2 -2
  119. package/dist/cjs/evaluator/concatenation/concatenate.cjs +19 -9
  120. package/dist/cjs/evaluator/concatenation/concatenate.cjs.map +2 -2
  121. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs +19 -9
  122. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs.map +2 -2
  123. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs +35 -9
  124. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs.map +3 -3
  125. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs +22 -9
  126. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs.map +3 -3
  127. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs +35 -11
  128. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs.map +3 -3
  129. package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs +61 -0
  130. package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs.map +10 -0
  131. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs +19 -9
  132. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs.map +2 -2
  133. package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs +22 -9
  134. package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs.map +3 -3
  135. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs +19 -9
  136. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs.map +2 -2
  137. package/dist/cjs/evaluator/evaluation-context.cjs +19 -9
  138. package/dist/cjs/evaluator/evaluation-context.cjs.map +2 -2
  139. package/dist/cjs/evaluator/evaluation-error.cjs +19 -9
  140. package/dist/cjs/evaluator/evaluation-error.cjs.map +2 -2
  141. package/dist/cjs/evaluator/formula-evaluator.cjs +55 -12
  142. package/dist/cjs/evaluator/formula-evaluator.cjs.map +3 -3
  143. package/dist/cjs/evaluator/range-evaluation-node.cjs +35 -11
  144. package/dist/cjs/evaluator/range-evaluation-node.cjs.map +3 -3
  145. package/dist/cjs/functions/_template/template.cjs +19 -9
  146. package/dist/cjs/functions/_template/template.cjs.map +2 -2
  147. package/dist/cjs/functions/array/sequence/sequence.cjs +19 -9
  148. package/dist/cjs/functions/array/sequence/sequence.cjs.map +2 -2
  149. package/dist/cjs/functions/criteria-parser.cjs +19 -9
  150. package/dist/cjs/functions/criteria-parser.cjs.map +2 -2
  151. package/dist/cjs/functions/criteria-utils.cjs +19 -9
  152. package/dist/cjs/functions/criteria-utils.cjs.map +2 -2
  153. package/dist/cjs/functions/function-registry.cjs +19 -9
  154. package/dist/cjs/functions/function-registry.cjs.map +2 -2
  155. package/dist/cjs/functions/function-utils.cjs +19 -9
  156. package/dist/cjs/functions/function-utils.cjs.map +2 -2
  157. package/dist/cjs/functions/information/cell/cell.cjs +19 -9
  158. package/dist/cjs/functions/information/cell/cell.cjs.map +2 -2
  159. package/dist/cjs/functions/information/column/column.cjs +19 -9
  160. package/dist/cjs/functions/information/column/column.cjs.map +2 -2
  161. package/dist/cjs/functions/information/row/row.cjs +19 -9
  162. package/dist/cjs/functions/information/row/row.cjs.map +2 -2
  163. package/dist/cjs/functions/logical/and/and.cjs +19 -9
  164. package/dist/cjs/functions/logical/and/and.cjs.map +2 -2
  165. package/dist/cjs/functions/logical/if/if.cjs +19 -9
  166. package/dist/cjs/functions/logical/if/if.cjs.map +2 -2
  167. package/dist/cjs/functions/logical/iferror/iferror.cjs +19 -9
  168. package/dist/cjs/functions/logical/iferror/iferror.cjs.map +2 -2
  169. package/dist/cjs/functions/logical/or/or.cjs +19 -9
  170. package/dist/cjs/functions/logical/or/or.cjs.map +2 -2
  171. package/dist/cjs/functions/lookup/count/count-utils.cjs +19 -9
  172. package/dist/cjs/functions/lookup/count/count-utils.cjs.map +2 -2
  173. package/dist/cjs/functions/lookup/count/count.cjs +19 -9
  174. package/dist/cjs/functions/lookup/count/count.cjs.map +2 -2
  175. package/dist/cjs/functions/lookup/count/countif.cjs +19 -9
  176. package/dist/cjs/functions/lookup/count/countif.cjs.map +2 -2
  177. package/dist/cjs/functions/lookup/count/countifs.cjs +19 -9
  178. package/dist/cjs/functions/lookup/count/countifs.cjs.map +2 -2
  179. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs +19 -9
  180. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs.map +2 -2
  181. package/dist/cjs/functions/lookup/match/match.cjs +21 -10
  182. package/dist/cjs/functions/lookup/match/match.cjs.map +3 -3
  183. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs +19 -9
  184. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs.map +2 -2
  185. package/dist/cjs/functions/math/average/average-utils.cjs +19 -9
  186. package/dist/cjs/functions/math/average/average-utils.cjs.map +2 -2
  187. package/dist/cjs/functions/math/average/average.cjs +19 -9
  188. package/dist/cjs/functions/math/average/average.cjs.map +2 -2
  189. package/dist/cjs/functions/math/average/averageif.cjs +19 -9
  190. package/dist/cjs/functions/math/average/averageif.cjs.map +2 -2
  191. package/dist/cjs/functions/math/average/averageifs.cjs +19 -9
  192. package/dist/cjs/functions/math/average/averageifs.cjs.map +2 -2
  193. package/dist/cjs/functions/math/ceiling/ceiling.cjs +19 -9
  194. package/dist/cjs/functions/math/ceiling/ceiling.cjs.map +2 -2
  195. package/dist/cjs/functions/math/max/max-utils.cjs +19 -9
  196. package/dist/cjs/functions/math/max/max-utils.cjs.map +2 -2
  197. package/dist/cjs/functions/math/max/max.cjs +19 -9
  198. package/dist/cjs/functions/math/max/max.cjs.map +2 -2
  199. package/dist/cjs/functions/math/max/maxif.cjs +19 -9
  200. package/dist/cjs/functions/math/max/maxif.cjs.map +2 -2
  201. package/dist/cjs/functions/math/max/maxifs.cjs +19 -9
  202. package/dist/cjs/functions/math/max/maxifs.cjs.map +2 -2
  203. package/dist/cjs/functions/math/min/min-utils.cjs +19 -9
  204. package/dist/cjs/functions/math/min/min-utils.cjs.map +2 -2
  205. package/dist/cjs/functions/math/min/min.cjs +19 -9
  206. package/dist/cjs/functions/math/min/min.cjs.map +2 -2
  207. package/dist/cjs/functions/math/min/minif.cjs +19 -9
  208. package/dist/cjs/functions/math/min/minif.cjs.map +2 -2
  209. package/dist/cjs/functions/math/min/minifs.cjs +19 -9
  210. package/dist/cjs/functions/math/min/minifs.cjs.map +2 -2
  211. package/dist/cjs/functions/math/sum/sum.cjs +19 -9
  212. package/dist/cjs/functions/math/sum/sum.cjs.map +2 -2
  213. package/dist/cjs/functions/math/sum/sumif.cjs +19 -9
  214. package/dist/cjs/functions/math/sum/sumif.cjs.map +2 -2
  215. package/dist/cjs/functions/math/sum/sumifs.cjs +19 -9
  216. package/dist/cjs/functions/math/sum/sumifs.cjs.map +2 -2
  217. package/dist/cjs/functions/math/sum/summation-utils.cjs +19 -9
  218. package/dist/cjs/functions/math/sum/summation-utils.cjs.map +2 -2
  219. package/dist/cjs/functions/reference/address/address.cjs +19 -9
  220. package/dist/cjs/functions/reference/address/address.cjs.map +2 -2
  221. package/dist/cjs/functions/reference/indirect/indirect.cjs +19 -9
  222. package/dist/cjs/functions/reference/indirect/indirect.cjs.map +2 -2
  223. package/dist/cjs/functions/reference/offset/offset.cjs +19 -9
  224. package/dist/cjs/functions/reference/offset/offset.cjs.map +2 -2
  225. package/dist/cjs/functions/text/concatenate/concatenate.cjs +21 -9
  226. package/dist/cjs/functions/text/concatenate/concatenate.cjs.map +3 -3
  227. package/dist/cjs/functions/text/exact/exact.cjs +19 -9
  228. package/dist/cjs/functions/text/exact/exact.cjs.map +2 -2
  229. package/dist/cjs/functions/text/find/find.cjs +19 -9
  230. package/dist/cjs/functions/text/find/find.cjs.map +2 -2
  231. package/dist/cjs/functions/text/left/left.cjs +19 -9
  232. package/dist/cjs/functions/text/left/left.cjs.map +2 -2
  233. package/dist/cjs/functions/text/len/len.cjs +19 -9
  234. package/dist/cjs/functions/text/len/len.cjs.map +2 -2
  235. package/dist/cjs/functions/text/mid/mid.cjs +19 -9
  236. package/dist/cjs/functions/text/mid/mid.cjs.map +2 -2
  237. package/dist/cjs/functions/text/right/right.cjs +19 -9
  238. package/dist/cjs/functions/text/right/right.cjs.map +2 -2
  239. package/dist/cjs/functions/text/text-helpers.cjs +19 -9
  240. package/dist/cjs/functions/text/text-helpers.cjs.map +2 -2
  241. package/dist/cjs/functions/text/textjoin/textjoin.cjs +19 -9
  242. package/dist/cjs/functions/text/textjoin/textjoin.cjs.map +2 -2
  243. package/dist/cjs/lib.cjs +24 -13
  244. package/dist/cjs/lib.cjs.map +2 -2
  245. package/dist/cjs/package.json +1 -1
  246. package/dist/cjs/parser/ast.cjs +19 -9
  247. package/dist/cjs/parser/ast.cjs.map +2 -2
  248. package/dist/cjs/parser/formatter.cjs +19 -9
  249. package/dist/cjs/parser/formatter.cjs.map +2 -2
  250. package/dist/cjs/parser/grammar.cjs +19 -9
  251. package/dist/cjs/parser/grammar.cjs.map +2 -2
  252. package/dist/cjs/parser/lexer.cjs +19 -9
  253. package/dist/cjs/parser/lexer.cjs.map +2 -2
  254. package/dist/cjs/parser/parser.cjs +19 -9
  255. package/dist/cjs/parser/parser.cjs.map +2 -2
  256. package/dist/cjs/react/hooks.cjs +31 -10
  257. package/dist/cjs/react/hooks.cjs.map +2 -2
  258. package/dist/mjs/core/commands/command-executor.mjs +7 -5
  259. package/dist/mjs/core/commands/command-executor.mjs.map +3 -3
  260. package/dist/mjs/core/commands/content-commands.mjs +279 -2
  261. package/dist/mjs/core/commands/content-commands.mjs.map +3 -3
  262. package/dist/mjs/core/commands/named-expression-commands.mjs +121 -6
  263. package/dist/mjs/core/commands/named-expression-commands.mjs.map +3 -3
  264. package/dist/mjs/core/commands/structure-commands.mjs +204 -8
  265. package/dist/mjs/core/commands/structure-commands.mjs.map +3 -3
  266. package/dist/mjs/core/commands/table-commands.mjs +117 -6
  267. package/dist/mjs/core/commands/table-commands.mjs.map +3 -3
  268. package/dist/mjs/core/commands/types.mjs +18 -1
  269. package/dist/mjs/core/commands/types.mjs.map +3 -3
  270. package/dist/mjs/core/engine-snapshot.mjs +11 -0
  271. package/dist/mjs/core/engine-snapshot.mjs.map +10 -0
  272. package/dist/mjs/core/engine.mjs +42 -26
  273. package/dist/mjs/core/engine.mjs.map +3 -3
  274. package/dist/mjs/core/managers/cache-manager.mjs +105 -1
  275. package/dist/mjs/core/managers/cache-manager.mjs.map +3 -3
  276. package/dist/mjs/core/managers/dependency-manager.mjs +687 -2
  277. package/dist/mjs/core/managers/dependency-manager.mjs.map +3 -3
  278. package/dist/mjs/core/managers/evaluation-manager.mjs +283 -4
  279. package/dist/mjs/core/managers/evaluation-manager.mjs.map +3 -3
  280. package/dist/mjs/core/managers/frontier-dependency-manager.mjs +47 -4
  281. package/dist/mjs/core/managers/frontier-dependency-manager.mjs.map +3 -3
  282. package/dist/mjs/core/managers/named-expression-manager.mjs +104 -21
  283. package/dist/mjs/core/managers/named-expression-manager.mjs.map +3 -3
  284. package/dist/mjs/core/managers/reference-manager.mjs +7 -1
  285. package/dist/mjs/core/managers/reference-manager.mjs.map +3 -3
  286. package/dist/mjs/core/managers/style-manager.mjs +10 -1
  287. package/dist/mjs/core/managers/style-manager.mjs.map +3 -3
  288. package/dist/mjs/core/managers/table-manager.mjs +7 -1
  289. package/dist/mjs/core/managers/table-manager.mjs.map +3 -3
  290. package/dist/mjs/core/managers/workbook-manager.mjs +20 -5
  291. package/dist/mjs/core/managers/workbook-manager.mjs.map +3 -3
  292. package/dist/mjs/core/resource-keys.mjs +27 -0
  293. package/dist/mjs/core/resource-keys.mjs.map +10 -0
  294. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs +17 -1
  295. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs.map +3 -3
  296. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs +4 -1
  297. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs.map +3 -3
  298. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs +17 -3
  299. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs.map +3 -3
  300. package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs +21 -0
  301. package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs.map +10 -0
  302. package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs +4 -1
  303. package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs.map +3 -3
  304. package/dist/mjs/evaluator/formula-evaluator.mjs +42 -4
  305. package/dist/mjs/evaluator/formula-evaluator.mjs.map +3 -3
  306. package/dist/mjs/evaluator/range-evaluation-node.mjs +17 -3
  307. package/dist/mjs/evaluator/range-evaluation-node.mjs.map +3 -3
  308. package/dist/mjs/functions/lookup/match/match.mjs +3 -2
  309. package/dist/mjs/functions/lookup/match/match.mjs.map +3 -3
  310. package/dist/mjs/functions/text/concatenate/concatenate.mjs +3 -1
  311. package/dist/mjs/functions/text/concatenate/concatenate.mjs.map +3 -3
  312. package/dist/mjs/package.json +1 -1
  313. package/dist/types/core/commands/content-commands.d.ts +31 -1
  314. package/dist/types/core/commands/named-expression-commands.d.ts +16 -1
  315. package/dist/types/core/commands/structure-commands.d.ts +24 -1
  316. package/dist/types/core/commands/table-commands.d.ts +16 -1
  317. package/dist/types/core/commands/types.d.ts +25 -1
  318. package/dist/types/core/engine-snapshot.d.ts +138 -0
  319. package/dist/types/core/engine.d.ts +19 -1
  320. package/dist/types/core/managers/cache-manager.d.ts +9 -0
  321. package/dist/types/core/managers/dependency-manager.d.ts +56 -1
  322. package/dist/types/core/managers/dependency-node.d.ts +2 -1
  323. package/dist/types/core/managers/evaluation-manager.d.ts +21 -1
  324. package/dist/types/core/managers/frontier-dependency-manager.d.ts +12 -2
  325. package/dist/types/core/managers/named-expression-manager.d.ts +17 -1
  326. package/dist/types/core/managers/reference-manager.d.ts +3 -0
  327. package/dist/types/core/managers/style-manager.d.ts +3 -0
  328. package/dist/types/core/managers/table-manager.d.ts +3 -0
  329. package/dist/types/core/managers/workbook-manager.d.ts +4 -1
  330. package/dist/types/core/resource-keys.d.ts +14 -0
  331. package/dist/types/evaluator/dependency-nodes/base-eval-node.d.ts +5 -0
  332. package/dist/types/evaluator/dependency-nodes/cell-value-node.d.ts +1 -0
  333. package/dist/types/evaluator/dependency-nodes/empty-cell-evaluation-node.d.ts +8 -1
  334. package/dist/types/evaluator/dependency-nodes/resource-dependency-node.d.ts +8 -0
  335. package/dist/types/evaluator/dependency-nodes/virtual-cell-value-node.d.ts +1 -0
  336. package/dist/types/evaluator/range-evaluation-node.d.ts +8 -1
  337. package/package.json +6 -2
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import {\n FormulaError,\n type CellAddress,\n type CellNumber,\n type ErrorEvaluationResult,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n type ValueEvaluationResult,\n} from \"../../../core/types.cjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.cjs\";\nimport type { FormulaEvaluator } from \"../../../evaluator/formula-evaluator.cjs\";\nimport { convertToString, extractNumericValue } from \"../text-helpers.cjs\";\n\n// Helper function for FIND operation - returns the result, error, or null if not found\nfunction findOperation(\n findTextResult: FunctionEvaluationResult,\n withinTextResult: FunctionEvaluationResult,\n startNumResult: FunctionEvaluationResult,\n context: EvaluationContext\n): CellNumber | ErrorEvaluationResult {\n const findStr = convertToString(findTextResult, context);\n const withinStr = convertToString(withinTextResult, context);\n const startNum = extractNumericValue(startNumResult, context);\n\n // Check if any of the results are awaiting evaluation or errors\n if (\n typeof findStr === \"object\" &&\n (findStr.type === \"awaiting-evaluation\" || findStr.type === \"error\")\n ) {\n return findStr;\n }\n if (\n typeof withinStr === \"object\" &&\n (withinStr.type === \"awaiting-evaluation\" || withinStr.type === \"error\")\n ) {\n return withinStr;\n }\n if (\n typeof startNum === \"object\" &&\n (startNum.type === \"awaiting-evaluation\" || startNum.type === \"error\")\n ) {\n return startNum;\n }\n\n // At this point, all values should be primitive types\n const findValue = findStr as string;\n const withinValue = withinStr as string;\n const startNumValue = startNum as number;\n\n // Validate startNum\n if (startNumValue < 1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Text not found #2\",\n errAddress: context.dependencyNode,\n };\n }\n\n const start = Math.floor(startNumValue) - 1; // Convert to 0-based index\n\n if (start >= withinValue.length) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Text not found #2\",\n errAddress: context.dependencyNode,\n };\n }\n\n const index = withinValue.indexOf(findValue, start);\n if (index === -1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Text not found #2\",\n errAddress: context.dependencyNode,\n };\n }\n\n return { type: \"number\", value: index + 1 }; // Convert back to 1-based index\n}\n\n/**\n * Helper for creating spilled-values result for FIND function\n */\nfunction createFindSpilledResult(\n this: FormulaEvaluator,\n {\n findTextResult,\n withinTextResult,\n startNumResult,\n context,\n }: {\n findTextResult: FunctionEvaluationResult;\n withinTextResult: FunctionEvaluationResult;\n startNumResult: FunctionEvaluationResult;\n context: EvaluationContext;\n }\n): FunctionEvaluationResult {\n // If both findText and withinText are spilled-values, we need to zip them together\n if (\n findTextResult.type === \"spilled-values\" &&\n withinTextResult.type === \"spilled-values\"\n ) {\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress) => {\n // Create unified spill area (union of all spilled ranges)\n let spillArea = this.unionRanges(\n this.projectRange(findTextResult.spillArea(origin), origin),\n this.projectRange(withinTextResult.spillArea(origin), origin)\n );\n\n // Also include startNum spill area if it's spilled\n if (startNumResult.type === \"spilled-values\") {\n spillArea = this.unionRanges(\n spillArea,\n this.projectRange(startNumResult.spillArea(origin), origin)\n );\n }\n return spillArea;\n },\n source: \"FIND with zipped spilled findText and withinText values\",\n evaluate: (spillOffset, evalContext: EvaluationContext) => {\n // Evaluate both spilled arrays at this position\n const spillFindResult = findTextResult.evaluate(\n spillOffset,\n evalContext\n );\n const spillWithinResult = withinTextResult.evaluate(\n spillOffset,\n evalContext\n );\n\n if (!spillFindResult || spillFindResult.type === \"error\") {\n return spillFindResult;\n }\n if (!spillWithinResult || spillWithinResult.type === \"error\") {\n return spillWithinResult;\n }\n\n // Handle startNum - evaluate if spilled, otherwise use as-is\n let startNumArg = startNumResult;\n if (startNumResult.type === \"spilled-values\") {\n const spillStartNumResult = startNumResult.evaluate(\n spillOffset,\n evalContext\n );\n if (!spillStartNumResult || spillStartNumResult.type === \"error\") {\n return spillStartNumResult;\n }\n startNumArg = spillStartNumResult;\n }\n\n const result = findOperation(\n spillFindResult,\n spillWithinResult,\n startNumArg,\n evalContext\n );\n // Handle error or awaiting evaluation results\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result,\n };\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for FIND is not implemented\");\n },\n };\n }\n // If only findText is spilled-values\n else if (\n findTextResult.type === \"spilled-values\" &&\n withinTextResult.type !== \"spilled-values\" &&\n startNumResult.type !== \"spilled-values\"\n ) {\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress) => {\n return findTextResult.spillArea(origin);\n },\n source: \"FIND with spilled findText values\",\n evaluate: (spillOffset, evalContext: EvaluationContext) => {\n const spillResult = findTextResult.evaluate(spillOffset, evalContext);\n if (!spillResult || spillResult.type === \"error\") {\n return spillResult;\n }\n const result = findOperation(\n spillResult,\n withinTextResult,\n startNumResult,\n evalContext\n );\n\n // Handle error or awaiting evaluation results\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result,\n };\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for FIND is not implemented\");\n },\n };\n }\n // If only withinText is spilled-values\n else if (\n withinTextResult.type === \"spilled-values\" &&\n findTextResult.type !== \"spilled-values\" &&\n startNumResult.type !== \"spilled-values\"\n ) {\n return {\n type: \"spilled-values\",\n spillArea: (origin) => withinTextResult.spillArea(origin),\n source: \"FIND with spilled withinText values\",\n evaluate: (spillOffset, evalContext: EvaluationContext) => {\n const spillResult = withinTextResult.evaluate(spillOffset, evalContext);\n if (!spillResult || spillResult.type === \"error\") {\n return spillResult;\n }\n const result = findOperation(\n findTextResult,\n spillResult,\n startNumResult,\n evalContext\n );\n\n // Handle error or awaiting evaluation results\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result,\n };\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for FIND is not implemented\");\n },\n };\n }\n // If findText and startNum are spilled (but not withinText)\n else if (\n findTextResult.type === \"spilled-values\" &&\n startNumResult.type === \"spilled-values\" &&\n withinTextResult.type !== \"spilled-values\"\n ) {\n if (withinTextResult.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Invalid withinText argument\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Strict type checking\n if (withinTextResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"WithinText argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress) => {\n // Create unified spill area (union of both ranges)\n const spillArea = this.unionRanges(\n this.projectRange(findTextResult.spillArea(origin), origin),\n this.projectRange(startNumResult.spillArea(origin), origin)\n );\n return spillArea;\n },\n source: \"FIND with spilled findText and startNum values\",\n evaluate: (spillOffset, evalContext: EvaluationContext) => {\n // Evaluate both spilled arrays at this position\n const spillFindResult = findTextResult.evaluate(\n spillOffset,\n evalContext\n );\n const spillStartNumResult = startNumResult.evaluate(\n spillOffset,\n evalContext\n );\n\n if (!spillFindResult || spillFindResult.type === \"error\") {\n return spillFindResult;\n }\n if (!spillStartNumResult || spillStartNumResult.type === \"error\") {\n return spillStartNumResult;\n }\n\n const result = findOperation(\n spillFindResult,\n withinTextResult,\n spillStartNumResult,\n evalContext\n );\n\n // Handle error or awaiting evaluation results\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result,\n };\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for FIND is not implemented\");\n },\n };\n }\n // If withinText and startNum are spilled (but not findText)\n else if (\n withinTextResult.type === \"spilled-values\" &&\n startNumResult.type === \"spilled-values\" &&\n findTextResult.type !== \"spilled-values\"\n ) {\n if (findTextResult.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Invalid findText argument\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Strict type checking\n if (findTextResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"FindText argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress) => {\n // Create unified spill area (union of both ranges)\n const spillArea = this.unionRanges(\n this.projectRange(withinTextResult.spillArea(origin), origin),\n this.projectRange(startNumResult.spillArea(origin), origin)\n );\n return spillArea;\n },\n source: \"FIND with spilled withinText and startNum values\",\n evaluate: (spillOffset, evalContext: EvaluationContext) => {\n // Evaluate both spilled arrays at this position\n const spillWithinResult = withinTextResult.evaluate(\n spillOffset,\n evalContext\n );\n const spillStartNumResult = startNumResult.evaluate(\n spillOffset,\n evalContext\n );\n\n if (!spillWithinResult || spillWithinResult.type === \"error\") {\n return spillWithinResult;\n }\n if (!spillStartNumResult || spillStartNumResult.type === \"error\") {\n return spillStartNumResult;\n }\n\n const result = findOperation(\n findTextResult,\n spillWithinResult,\n spillStartNumResult,\n evalContext\n );\n\n // Handle error or awaiting evaluation results\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result,\n };\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for FIND is not implemented\");\n },\n };\n }\n // If only startNum is spilled-values\n else if (\n startNumResult.type === \"spilled-values\" &&\n findTextResult.type !== \"spilled-values\" &&\n withinTextResult.type !== \"spilled-values\"\n ) {\n if (findTextResult.type !== \"value\") {\n return findTextResult;\n }\n if (withinTextResult.type !== \"value\") {\n return withinTextResult;\n }\n\n // Strict type checking\n if (findTextResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"FindText argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (withinTextResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"WithinText argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress) => startNumResult.spillArea(origin),\n source: \"FIND with spilled startNum values\",\n evaluate: (spillOffset, evalContext: EvaluationContext) => {\n const spillResult = startNumResult.evaluate(spillOffset, evalContext);\n if (!spillResult || spillResult.type === \"error\") {\n return spillResult;\n }\n\n // Create a proper startNum argument for findOperation\n if (spillResult.type !== \"value\") {\n return spillResult;\n }\n const startNumArg: ValueEvaluationResult = {\n type: \"value\",\n result: spillResult.result,\n };\n\n const result = findOperation(\n findTextResult,\n withinTextResult,\n startNumArg,\n evalContext\n );\n\n // Handle error or awaiting evaluation results\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result,\n };\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for FIND is not implemented\");\n },\n };\n }\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Invalid arguments for FIND\",\n errAddress: context.dependencyNode,\n };\n}\n\n/**\n * FIND function - Finds one text string within another (case-sensitive)\n *\n * Usage: FIND(find_text, within_text, [start_num])\n *\n * find_text: The text you want to find.\n * within_text: The text containing the text you want to find.\n * start_num: [Optional] The character at which to start the search (default: 1).\n *\n * Example: FIND(\"World\", \"Hello World\", 1) returns 7\n *\n * Note:\n * - The search is case-sensitive\n * - Returns the position of the first character of find_text within within_text\n * - Returns #VALUE! error if text is not found\n * - Supports dynamic arrays (spilled values) for find_text and within_text\n * - Strict type checking: text arguments must be strings, start_num must be number\n */\nexport const FIND: FunctionDefinition = {\n name: \"FIND\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length < 2 || node.args.length > 3) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"FIND function takes 2 or 3 arguments\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate findText argument\n const findTextResult = this.evaluateNode(node.args[0]!, context);\n if (findTextResult.type === \"error\") {\n return findTextResult;\n }\n\n // Evaluate withinText argument\n const withinTextResult = this.evaluateNode(node.args[1]!, context);\n if (withinTextResult.type === \"error\") {\n return withinTextResult;\n }\n\n // Evaluate startNum argument (optional, defaults to 1)\n let startNumResult: FunctionEvaluationResult;\n if (node.args.length > 2) {\n startNumResult = this.evaluateNode(node.args[2]!, context);\n } else {\n startNumResult = {\n type: \"value\",\n result: { type: \"number\", value: 1 },\n };\n }\n\n // Handle spilled-values inputs - return spilled-values for spilling\n if (\n findTextResult.type === \"spilled-values\" ||\n withinTextResult.type === \"spilled-values\" ||\n startNumResult.type === \"spilled-values\"\n ) {\n return createFindSpilledResult.call(this, {\n findTextResult,\n withinTextResult,\n startNumResult,\n context,\n });\n }\n\n if (findTextResult.type === \"awaiting-evaluation\") {\n return findTextResult;\n }\n if (withinTextResult.type === \"awaiting-evaluation\") {\n return withinTextResult;\n }\n\n // Strict type checking - no coercion\n if (findTextResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"FindText argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (withinTextResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"WithinText argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n const result = findOperation(\n findTextResult,\n withinTextResult,\n startNumResult,\n context\n );\n\n // Handle error or awaiting evaluation results\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n\n return {\n type: \"value\",\n result: result,\n };\n },\n};\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "D9FB09A8E65EB16164756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "A40352D6A16F4AD764756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -106,4 +116,4 @@ var LEFT = {
106
116
  }
107
117
  };
108
118
 
109
- //# debugId=47FE1F70E7D56D8664756E2164756E21
119
+ //# debugId=F3FF75F1997FD64664756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import {\n FormulaError,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n} from \"../../../core/types.cjs\";\nimport { createMidSpilledResult, midOperation } from \"../text-helpers.cjs\";\n\n/**\n * LEFT function - Returns the leftmost characters from a text string\n *\n * Usage: LEFT(text, num_chars)\n *\n * text: The text string to extract characters from.\n * num_chars: The number of characters to extract from the left side of the text.\n *\n * Example: LEFT(\"Hello, World!\", 5) returns \"Hello\"\n *\n * Note:\n * - If num_chars is less than 0, the function returns an error.\n * - If num_chars is greater than the length of text, the function returns the entire text.\n * - Supports dynamic arrays (spilled values) for both arguments\n * - Strict type checking: text must be string, num_chars must be number\n * - Implemented as MID(text, 1, num_chars)\n */\nexport const LEFT: FunctionDefinition = {\n name: \"LEFT\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length < 1 || node.args.length > 2) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"LEFT function takes 1 or 2 arguments\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate the text argument\n const textResult = this.evaluateNode(node.args[0]!, context);\n if (textResult.type === \"error\") {\n return textResult;\n }\n\n // Evaluate the numChars argument (optional, defaults to 1)\n let numCharsResult: FunctionEvaluationResult;\n if (node.args.length > 1) {\n numCharsResult = this.evaluateNode(node.args[1]!, context);\n if (numCharsResult.type === \"error\") {\n return numCharsResult;\n }\n } else {\n numCharsResult = {\n type: \"value\",\n result: { type: \"number\", value: 1 },\n };\n }\n\n // Create start_num argument (always 1 for LEFT)\n const startNumResult: FunctionEvaluationResult = {\n type: \"value\",\n result: { type: \"number\", value: 1 },\n };\n\n // Handle spilled-values inputs using MID's spilled result handler\n if (textResult.type === \"spilled-values\" || numCharsResult.type === \"spilled-values\") {\n return createMidSpilledResult.call(this, {\n textResult,\n startNumResult,\n numCharsResult,\n context,\n });\n }\n\n // Both arguments are single values\n if (textResult.type === \"awaiting-evaluation\") {\n return textResult;\n }\n\n if (numCharsResult.type === \"awaiting-evaluation\") {\n return numCharsResult;\n }\n\n // Strict type checking - no coercion\n if (textResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Text argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (numCharsResult.result.type !== \"number\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"NumChars argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Use MID operation: LEFT(text, num_chars) = MID(text, 1, num_chars)\n const result = midOperation(textResult, startNumResult, numCharsResult, context);\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result.result,\n };\n },\n};"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAJP;AAKqD,IAArD;AAmBO,IAAM,OAA2B;AAAA,EACtC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAC3D,IAAI,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,GAAG;AAAA,MAChD,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC3D,IAAI,WAAW,SAAS,SAAS;AAAA,MAC/B,OAAO;AAAA,IACT;AAAA,IAGA,IAAI;AAAA,IACJ,IAAI,KAAK,KAAK,SAAS,GAAG;AAAA,MACxB,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,MACzD,IAAI,eAAe,SAAS,SAAS;AAAA,QACnC,OAAO;AAAA,MACT;AAAA,IACF,EAAO;AAAA,MACL,iBAAiB;AAAA,QACf,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,UAAU,OAAO,EAAE;AAAA,MACrC;AAAA;AAAA,IAIF,MAAM,iBAA2C;AAAA,MAC/C,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,UAAU,OAAO,EAAE;AAAA,IACrC;AAAA,IAGA,IAAI,WAAW,SAAS,oBAAoB,eAAe,SAAS,kBAAkB;AAAA,MACpF,OAAO,2CAAuB,KAAK,MAAM;AAAA,QACvC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,WAAW,SAAS,uBAAuB;AAAA,MAC7C,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,eAAe,SAAS,uBAAuB;AAAA,MACjD,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,SAAS,iCAAa,YAAY,gBAAgB,gBAAgB,OAAO;AAAA,IAC/E,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,uBAAuB;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,IACjB;AAAA;AAEJ;",
8
- "debugId": "47FE1F70E7D56D8664756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAJP;AAKqD,IAArD;AAmBO,IAAM,OAA2B;AAAA,EACtC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAC3D,IAAI,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,GAAG;AAAA,MAChD,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC3D,IAAI,WAAW,SAAS,SAAS;AAAA,MAC/B,OAAO;AAAA,IACT;AAAA,IAGA,IAAI;AAAA,IACJ,IAAI,KAAK,KAAK,SAAS,GAAG;AAAA,MACxB,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,MACzD,IAAI,eAAe,SAAS,SAAS;AAAA,QACnC,OAAO;AAAA,MACT;AAAA,IACF,EAAO;AAAA,MACL,iBAAiB;AAAA,QACf,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,UAAU,OAAO,EAAE;AAAA,MACrC;AAAA;AAAA,IAIF,MAAM,iBAA2C;AAAA,MAC/C,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,UAAU,OAAO,EAAE;AAAA,IACrC;AAAA,IAGA,IAAI,WAAW,SAAS,oBAAoB,eAAe,SAAS,kBAAkB;AAAA,MACpF,OAAO,2CAAuB,KAAK,MAAM;AAAA,QACvC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,WAAW,SAAS,uBAAuB;AAAA,MAC7C,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,eAAe,SAAS,uBAAuB;AAAA,MACjD,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,SAAS,iCAAa,YAAY,gBAAgB,gBAAgB,OAAO;AAAA,IAC/E,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,uBAAuB;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,IACjB;AAAA;AAEJ;",
8
+ "debugId": "F3FF75F1997FD64664756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -116,4 +126,4 @@ function createLenSpilledResult({
116
126
  };
117
127
  }
118
128
 
119
- //# debugId=A7B011B1E40B76F664756E2164756E21
129
+ //# debugId=132AADF6736FC26064756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import {\n FormulaError,\n type CellAddress,\n type FunctionDefinition,\n type FunctionEvaluationResult\n} from \"../../../core/types.cjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.cjs\";\nimport type { FormulaEvaluator } from \"../../../evaluator/formula-evaluator.cjs\";\n\n/**\n * LEN function - Returns the length of a text string\n *\n * Usage: LEN(text)\n *\n * text: The text string whose length you want to find.\n *\n * Example: LEN(\"Hello World\") returns 11\n *\n * Note:\n * - Supports dynamic arrays (spilled values) for the text argument\n * - Strict type checking: text must be string\n * - Returns the number of characters in the text string\n */\nexport const LEN: FunctionDefinition = {\n name: \"LEN\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length !== 1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"LEN function takes exactly 1 argument\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate the text argument\n const textResult = this.evaluateNode(node.args[0]!, context);\n if (\n textResult.type === \"error\" ||\n textResult.type === \"awaiting-evaluation\"\n ) {\n return textResult;\n }\n\n // Handle spilled-values input\n if (textResult.type === \"spilled-values\") {\n return createLenSpilledResult.call(this, {\n textResult,\n context,\n });\n }\n\n // Strict type checking - no coercion\n if (textResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Text argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (textResult.result.type === \"string\") {\n return {\n type: \"value\",\n result: { type: \"number\", value: textResult.result.value.length },\n };\n }\n\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"LEN operation failed\",\n errAddress: context.dependencyNode,\n };\n },\n};\n\n/**\n * Helper for creating spilled-values result for LEN function\n */\nfunction createLenSpilledResult(\n this: FormulaEvaluator,\n {\n textResult,\n context,\n }: {\n textResult: FunctionEvaluationResult;\n context: EvaluationContext;\n }\n): FunctionEvaluationResult {\n if (textResult.type !== \"spilled-values\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"createLenSpilledResult called without spilled values\",\n errAddress: context.dependencyNode,\n };\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress) => textResult.spillArea(origin),\n source: \"LEN with spilled text values\",\n evaluate: (spillOffset, evalContext) => {\n const spillTextResult = textResult.evaluate(spillOffset, evalContext);\n if (\n !spillTextResult ||\n spillTextResult.type === \"error\" ||\n spillTextResult.type === \"awaiting-evaluation\"\n ) {\n return spillTextResult;\n }\n\n if (\n spillTextResult.type !== \"value\" ||\n spillTextResult.result.type !== \"string\"\n ) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"LEN operation failed\",\n errAddress: context.dependencyNode,\n };\n }\n\n return {\n type: \"value\",\n result: { type: \"number\", value: spillTextResult.result.value.length },\n };\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for LEN is not implemented\");\n },\n };\n}\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IALP;AAuBO,IAAM,MAA0B;AAAA,EACrC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAC3D,IAAI,KAAK,KAAK,WAAW,GAAG;AAAA,MAC1B,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC3D,IACE,WAAW,SAAS,WACpB,WAAW,SAAS,uBACpB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,WAAW,SAAS,kBAAkB;AAAA,MACxC,OAAO,uBAAuB,KAAK,MAAM;AAAA,QACvC;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,UAAU,OAAO,WAAW,OAAO,MAAM,OAAO;AAAA,MAClE;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,0BAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA;AAEJ;AAKA,SAAS,sBAAsB;AAAA,EAG3B;AAAA,EACA;AAAA,GAKwB;AAAA,EAC1B,IAAI,WAAW,SAAS,kBAAkB;AAAA,IACxC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,0BAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW,CAAC,WAAwB,WAAW,UAAU,MAAM;AAAA,IAC/D,QAAQ;AAAA,IACR,UAAU,CAAC,aAAa,gBAAgB;AAAA,MACtC,MAAM,kBAAkB,WAAW,SAAS,aAAa,WAAW;AAAA,MACpE,IACE,CAAC,mBACD,gBAAgB,SAAS,WACzB,gBAAgB,SAAS,uBACzB;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA,IACE,gBAAgB,SAAS,WACzB,gBAAgB,OAAO,SAAS,UAChC;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,KAAK,0BAAa;AAAA,UAClB,SAAS;AAAA,UACT,YAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,UAAU,OAAO,gBAAgB,OAAO,MAAM,OAAO;AAAA,MACvE;AAAA;AAAA,IAEF,kBAAkB,CAAC,sBAAsB;AAAA,MACvC,MAAM,IAAI,MAAM,kDAAkD;AAAA;AAAA,EAEtE;AAAA;",
8
- "debugId": "A7B011B1E40B76F664756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IALP;AAuBO,IAAM,MAA0B;AAAA,EACrC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAC3D,IAAI,KAAK,KAAK,WAAW,GAAG;AAAA,MAC1B,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC3D,IACE,WAAW,SAAS,WACpB,WAAW,SAAS,uBACpB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,WAAW,SAAS,kBAAkB;AAAA,MACxC,OAAO,uBAAuB,KAAK,MAAM;AAAA,QACvC;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,UAAU,OAAO,WAAW,OAAO,MAAM,OAAO;AAAA,MAClE;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,0BAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA;AAEJ;AAKA,SAAS,sBAAsB;AAAA,EAG3B;AAAA,EACA;AAAA,GAKwB;AAAA,EAC1B,IAAI,WAAW,SAAS,kBAAkB;AAAA,IACxC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,0BAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW,CAAC,WAAwB,WAAW,UAAU,MAAM;AAAA,IAC/D,QAAQ;AAAA,IACR,UAAU,CAAC,aAAa,gBAAgB;AAAA,MACtC,MAAM,kBAAkB,WAAW,SAAS,aAAa,WAAW;AAAA,MACpE,IACE,CAAC,mBACD,gBAAgB,SAAS,WACzB,gBAAgB,SAAS,uBACzB;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA,IACE,gBAAgB,SAAS,WACzB,gBAAgB,OAAO,SAAS,UAChC;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,KAAK,0BAAa;AAAA,UAClB,SAAS;AAAA,UACT,YAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,UAAU,OAAO,gBAAgB,OAAO,MAAM,OAAO;AAAA,MACvE;AAAA;AAAA,IAEF,kBAAkB,CAAC,sBAAsB;AAAA,MACvC,MAAM,IAAI,MAAM,kDAAkD;AAAA;AAAA,EAEtE;AAAA;",
8
+ "debugId": "132AADF6736FC26064756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -100,4 +110,4 @@ var MID = {
100
110
  }
101
111
  };
102
112
 
103
- //# debugId=284EEE49AECC995264756E2164756E21
113
+ //# debugId=CA5BB0CC3927A41864756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import {\n FormulaError,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n} from \"../../../core/types.cjs\";\nimport { createMidSpilledResult, midOperation } from \"../text-helpers.cjs\";\n\n/**\n * MID function - Returns characters from the middle of a text string\n *\n * Usage: MID(text, start_num, num_chars)\n *\n * text: The text string to extract characters from.\n * start_num: The position of the first character to extract (1-based).\n * num_chars: The number of characters to extract.\n *\n * Example: MID(\"Hello, World!\", 8, 5) returns \"World\"\n *\n * Note:\n * - If start_num is less than 1, the function returns an error.\n * - If num_chars is less than 0, the function returns an error.\n * - If start_num is greater than the length of text, the function returns an empty string.\n * - Supports dynamic arrays (spilled values) for all arguments\n * - Strict type checking: text must be string, start_num and num_chars must be numbers\n */\nexport const MID: FunctionDefinition = {\n name: \"MID\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length !== 3) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"MID function takes exactly 3 arguments\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate the text argument\n const textResult = this.evaluateNode(node.args[0]!, context);\n if (\n textResult.type === \"error\" ||\n textResult.type === \"awaiting-evaluation\"\n ) {\n return textResult;\n }\n\n // Evaluate the start_num argument\n const startNumResult = this.evaluateNode(node.args[1]!, context);\n if (\n startNumResult.type === \"error\" ||\n startNumResult.type === \"awaiting-evaluation\"\n ) {\n return startNumResult;\n }\n\n // Evaluate the num_chars argument\n const numCharsResult = this.evaluateNode(node.args[2]!, context);\n if (\n numCharsResult.type === \"error\" ||\n numCharsResult.type === \"awaiting-evaluation\"\n ) {\n return numCharsResult;\n }\n\n // Handle spilled-values inputs\n if (\n textResult.type === \"spilled-values\" ||\n startNumResult.type === \"spilled-values\" ||\n numCharsResult.type === \"spilled-values\"\n ) {\n return createMidSpilledResult.call(this, {\n textResult,\n startNumResult,\n numCharsResult,\n context,\n });\n }\n\n // Strict type checking - no coercion\n if (textResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Text argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (startNumResult.result.type !== \"number\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Start_num argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (numCharsResult.result.type !== \"number\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Num_chars argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n const result = midOperation(\n textResult,\n startNumResult,\n numCharsResult,\n context\n );\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return {\n type: \"value\",\n result: result.result,\n };\n },\n};\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAJP;AAKqD,IAArD;AAoBO,IAAM,MAA0B;AAAA,EACrC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAC3D,IAAI,KAAK,KAAK,WAAW,GAAG;AAAA,MAC1B,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC3D,IACE,WAAW,SAAS,WACpB,WAAW,SAAS,uBACpB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC/D,IACE,eAAe,SAAS,WACxB,eAAe,SAAS,uBACxB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC/D,IACE,eAAe,SAAS,WACxB,eAAe,SAAS,uBACxB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,IACE,WAAW,SAAS,oBACpB,eAAe,SAAS,oBACxB,eAAe,SAAS,kBACxB;AAAA,MACA,OAAO,2CAAuB,KAAK,MAAM;AAAA,QACvC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,iCACb,YACA,gBACA,gBACA,OACF;AAAA,IACA,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,uBAAuB;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,IACjB;AAAA;AAEJ;",
8
- "debugId": "284EEE49AECC995264756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAJP;AAKqD,IAArD;AAoBO,IAAM,MAA0B;AAAA,EACrC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAC3D,IAAI,KAAK,KAAK,WAAW,GAAG;AAAA,MAC1B,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC3D,IACE,WAAW,SAAS,WACpB,WAAW,SAAS,uBACpB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC/D,IACE,eAAe,SAAS,WACxB,eAAe,SAAS,uBACxB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC/D,IACE,eAAe,SAAS,WACxB,eAAe,SAAS,uBACxB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,IACE,WAAW,SAAS,oBACpB,eAAe,SAAS,oBACxB,eAAe,SAAS,kBACxB;AAAA,MACA,OAAO,2CAAuB,KAAK,MAAM;AAAA,QACvC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,iCACb,YACA,gBACA,gBACA,OACF;AAAA,IACA,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,uBAAuB;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,IACjB;AAAA;AAEJ;",
8
+ "debugId": "CA5BB0CC3927A41864756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -164,4 +174,4 @@ function createRightSpilledResult({
164
174
  };
165
175
  }
166
176
 
167
- //# debugId=D1C518A875ED4EC764756E2164756E21
177
+ //# debugId=AD90C4A3348D706964756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import {\n FormulaError,\n type CellAddress,\n type CellString,\n type ErrorEvaluationResult,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n type SingleEvaluationResult,\n type SpilledValuesEvaluationResult,\n type SpreadsheetRange,\n} from \"../../../core/types.cjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.cjs\";\nimport { FormulaEvaluator } from \"../../../evaluator/formula-evaluator.cjs\";\nimport {\n convertToString,\n extractNumericValue,\n midOperation\n} from \"../text-helpers.cjs\";\n\n/**\n * RIGHT function - Returns the rightmost characters from a text string\n *\n * Usage: RIGHT(text, num_chars)\n *\n * text: The text string to extract characters from.\n * num_chars: The number of characters to extract from the right side of the text.\n *\n * Example: RIGHT(\"Hello, World!\", 6) returns \"World!\"\n *\n * Note:\n * - If num_chars is less than 0, the function returns an error.\n * - If num_chars is greater than the length of text, the function returns the entire text.\n * - Supports dynamic arrays (spilled values) for both arguments\n * - Strict type checking: text must be string, num_chars must be number\n * - Implemented as MID(text, LEN(text) - num_chars + 1, num_chars)\n */\n\n/**\n * Helper function to calculate RIGHT operation using MID\n */\nfunction rightOperation(\n textResult: FunctionEvaluationResult,\n numCharsResult: FunctionEvaluationResult,\n context: EvaluationContext\n): { type: \"value\"; result: CellString } | ErrorEvaluationResult {\n const textStr = convertToString(textResult, context);\n const numChars = extractNumericValue(numCharsResult, context);\n\n // Check if any of the results are awaiting evaluation or errors\n if (\n typeof textStr === \"object\" &&\n (textStr.type === \"awaiting-evaluation\" || textStr.type === \"error\")\n ) {\n return textStr;\n }\n if (\n typeof numChars === \"object\" &&\n (numChars.type === \"awaiting-evaluation\" || numChars.type === \"error\")\n ) {\n return numChars;\n }\n\n // At this point, all values should be primitive types\n const textValue = textStr as string;\n const numCharsValue = numChars as number;\n\n // Validate numChars\n if (numCharsValue < 0) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"NumChars argument must be a positive number\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Calculate start position: LEN(text) - num_chars + 1\n const textLength = textValue.length;\n const startPos = Math.max(1, textLength - Math.floor(numCharsValue) + 1);\n\n // Create start_num result\n const startNumResult: FunctionEvaluationResult = {\n type: \"value\",\n result: { type: \"number\", value: startPos },\n };\n\n // Use MID operation\n return midOperation(textResult, startNumResult, numCharsResult, context);\n}\n\nexport const RIGHT: FunctionDefinition = {\n name: \"RIGHT\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length < 1 || node.args.length > 2) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"RIGHT function takes 1 or 2 arguments\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate the text argument\n const textResult = this.evaluateNode(node.args[0]!, context);\n if (\n textResult.type === \"error\" ||\n textResult.type === \"awaiting-evaluation\"\n ) {\n return textResult;\n }\n\n // Evaluate the numChars argument (optional, defaults to 1)\n let numCharsResult: FunctionEvaluationResult;\n if (node.args.length > 1) {\n numCharsResult = this.evaluateNode(node.args[1]!, context);\n if (\n numCharsResult.type === \"error\" ||\n numCharsResult.type === \"awaiting-evaluation\"\n ) {\n return numCharsResult;\n }\n } else {\n numCharsResult = {\n type: \"value\",\n result: { type: \"number\", value: 1 },\n };\n }\n\n // Handle spilled-values inputs\n if (\n textResult.type === \"spilled-values\" ||\n numCharsResult.type === \"spilled-values\"\n ) {\n // For RIGHT with spilled values, we need a custom spilled result handler\n // because we need to calculate start_num dynamically for each text value\n return createRightSpilledResult.call(this, {\n textResult,\n numCharsResult,\n context,\n });\n }\n\n // Strict type checking - no coercion\n if (textResult.result.type !== \"string\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Text argument must be a string\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (numCharsResult.result.type !== \"number\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"NumChars argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Use RIGHT operation: RIGHT(text, num_chars) = MID(text, LEN(text) - num_chars + 1, num_chars)\n return rightOperation(textResult, numCharsResult, context);\n },\n};\n\n/**\n * Helper for creating spilled-values result for RIGHT function\n */\nfunction createRightSpilledResult(\n this: FormulaEvaluator,\n {\n textResult,\n numCharsResult,\n context,\n }: {\n textResult: FunctionEvaluationResult;\n numCharsResult: FunctionEvaluationResult;\n context: EvaluationContext;\n }\n): SpilledValuesEvaluationResult | ErrorEvaluationResult {\n if (\n textResult.type !== \"spilled-values\" &&\n numCharsResult.type !== \"spilled-values\"\n ) {\n throw new Error(\"createRightSpilledResult called without spilled values\");\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress): SpreadsheetRange => {\n // Calculate spill area\n let spillArea;\n if (textResult.type === \"spilled-values\") {\n spillArea = textResult.spillArea(origin);\n } else if (numCharsResult.type === \"spilled-values\") {\n spillArea = numCharsResult.spillArea(origin);\n } else {\n throw new Error(\"No spilled values found\");\n }\n\n // Union spill areas if both are spilled\n if (\n textResult.type === \"spilled-values\" &&\n numCharsResult.type === \"spilled-values\"\n ) {\n spillArea = this.unionRanges(\n this.projectRange(textResult.spillArea(origin), origin),\n this.projectRange(numCharsResult.spillArea(origin), origin)\n );\n }\n return spillArea;\n },\n source: \"RIGHT with spilled values\",\n evaluate: (spilledCell, evalContext): SingleEvaluationResult => {\n // Evaluate arguments at this spilled position\n const spillTextResult =\n textResult.type === \"spilled-values\"\n ? textResult.evaluate(spilledCell, evalContext)\n : textResult;\n const spillNumResult =\n numCharsResult.type === \"spilled-values\"\n ? numCharsResult.evaluate(spilledCell, evalContext)\n : numCharsResult;\n\n if (spillTextResult === undefined || spillNumResult === undefined) {\n return {\n type: \"error\",\n err: FormulaError.REF,\n message: \"The spilled results have not been evaluated\",\n errAddress: context.dependencyNode,\n };\n }\n if (spillNumResult.type === \"error\") {\n return spillNumResult;\n }\n if (spillTextResult.type === \"error\") {\n return spillTextResult;\n }\n\n return rightOperation(spillTextResult, spillNumResult, context);\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for RIGHT is not implemented\");\n },\n };\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "D1C518A875ED4EC764756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,IAVP;AAiBO,IAJP;AA2BA,SAAS,cAAc,CACrB,YACA,gBACA,SAC+D;AAAA,EAC/D,MAAM,UAAU,oCAAgB,YAAY,OAAO;AAAA,EACnD,MAAM,WAAW,wCAAoB,gBAAgB,OAAO;AAAA,EAG5D,IACE,OAAO,YAAY,aAClB,QAAQ,SAAS,yBAAyB,QAAQ,SAAS,UAC5D;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IACE,OAAO,aAAa,aACnB,SAAS,SAAS,yBAAyB,SAAS,SAAS,UAC9D;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,YAAY;AAAA,EAClB,MAAM,gBAAgB;AAAA,EAGtB,IAAI,gBAAgB,GAAG;AAAA,IACrB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,0BAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAGA,MAAM,aAAa,UAAU;AAAA,EAC7B,MAAM,WAAW,KAAK,IAAI,GAAG,aAAa,KAAK,MAAM,aAAa,IAAI,CAAC;AAAA,EAGvE,MAAM,iBAA2C;AAAA,IAC/C,MAAM;AAAA,IACN,QAAQ,EAAE,MAAM,UAAU,OAAO,SAAS;AAAA,EAC5C;AAAA,EAGA,OAAO,iCAAa,YAAY,gBAAgB,gBAAgB,OAAO;AAAA;AAGlE,IAAM,QAA4B;AAAA,EACvC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAC3D,IAAI,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,GAAG;AAAA,MAChD,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC3D,IACE,WAAW,SAAS,WACpB,WAAW,SAAS,uBACpB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,IAAI;AAAA,IACJ,IAAI,KAAK,KAAK,SAAS,GAAG;AAAA,MACxB,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,MACzD,IACE,eAAe,SAAS,WACxB,eAAe,SAAS,uBACxB;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF,EAAO;AAAA,MACL,iBAAiB;AAAA,QACf,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,UAAU,OAAO,EAAE;AAAA,MACrC;AAAA;AAAA,IAIF,IACE,WAAW,SAAS,oBACpB,eAAe,SAAS,kBACxB;AAAA,MAGA,OAAO,yBAAyB,KAAK,MAAM;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,WAAW,OAAO,SAAS,UAAU;AAAA,MACvC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO,SAAS,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,OAAO,eAAe,YAAY,gBAAgB,OAAO;AAAA;AAE7D;AAKA,SAAS,wBAAwB;AAAA,EAG7B;AAAA,EACA;AAAA,EACA;AAAA,GAMqD;AAAA,EACvD,IACE,WAAW,SAAS,oBACpB,eAAe,SAAS,kBACxB;AAAA,IACA,MAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WAAW,CAAC,WAA0C;AAAA,MAEpD,IAAI;AAAA,MACJ,IAAI,WAAW,SAAS,kBAAkB;AAAA,QACxC,YAAY,WAAW,UAAU,MAAM;AAAA,MACzC,EAAO,SAAI,eAAe,SAAS,kBAAkB;AAAA,QACnD,YAAY,eAAe,UAAU,MAAM;AAAA,MAC7C,EAAO;AAAA,QACL,MAAM,IAAI,MAAM,yBAAyB;AAAA;AAAA,MAI3C,IACE,WAAW,SAAS,oBACpB,eAAe,SAAS,kBACxB;AAAA,QACA,YAAY,KAAK,YACf,KAAK,aAAa,WAAW,UAAU,MAAM,GAAG,MAAM,GACtD,KAAK,aAAa,eAAe,UAAU,MAAM,GAAG,MAAM,CAC5D;AAAA,MACF;AAAA,MACA,OAAO;AAAA;AAAA,IAET,QAAQ;AAAA,IACR,UAAU,CAAC,aAAa,gBAAwC;AAAA,MAE9D,MAAM,kBACJ,WAAW,SAAS,mBAChB,WAAW,SAAS,aAAa,WAAW,IAC5C;AAAA,MACN,MAAM,iBACJ,eAAe,SAAS,mBACpB,eAAe,SAAS,aAAa,WAAW,IAChD;AAAA,MAEN,IAAI,oBAAoB,aAAa,mBAAmB,WAAW;AAAA,QACjE,OAAO;AAAA,UACL,MAAM;AAAA,UACN,KAAK,0BAAa;AAAA,UAClB,SAAS;AAAA,UACT,YAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,MACA,IAAI,eAAe,SAAS,SAAS;AAAA,QACnC,OAAO;AAAA,MACT;AAAA,MACA,IAAI,gBAAgB,SAAS,SAAS;AAAA,QACpC,OAAO;AAAA,MACT;AAAA,MAEA,OAAO,eAAe,iBAAiB,gBAAgB,OAAO;AAAA;AAAA,IAEhE,kBAAkB,CAAC,sBAAsB;AAAA,MACvC,MAAM,IAAI,MAAM,oDAAoD;AAAA;AAAA,EAExE;AAAA;",
8
+ "debugId": "AD90C4A3348D706964756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -176,4 +186,4 @@ function createMidSpilledResult({
176
186
  };
177
187
  }
178
188
 
179
- //# debugId=E3BDF9841148CE9C64756E2164756E21
189
+ //# debugId=7F27B949799823D364756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import {\n FormulaError,\n type CellString,\n type FunctionEvaluationResult,\n type ValueEvaluationResult,\n type CellAddress,\n type SpreadsheetRange,\n type ErrorEvaluationResult,\n type SingleEvaluationResult,\n} from \"../../core/types.cjs\";\nimport type { FormulaEngine } from \"../../core/engine.cjs\";\nimport type { FormulaEvaluator } from \"../../evaluator/formula-evaluator.cjs\";\nimport type { EvaluationContext } from \"../../evaluator/evaluation-context.cjs\";\n\n/**\n * Strictly extracts string value without type coercion\n */\nexport function convertToString(result: FunctionEvaluationResult, context: EvaluationContext): string | ErrorEvaluationResult {\n if (result.type === \"awaiting-evaluation\") {\n return result;\n }\n \n if (result.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Expected a value result\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (result.result.type === \"string\") {\n return result.result.value;\n } else {\n // No type coercion - only strings are valid\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Expected a string value\",\n errAddress: context.dependencyNode,\n };\n }\n}\n\n/**\n * Strictly extracts numeric value without type coercion\n */\nexport function extractNumericValue(result: FunctionEvaluationResult, context: EvaluationContext): number | ErrorEvaluationResult {\n if (result.type === \"awaiting-evaluation\") {\n return result;\n }\n \n if (result.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Expected a value result\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (result.result.type === \"number\") {\n return result.result.value;\n } else {\n // No type coercion - only numbers are valid\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Expected a number value\",\n errAddress: context.dependencyNode,\n };\n }\n}\n\n/**\n * MID substring operation for MID function\n */\nexport function midOperation(\n textResult: FunctionEvaluationResult,\n startNumResult: FunctionEvaluationResult,\n numCharsResult: FunctionEvaluationResult,\n context: EvaluationContext\n): { type: \"value\"; result: CellString } | ErrorEvaluationResult {\n const textStr = convertToString(textResult, context);\n const startNum = extractNumericValue(startNumResult, context);\n const numChars = extractNumericValue(numCharsResult, context);\n\n // Check if any of the results are awaiting evaluation or errors\n if (typeof textStr === \"object\" && (textStr.type === \"awaiting-evaluation\" || textStr.type === \"error\")) {\n return textStr;\n }\n if (typeof startNum === \"object\" && (startNum.type === \"awaiting-evaluation\" || startNum.type === \"error\")) {\n return startNum;\n }\n if (typeof numChars === \"object\" && (numChars.type === \"awaiting-evaluation\" || numChars.type === \"error\")) {\n return numChars;\n }\n\n // At this point, all values should be primitive types\n const textValue = textStr as string;\n const startNumValue = startNum as number;\n const numCharsValue = numChars as number;\n\n // Validate startNum and numChars\n if (startNumValue < 1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"StartNum argument must be a positive number\",\n errAddress: context.dependencyNode,\n };\n }\n if (numCharsValue < 0) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"NumChars argument must be a positive number\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Convert to 0-based index (Excel uses 1-based)\n const startIndex = Math.floor(startNumValue) - 1;\n const length = Math.floor(numCharsValue);\n\n // Extract substring\n const result = textValue.substring(startIndex, startIndex + length);\n\n return { type: \"value\", result: { type: \"string\", value: result } };\n}\n\n/**\n * Helper for creating spilled-values result for MID function (3 parameters)\n */\nexport function createMidSpilledResult(\n this: FormulaEvaluator,\n {\n textResult,\n startNumResult,\n numCharsResult,\n context,\n }: {\n textResult: FunctionEvaluationResult;\n startNumResult: FunctionEvaluationResult;\n numCharsResult: FunctionEvaluationResult;\n context: EvaluationContext;\n }\n): FunctionEvaluationResult {\n const hasSpilledText = textResult.type === \"spilled-values\";\n const hasSpilledStart = startNumResult.type === \"spilled-values\";\n const hasSpilledNum = numCharsResult.type === \"spilled-values\";\n\n if (!hasSpilledText && !hasSpilledStart && !hasSpilledNum) {\n throw new Error(\"createMidSpilledResult called without spilled values\");\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress) => {\n // Calculate spill area (union of all spilled ranges)\n let spillArea: SpreadsheetRange;\n\n if (hasSpilledText && textResult.type === \"spilled-values\") {\n spillArea = textResult.spillArea(origin);\n } else if (hasSpilledStart && startNumResult.type === \"spilled-values\") {\n spillArea = startNumResult.spillArea(origin);\n } else if (hasSpilledNum && numCharsResult.type === \"spilled-values\") {\n spillArea = numCharsResult.spillArea(origin);\n } else {\n // This shouldn't happen since we check for spilled values at the beginning\n throw new Error(\"No spilled values found\");\n }\n\n // Union with other spilled ranges if they exist\n if (\n hasSpilledText &&\n hasSpilledStart &&\n textResult.type === \"spilled-values\" &&\n startNumResult.type === \"spilled-values\"\n ) {\n spillArea = this.unionRanges(\n this.projectRange(textResult.spillArea(origin), origin),\n this.projectRange(startNumResult.spillArea(origin), origin)\n );\n }\n\n if (\n (hasSpilledText || hasSpilledStart) &&\n hasSpilledNum &&\n numCharsResult.type === \"spilled-values\"\n ) {\n const projectedSpillArea = this.projectRange(spillArea, origin);\n const numSpillArea = this.projectRange(\n numCharsResult.spillArea(origin),\n origin\n );\n spillArea = this.unionRanges(projectedSpillArea, numSpillArea);\n }\n return spillArea;\n },\n source: \"MID with spilled values\",\n evaluate: (\n spilledCell,\n evalContext\n ): SingleEvaluationResult => {\n // Evaluate all arguments at this spilled position\n const spillTextResult = hasSpilledText\n ? textResult.evaluate(spilledCell, evalContext)\n : textResult;\n const spillStartResult = hasSpilledStart\n ? startNumResult.evaluate(spilledCell, evalContext)\n : startNumResult;\n const spillNumResult = hasSpilledNum\n ? numCharsResult.evaluate(spilledCell, evalContext)\n : numCharsResult;\n\n if (!spillTextResult || spillTextResult.type === \"error\") {\n return spillTextResult;\n }\n if (!spillStartResult || spillStartResult.type === \"error\") {\n return spillStartResult;\n }\n if (!spillNumResult || spillNumResult.type === \"error\") {\n return spillNumResult;\n }\n\n return midOperation(spillTextResult, spillStartResult, spillNumResult, evalContext);\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\"WIP: evaluateAllCells for MID is not implemented\");\n },\n };\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "E3BDF9841148CE9C64756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "7F27B949799823D364756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -170,4 +180,4 @@ var TEXTJOIN = {
170
180
  }
171
181
  };
172
182
 
173
- //# debugId=22F7737FB68C186264756E2164756E21
183
+ //# debugId=403EAD9542CD5A4864756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import {\n FormulaError,\n type CellValue,\n type ErrorEvaluationResult,\n type FunctionDefinition,\n type FunctionEvaluationResult\n} from \"../../../core/types.cjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.cjs\";\nimport type { FormulaEvaluator } from \"../../../evaluator/formula-evaluator.cjs\";\n\n/**\n * TEXTJOIN function - Joins text from multiple ranges and/or strings with a specified delimiter\n *\n * Usage: TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)\n *\n * delimiter: String to insert between text items (can be empty string \"\")\n * ignore_empty: If TRUE, empty cells/strings are ignored; if FALSE, they are included\n * text1, text2, ...: Text items to join (can be strings, ranges, or arrays)\n *\n * Examples:\n * TEXTJOIN(\", \", TRUE, A1:A3) - joins A1, A2, A3 with \", \" separator, ignoring empty cells\n * TEXTJOIN(\"-\", FALSE, \"a\", \"b\", \"c\") - returns \"a-b-c\"\n * TEXTJOIN(\", \", TRUE, \"Red\", \"\", \"Blue\") - returns \"Red, Blue\" (empty string ignored)\n *\n * Note:\n * - Supports type coercion: numbers and booleans are converted to strings\n * - Returns #VALUE! if result exceeds 32,767 characters\n */\n\nconst MAX_TEXT_LENGTH = 32767;\n\n/**\n * Helper function to convert a cell value to string with type coercion\n */\nfunction coerceToString(value: CellValue): string {\n switch (value.type) {\n case \"string\":\n return value.value;\n case \"number\":\n // Convert number to string\n if (value.value === Infinity) {\n return \"INFINITY\";\n } else if (value.value === -Infinity) {\n return \"-INFINITY\";\n } else if (isNaN(value.value)) {\n return \"NaN\";\n } else {\n return value.value.toString();\n }\n case \"boolean\":\n // Convert boolean to string\n return value.value ? \"TRUE\" : \"FALSE\";\n case \"infinity\":\n return value.sign === \"positive\" ? \"INFINITY\" : \"-INFINITY\";\n default:\n return \"\";\n }\n}\n\n/**\n * Helper function to collect all text items from arguments, handling ranges\n */\nfunction collectTextItems(\n this: FormulaEvaluator,\n args: FunctionEvaluationResult[],\n ignoreEmpty: boolean,\n context: EvaluationContext\n): string[] | ErrorEvaluationResult {\n const textItems: string[] = [];\n\n for (const arg of args) {\n if (arg.type === \"error\") {\n return arg;\n }\n\n if (arg.type === \"value\") {\n const text = coerceToString(arg.result);\n if (!ignoreEmpty || text !== \"\") {\n textItems.push(text);\n }\n } else if (arg.type === \"spilled-values\") {\n // Extract all values from the range\n const cellValues = arg.evaluateAllCells.call(this, {\n context,\n origin: context.cellAddress,\n evaluate: arg.evaluate,\n lookupOrder: \"col-major\",\n });\n\n if (cellValues.type !== \"values\") {\n return cellValues;\n }\n\n for (const cellValue of cellValues.values) {\n if (\n cellValue.result.type === \"error\" ||\n cellValue.result.type === \"awaiting-evaluation\"\n ) {\n return cellValue.result;\n }\n if (cellValue.result.type === \"value\") {\n const text = coerceToString(cellValue.result.result);\n if (!ignoreEmpty || text !== \"\") {\n textItems.push(text);\n }\n }\n }\n }\n }\n\n return textItems;\n}\n\n/**\n * TEXTJOIN function implementation\n */\nexport const TEXTJOIN: FunctionDefinition = {\n name: \"TEXTJOIN\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length < 3) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"TEXTJOIN function requires at least 3 arguments\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate delimiter (first argument)\n const delimiterResult = this.evaluateNode(node.args[0]!, context);\n if (delimiterResult.type === \"error\") {\n return delimiterResult;\n }\n if (delimiterResult.type === \"awaiting-evaluation\") {\n return delimiterResult;\n }\n\n // Delimiter must be a single value\n if (delimiterResult.type === \"spilled-values\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"TEXTJOIN delimiter must be a single value\",\n errAddress: context.dependencyNode,\n };\n }\n\n const delimiter = coerceToString(delimiterResult.result);\n\n // Evaluate ignore_empty (second argument)\n const ignoreEmptyResult = this.evaluateNode(node.args[1]!, context);\n if (ignoreEmptyResult.type === \"error\") {\n return ignoreEmptyResult;\n }\n if (ignoreEmptyResult.type === \"awaiting-evaluation\") {\n return ignoreEmptyResult;\n }\n\n // ignore_empty must be a single value\n if (ignoreEmptyResult.type === \"spilled-values\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"TEXTJOIN ignore_empty must be a single value\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Convert ignore_empty to boolean\n let ignoreEmpty = false;\n if (ignoreEmptyResult.result.type === \"boolean\") {\n ignoreEmpty = ignoreEmptyResult.result.value;\n } else if (ignoreEmptyResult.result.type === \"number\") {\n ignoreEmpty = ignoreEmptyResult.result.value !== 0;\n } else if (ignoreEmptyResult.result.type === \"string\") {\n ignoreEmpty = ignoreEmptyResult.result.value !== \"\";\n }\n\n // Evaluate text arguments (remaining arguments)\n const textArgs: FunctionEvaluationResult[] = [];\n for (let i = 2; i < node.args.length; i++) {\n const result = this.evaluateNode(node.args[i]!, context);\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n textArgs.push(result);\n }\n\n // Collect all text items from arguments\n const textItems = collectTextItems.call(\n this,\n textArgs,\n ignoreEmpty,\n context\n );\n\n // Check if we got an error\n if (!Array.isArray(textItems)) {\n return textItems;\n }\n\n // Join text items with delimiter\n const result = textItems.join(delimiter);\n\n // Check length limit\n if (result.length > MAX_TEXT_LENGTH) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: `TEXTJOIN result exceeds ${MAX_TEXT_LENGTH} character limit`,\n errAddress: context.dependencyNode,\n };\n }\n\n return {\n type: \"value\",\n result: { type: \"string\", value: result },\n };\n },\n};\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "22F7737FB68C186264756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "403EAD9542CD5A4864756E2164756E21",
9
9
  "names": []
10
10
  }