@svgrid/enterprise 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/LICENSE +94 -24
  2. package/README.md +36 -4
  3. package/dist/SvAdvancedFilter.svelte +1 -1
  4. package/dist/SvAlertsManager.svelte +2 -1
  5. package/dist/SvBoard.svelte +2 -1
  6. package/dist/SvExportMenu.svelte +4 -1
  7. package/dist/SvExportMenu.svelte.d.ts +0 -13
  8. package/dist/SvExpressionEditor.svelte +3 -3
  9. package/dist/SvFormulaBar.svelte +94 -20
  10. package/dist/SvFormulaBar.svelte.d.ts +7 -0
  11. package/dist/SvGridAlerts.svelte +49 -9
  12. package/dist/SvGridBoard.svelte +13 -8
  13. package/dist/SvGridBulkEditDrawer.svelte +26 -2
  14. package/dist/SvGridEditPanel.svelte +3 -0
  15. package/dist/SvGridScheduler.svelte +69 -40
  16. package/dist/SvGridSelectionBar.svelte +10 -3
  17. package/dist/SvPivotDesigner.svelte +198 -40
  18. package/dist/SvPivotDesigner.svelte.d.ts +27 -20
  19. package/dist/SvSheet.svelte +4043 -243
  20. package/dist/SvSheet.svelte.d.ts +76 -3
  21. package/dist/SvSheetChartSetup.svelte +151 -0
  22. package/dist/SvSheetChartSetup.svelte.d.ts +18 -0
  23. package/dist/SvSheetComment.svelte +216 -31
  24. package/dist/SvSheetComment.svelte.d.ts +11 -11
  25. package/dist/SvSheetConditionalFormat.svelte +28 -31
  26. package/dist/SvSheetDataValidation.svelte +66 -42
  27. package/dist/SvSheetEditRanges.svelte +217 -0
  28. package/dist/SvSheetEditRanges.svelte.d.ts +15 -0
  29. package/dist/SvSheetErrors.svelte +125 -0
  30. package/dist/SvSheetErrors.svelte.d.ts +20 -0
  31. package/dist/SvSheetEvaluate.svelte +133 -0
  32. package/dist/SvSheetEvaluate.svelte.d.ts +15 -0
  33. package/dist/SvSheetFilterMenu.svelte +137 -34
  34. package/dist/SvSheetFilterMenu.svelte.d.ts +5 -0
  35. package/dist/SvSheetFindReplace.svelte +19 -19
  36. package/dist/SvSheetFormatCells.svelte +125 -81
  37. package/dist/SvSheetGoalSeek.svelte +17 -16
  38. package/dist/SvSheetInsertFunction.svelte +15 -13
  39. package/dist/SvSheetIteration.svelte +81 -0
  40. package/dist/SvSheetIteration.svelte.d.ts +10 -0
  41. package/dist/SvSheetLink.svelte +99 -0
  42. package/dist/SvSheetLink.svelte.d.ts +17 -0
  43. package/dist/SvSheetListPicker.svelte +4 -2
  44. package/dist/SvSheetListPicker.svelte.d.ts +0 -6
  45. package/dist/SvSheetManageRules.svelte +20 -18
  46. package/dist/SvSheetNameManager.svelte +17 -15
  47. package/dist/SvSheetPageSetup.svelte +159 -0
  48. package/dist/SvSheetPageSetup.svelte.d.ts +13 -0
  49. package/dist/SvSheetPasteSpecial.svelte +22 -20
  50. package/dist/SvSheetPivot.svelte +220 -0
  51. package/dist/SvSheetPivot.svelte.d.ts +21 -0
  52. package/dist/SvSheetProtectSheet.svelte +81 -0
  53. package/dist/SvSheetProtectSheet.svelte.d.ts +11 -0
  54. package/dist/SvSheetRemoveDuplicates.svelte +13 -10
  55. package/dist/SvSheetRibbon.svelte +104 -51
  56. package/dist/SvSheetSizeDialog.svelte +4 -2
  57. package/dist/SvSheetSort.svelte +218 -0
  58. package/dist/SvSheetSort.svelte.d.ts +28 -0
  59. package/dist/SvSheetSparklines.svelte +135 -0
  60. package/dist/SvSheetSparklines.svelte.d.ts +14 -0
  61. package/dist/SvSheetTable.svelte +160 -0
  62. package/dist/SvSheetTable.svelte.d.ts +24 -0
  63. package/dist/SvSheetTabs.svelte +161 -31
  64. package/dist/SvSheetTabs.svelte.d.ts +22 -8
  65. package/dist/SvSheetTextToColumns.svelte +20 -20
  66. package/dist/SvSheetValidationAlert.svelte +8 -6
  67. package/dist/advanced-filter-enable.js +1 -1
  68. package/dist/alerts/alert-engine.d.ts +6 -0
  69. package/dist/alerts/alert-engine.js +21 -4
  70. package/dist/alerts/alert-formats.js +2 -0
  71. package/dist/alerts/alert-types.d.ts +1 -1
  72. package/dist/alerts.d.ts +1 -1
  73. package/dist/alerts.js +2 -2
  74. package/dist/board.js +2 -2
  75. package/dist/bulk-edit.d.ts +3 -1
  76. package/dist/bulk-edit.js +1 -1
  77. package/dist/cdn/svgrid-enterprise.svelte-external.js +39827 -16429
  78. package/dist/designer/assets/GridMenus-8gTNssgV.js +8 -0
  79. package/dist/designer/assets/{SvChartMenu-D9hEeHar.js → SvChartMenu-BDoeqGz6.js} +1 -1
  80. package/dist/designer/assets/{SvDateTimePicker-DARvKUL2.js → SvDateTimePicker-DCPg7WGN.js} +1 -1
  81. package/dist/designer/assets/SvGridCellEditor-DMoWJjEI.js +4 -0
  82. package/dist/designer/assets/{SvGridChart-B8j1SSy3.js → SvGridChart-Cy1ATrWh.js} +2 -2
  83. package/dist/designer/assets/SvGridChartBuilder-eQ3mn0L9.js +1 -0
  84. package/dist/designer/assets/{SvGridChartPanel-pT6ITc2P.js → SvGridChartPanel-CATdVc9X.js} +3 -3
  85. package/dist/designer/assets/{SvGridChartView-bg281UA1.js → SvGridChartView-CmsZtCED.js} +1 -1
  86. package/dist/designer/assets/SvGridDropdown-Cjz0H-fI.js +1 -0
  87. package/dist/designer/assets/{SvTabs-UFCMTHXS.js → SvTabs-2mHC6oaz.js} +1 -1
  88. package/dist/designer/assets/cell-formatting-BbubJTVz.js +1 -0
  89. package/dist/designer/assets/{chart-cIPUsbM5.js → chart-Cn7MnNqA.js} +1 -1
  90. package/dist/designer/assets/{chart-panel-messages-DtTxpBUU.js → chart-panel-messages-Dz7PTIqT.js} +1 -1
  91. package/dist/designer/assets/{chart-summary-Czu_5epb.js → chart-summary-BD1qYB2R.js} +1 -1
  92. package/dist/designer/assets/{chart-trend-D5I5VEe8.js → chart-trend-B8xr5LuD.js} +1 -1
  93. package/dist/designer/assets/{dismissable-BO547MH9.js → dismissable-ChWRPkoa.js} +1 -1
  94. package/dist/designer/assets/{export-format-D-eP4b2l.js → export-format-DGckmgKr.js} +1 -1
  95. package/dist/designer/assets/{focus-trap-CAreAhlU.js → focus-trap-V2-6Fy9I.js} +1 -1
  96. package/dist/designer/assets/{index-DwU7CAMm.js → index-BSjv6Qec.js} +317 -315
  97. package/dist/designer/assets/index-_JVFxt02.css +1 -0
  98. package/dist/designer/assets/row-resize-BInFWCpr.js +1 -0
  99. package/dist/designer/assets/server-block-cache-CXJKkJpy.js +1 -0
  100. package/dist/designer/assets/src-DUQ4xE3x.js +58 -0
  101. package/dist/designer/assets/validate-C3B8QKsM.js +1 -0
  102. package/dist/designer/index.html +17 -16
  103. package/dist/export-pdf.d.ts +75 -0
  104. package/dist/export-pdf.js +216 -15
  105. package/dist/export.js +10 -2
  106. package/dist/gantt/SvGridGantt.svelte +2890 -0
  107. package/dist/gantt/SvGridGantt.svelte.d.ts +30 -0
  108. package/dist/gantt/gantt-config.d.ts +73 -0
  109. package/dist/gantt/gantt-config.js +1 -0
  110. package/dist/gantt/gantt-critical-path.d.ts +67 -0
  111. package/dist/gantt/gantt-critical-path.js +207 -0
  112. package/dist/gantt/gantt-model.d.ts +257 -0
  113. package/dist/gantt/gantt-model.js +651 -0
  114. package/dist/gantt/gantt-resources.d.ts +59 -0
  115. package/dist/gantt/gantt-resources.js +71 -0
  116. package/dist/gantt/gantt.d.ts +7 -0
  117. package/dist/gantt/gantt.js +36 -0
  118. package/dist/gantt/index.d.ts +15 -0
  119. package/dist/gantt/index.js +22 -0
  120. package/dist/gantt/timeline-arrows.d.ts +102 -0
  121. package/dist/gantt/timeline-arrows.js +181 -0
  122. package/dist/import.d.ts +2 -2
  123. package/dist/import.js +1 -1
  124. package/dist/index.d.ts +34 -7
  125. package/dist/index.js +44 -7
  126. package/dist/install.js +8 -1
  127. package/dist/license-core.d.ts +17 -1
  128. package/dist/license-core.js +16 -5
  129. package/dist/license.d.ts +18 -2
  130. package/dist/license.js +71 -6
  131. package/dist/node/studio.js +140 -8
  132. package/dist/pivot-enable.js +2 -2
  133. package/dist/scheduler-dependencies.d.ts +35 -0
  134. package/dist/scheduler-dependencies.js +36 -1
  135. package/dist/scheduler.js +2 -2
  136. package/dist/selection-bar.js +2 -2
  137. package/dist/server/SvGroupCell.svelte +213 -0
  138. package/dist/server/SvGroupCell.svelte.d.ts +62 -0
  139. package/dist/server/SvRowGroupPanel.svelte +322 -0
  140. package/dist/server/SvRowGroupPanel.svelte.d.ts +37 -0
  141. package/dist/server/enable.d.ts +17 -0
  142. package/dist/server/enable.js +49 -0
  143. package/dist/server/index.d.ts +22 -0
  144. package/dist/server/index.js +24 -0
  145. package/dist/server/messages.d.ts +45 -0
  146. package/dist/server/messages.js +35 -0
  147. package/dist/server/server-group-model.d.ts +104 -0
  148. package/dist/server/server-group-model.js +272 -0
  149. package/dist/server/server-pivot.d.ts +46 -0
  150. package/dist/server/server-pivot.js +57 -0
  151. package/dist/server/server-row-model.d.ts +547 -0
  152. package/dist/server/server-row-model.js +1551 -0
  153. package/dist/server/server-selection.d.ts +99 -0
  154. package/dist/server/server-selection.js +215 -0
  155. package/dist/server/svgrid-adapter.d.ts +155 -0
  156. package/dist/server/svgrid-adapter.js +202 -0
  157. package/dist/sheet/ast.d.ts +45 -1
  158. package/dist/sheet/ast.js +14 -0
  159. package/dist/sheet/auto-filter.d.ts +58 -4
  160. package/dist/sheet/auto-filter.js +159 -11
  161. package/dist/sheet/autocomplete.d.ts +9 -0
  162. package/dist/sheet/autocomplete.js +90 -4
  163. package/dist/sheet/cell-images.d.ts +39 -0
  164. package/dist/sheet/cell-images.js +90 -0
  165. package/dist/sheet/cell-types.d.ts +58 -0
  166. package/dist/sheet/cell-types.js +96 -0
  167. package/dist/sheet/coerce.d.ts +40 -0
  168. package/dist/sheet/coerce.js +170 -3
  169. package/dist/sheet/comments.d.ts +43 -9
  170. package/dist/sheet/comments.js +85 -27
  171. package/dist/sheet/conditional-formats.d.ts +29 -6
  172. package/dist/sheet/conditional-formats.js +37 -12
  173. package/dist/sheet/csv.d.ts +32 -0
  174. package/dist/sheet/csv.js +158 -0
  175. package/dist/sheet/culture.d.ts +87 -0
  176. package/dist/sheet/culture.js +247 -0
  177. package/dist/sheet/delta.d.ts +102 -0
  178. package/dist/sheet/delta.js +203 -0
  179. package/dist/sheet/deps.d.ts +45 -1
  180. package/dist/sheet/deps.js +77 -2
  181. package/dist/sheet/document.d.ts +106 -4
  182. package/dist/sheet/document.js +204 -3
  183. package/dist/sheet/engine.d.ts +67 -0
  184. package/dist/sheet/engine.js +19 -0
  185. package/dist/sheet/entry.d.ts +8 -4
  186. package/dist/sheet/entry.js +171 -21
  187. package/dist/sheet/error-check.d.ts +49 -0
  188. package/dist/sheet/error-check.js +83 -0
  189. package/dist/sheet/evaluate-steps.d.ts +48 -0
  190. package/dist/sheet/evaluate-steps.js +196 -0
  191. package/dist/sheet/evaluate.d.ts +67 -0
  192. package/dist/sheet/evaluate.js +725 -13
  193. package/dist/sheet/filter-files.d.ts +37 -0
  194. package/dist/sheet/filter-files.js +465 -0
  195. package/dist/sheet/format-store.d.ts +15 -0
  196. package/dist/sheet/format-store.js +11 -1
  197. package/dist/sheet/from-rows.d.ts +14 -0
  198. package/dist/sheet/from-rows.js +50 -0
  199. package/dist/sheet/function-catalog.d.ts +1 -1
  200. package/dist/sheet/function-catalog.js +296 -5
  201. package/dist/sheet/functions.js +363 -91
  202. package/dist/sheet/index.d.ts +35 -8
  203. package/dist/sheet/index.js +35 -8
  204. package/dist/sheet/links.d.ts +57 -0
  205. package/dist/sheet/links.js +174 -0
  206. package/dist/sheet/messages.d.ts +778 -0
  207. package/dist/sheet/messages.js +806 -0
  208. package/dist/sheet/number-format.d.ts +52 -5
  209. package/dist/sheet/number-format.js +465 -68
  210. package/dist/sheet/objects.d.ts +106 -0
  211. package/dist/sheet/objects.js +149 -0
  212. package/dist/sheet/ods-document.d.ts +44 -0
  213. package/dist/sheet/ods-document.js +1275 -0
  214. package/dist/sheet/open-file.d.ts +26 -0
  215. package/dist/sheet/open-file.js +56 -0
  216. package/dist/sheet/outline.d.ts +82 -0
  217. package/dist/sheet/outline.js +228 -0
  218. package/dist/sheet/packs/array.d.ts +16 -0
  219. package/dist/sheet/packs/array.js +172 -0
  220. package/dist/sheet/packs/database.d.ts +42 -0
  221. package/dist/sheet/packs/database.js +142 -0
  222. package/dist/sheet/packs/engineering.d.ts +2 -0
  223. package/dist/sheet/packs/engineering.js +296 -0
  224. package/dist/sheet/packs/financial.d.ts +5 -0
  225. package/dist/sheet/packs/financial.js +220 -0
  226. package/dist/sheet/packs/math-stats.d.ts +2 -0
  227. package/dist/sheet/packs/math-stats.js +372 -0
  228. package/dist/sheet/packs/special.d.ts +44 -0
  229. package/dist/sheet/packs/special.js +187 -0
  230. package/dist/sheet/packs/stats-dist.d.ts +2 -0
  231. package/dist/sheet/packs/stats-dist.js +785 -0
  232. package/dist/sheet/packs/text-date.d.ts +2 -0
  233. package/dist/sheet/packs/text-date.js +332 -0
  234. package/dist/sheet/packs/trig.d.ts +2 -0
  235. package/dist/sheet/packs/trig.js +73 -0
  236. package/dist/sheet/page-setup.d.ts +73 -0
  237. package/dist/sheet/page-setup.js +73 -0
  238. package/dist/sheet/parse.js +42 -10
  239. package/dist/sheet/paste-special.d.ts +22 -0
  240. package/dist/sheet/paste-special.js +14 -5
  241. package/dist/sheet/pivot-range.d.ts +160 -0
  242. package/dist/sheet/pivot-range.js +333 -0
  243. package/dist/sheet/presence.d.ts +73 -0
  244. package/dist/sheet/presence.js +79 -0
  245. package/dist/sheet/print.d.ts +104 -0
  246. package/dist/sheet/print.js +169 -0
  247. package/dist/sheet/protection.d.ts +55 -1
  248. package/dist/sheet/protection.js +55 -2
  249. package/dist/sheet/rects.d.ts +1 -1
  250. package/dist/sheet/refs.d.ts +48 -0
  251. package/dist/sheet/refs.js +155 -8
  252. package/dist/sheet/ribbon-icons.d.ts +1 -1
  253. package/dist/sheet/ribbon-icons.js +186 -0
  254. package/dist/sheet/ribbon.d.ts +1 -1
  255. package/dist/sheet/ribbon.js +324 -23
  256. package/dist/sheet/sheet-kinds.d.ts +74 -0
  257. package/dist/sheet/sheet-kinds.js +91 -0
  258. package/dist/sheet/shortcuts.d.ts +13 -3
  259. package/dist/sheet/shortcuts.js +63 -12
  260. package/dist/sheet/sort.d.ts +51 -0
  261. package/dist/sheet/sort.js +107 -0
  262. package/dist/sheet/sparklines.d.ts +111 -0
  263. package/dist/sheet/sparklines.js +204 -0
  264. package/dist/sheet/table-styles.d.ts +74 -0
  265. package/dist/sheet/table-styles.js +152 -0
  266. package/dist/sheet/tables.d.ts +19 -0
  267. package/dist/sheet/tables.js +31 -0
  268. package/dist/sheet/tokenize.d.ts +18 -1
  269. package/dist/sheet/tokenize.js +60 -9
  270. package/dist/sheet/validation.d.ts +16 -0
  271. package/dist/sheet/validation.js +37 -0
  272. package/dist/sheet/workbook.d.ts +148 -3
  273. package/dist/sheet/workbook.js +742 -31
  274. package/dist/sheet/xls-cfb.d.ts +32 -0
  275. package/dist/sheet/xls-cfb.js +290 -0
  276. package/dist/sheet/xls-document.d.ts +10 -0
  277. package/dist/sheet/xls-document.js +1243 -0
  278. package/dist/sheet/xls-formula.d.ts +40 -0
  279. package/dist/sheet/xls-formula.js +569 -0
  280. package/dist/sheet/xlsx-document.d.ts +108 -0
  281. package/dist/sheet/xlsx-document.js +1849 -0
  282. package/dist/sheet/xlsx-drawing.d.ts +99 -0
  283. package/dist/sheet/xlsx-drawing.js +420 -0
  284. package/dist/sheet-enable.js +6 -7
  285. package/dist/sheet-text.d.ts +7 -0
  286. package/dist/sheet-text.js +29 -0
  287. package/dist/sources/auth-supabase.js +2 -2
  288. package/dist/sources/realtime-supabase.js +2 -2
  289. package/dist/sources/rest.d.ts +6 -2
  290. package/dist/sources/rest.js +42 -7
  291. package/dist/sources/supabase.d.ts +10 -1
  292. package/dist/sources/supabase.js +73 -40
  293. package/dist/studio/emit-project.js +14 -1
  294. package/dist/studio/index.js +1 -1
  295. package/dist/studio/project.d.ts +11 -2
  296. package/dist/studio/project.js +5 -2
  297. package/dist/studio/ui-components.generated.js +107 -2
  298. package/dist/sveltekit/in-memory.d.ts +2 -2
  299. package/dist/sveltekit/in-memory.js +125 -4
  300. package/dist/sveltekit/index.d.ts +1 -1
  301. package/dist/sveltekit/index.js +1 -1
  302. package/dist/sveltekit/query-plan.d.ts +50 -4
  303. package/dist/sveltekit/query-plan.js +25 -3
  304. package/dist/sveltekit/sql-source.d.ts +6 -0
  305. package/dist/sveltekit/sql-source.js +34 -6
  306. package/dist/sveltekit/sql.d.ts +31 -0
  307. package/dist/sveltekit/sql.js +135 -25
  308. package/dist/sveltekit/transport.d.ts +10 -2
  309. package/dist/sveltekit/transport.js +30 -6
  310. package/dist/upgrade-prompt.d.ts +1 -1
  311. package/dist/version.d.ts +1 -1
  312. package/dist/version.js +1 -1
  313. package/dist/watermark.js +35 -2
  314. package/dist/wc/GridMenus-By9vPuq0.js +1088 -0
  315. package/dist/wc/SvChartMenu-CQNrQGT2.js +308 -0
  316. package/dist/wc/SvDateRangeInput-DR6m7bSM.js +199 -0
  317. package/dist/wc/SvDateTimePicker-D-vRnaMo.js +771 -0
  318. package/dist/wc/SvField-B_kurx_P.js +149 -0
  319. package/dist/wc/SvGrid.helpers-BdVDtjUm.js +135 -0
  320. package/dist/wc/SvGridCellEditor-Bnf1Kr5C.js +560 -0
  321. package/dist/wc/SvGridChart-BqUJh2pG.js +3572 -0
  322. package/dist/wc/SvGridChartBuilder-CGycC5cn.js +988 -0
  323. package/dist/wc/SvGridChartPanel-CRnizsHD.js +1746 -0
  324. package/dist/wc/SvGridChartView-D1pa_xMy.js +47 -0
  325. package/dist/wc/SvGridDropdown-45WsObLL.js +259 -0
  326. package/dist/wc/SvModal-DrfOYYyX.js +189 -0
  327. package/dist/wc/cell-formatting-CBfgahv1.js +86 -0
  328. package/dist/wc/chart-6OXlybVT.js +4341 -0
  329. package/dist/wc/chart-export-CeSADGfi.js +135 -0
  330. package/dist/wc/chart-export-pdf-BGko7MER.js +104 -0
  331. package/dist/wc/chart-summary-2m3ia1-n.js +137 -0
  332. package/dist/wc/chart-trend-CQOQtTMl.js +50 -0
  333. package/dist/wc/chart-validate-CD6ptiwg.js +180 -0
  334. package/dist/wc/client-DQIzjDBG.js +3064 -0
  335. package/dist/wc/column-resize-DUPgynvc.js +101 -0
  336. package/dist/wc/date-format-DS-z_h9v.js +1130 -0
  337. package/dist/wc/dismissable-CQ6XFXsk.js +45 -0
  338. package/dist/wc/editor-contract-peBDxir_.js +22 -0
  339. package/dist/wc/editor-registry-DxGKqcvx.js +24 -0
  340. package/dist/wc/focus-trap-Dbb2tJxb.js +65 -0
  341. package/dist/wc/list-option-DrRyivWp.js +82 -0
  342. package/dist/wc/popover-WsGlvtQv.js +69 -0
  343. package/dist/wc/positioning-BiKLfu1E.js +112 -0
  344. package/dist/wc/react.d.ts +41 -0
  345. package/dist/wc/react.js +90 -0
  346. package/dist/wc/rolldown-runtime-Dy4uBu1J.js +11 -0
  347. package/dist/wc/row-drag-touch-CycRR65n.js +93 -0
  348. package/dist/wc/row-resize-limG_N1z.js +111 -0
  349. package/dist/wc/sv-sheet-element.d.ts +97 -0
  350. package/dist/wc/sv-sheet-element.js +44213 -0
  351. package/dist/wc/svelte-virtualizer.svelte-CXtQy2TQ.js +530 -0
  352. package/dist/wc/validate-BqDthkNr.js +88 -0
  353. package/dist/wc/vue.d.ts +31 -0
  354. package/dist/wc/vue.js +75 -0
  355. package/package.json +30 -5
  356. package/dist/designer/assets/GridMenus-BlsvL_aU.js +0 -8
  357. package/dist/designer/assets/SvGridCellEditor-C7uQXYds.js +0 -4
  358. package/dist/designer/assets/SvGridChartBuilder-kvyIU_Rl.js +0 -1
  359. package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +0 -1
  360. package/dist/designer/assets/cell-formatting-wr5wm7US.js +0 -1
  361. package/dist/designer/assets/index-CMFgAoVV.css +0 -1
  362. package/dist/designer/assets/row-resize-DLktcqUK.js +0 -1
  363. package/dist/designer/assets/src-EdI3Xqds.js +0 -58
  364. package/dist/designer/assets/validate-h-aslRV9.js +0 -1
@@ -6,7 +6,8 @@
6
6
  * custom function registered through `withCustomFunctions` appears too.
7
7
  */
8
8
  import { FUNCTIONS } from './functions.js';
9
- import { SIGNATURES } from './autocomplete.js';
9
+ import { ARRAY_FUNCTIONS } from './packs/array.js';
10
+ import { SIGNATURES, EVALUATOR_NAMES } from './autocomplete.js';
10
11
  const CATALOG = {
11
12
  SUM: { group: 'Math', description: 'Adds all the numbers in a range of cells.', signature: 'SUM(number1, [number2], ...)' },
12
13
  ABS: { group: 'Math', description: 'Returns the absolute value of a number, a number without its sign.', signature: 'ABS(number)' },
@@ -18,6 +19,7 @@ const CATALOG = {
18
19
  ROUNDUP: { group: 'Math', description: 'Rounds a number up, away from zero.', signature: 'ROUNDUP(number, digits)' },
19
20
  ROUNDDOWN: { group: 'Math', description: 'Rounds a number down, toward zero.', signature: 'ROUNDDOWN(number, digits)' },
20
21
  SUMIF: { group: 'Math', description: 'Adds the cells specified by a given condition or criteria.' },
22
+ SUBTOTAL: { group: 'Math', description: 'Returns a subtotal in a list or database, leaving out the rows a filter has hidden.', signature: 'SUBTOTAL(code, range, ...)' },
21
23
  SUMIFS: { group: 'Math', description: 'Adds the cells specified by a given set of conditions or criteria.' },
22
24
  AVERAGE: { group: 'Statistical', description: 'Returns the average (arithmetic mean) of its arguments.', signature: 'AVERAGE(number1, [number2], ...)' },
23
25
  AVG: { group: 'Statistical', description: 'The same as AVERAGE.', signature: 'AVG(number1, [number2], ...)' },
@@ -55,10 +57,23 @@ const CATALOG = {
55
57
  CONCAT: { group: 'Text', description: 'Concatenates a list or range of text strings.', signature: 'CONCAT(text1, [text2], ...)' },
56
58
  CONCATENATE: { group: 'Text', description: 'Joins several text strings into one text string.', signature: 'CONCATENATE(text1, [text2], ...)' },
57
59
  TEXTJOIN: { group: 'Text', description: 'Concatenates a list or range of text strings using a delimiter.' },
58
- SUBSTITUTE: { group: 'Text', description: 'Replaces existing text with new text in a text string.' },
60
+ SUBSTITUTE: { group: 'Text', description: 'Replaces existing text with new text in a text string; a fourth argument replaces only that occurrence.', signature: 'SUBSTITUTE(text, old_text, new_text, [instance_num])' },
61
+ TEXTBEFORE: { group: 'Text', description: 'Returns the text before a delimiter; a negative instance counts from the end.', signature: 'TEXTBEFORE(text, delimiter, [instance_num])' },
62
+ TEXTAFTER: { group: 'Text', description: 'Returns the text after a delimiter; a negative instance counts from the end.', signature: 'TEXTAFTER(text, delimiter, [instance_num])' },
63
+ DOLLAR: { group: 'Text', description: 'Converts a number to text using currency format, with a dollar sign and thousands separators.', signature: 'DOLLAR(number, [decimals])' },
64
+ FIXED: { group: 'Text', description: 'Rounds a number to a set number of decimals and returns it as text, with thousands separators unless suppressed.', signature: 'FIXED(number, [decimals], [no_commas])' },
59
65
  FIND: { group: 'Text', description: 'Returns the starting position of one text string within another; case-sensitive.', signature: 'FIND(find, within, [start])' },
60
66
  SEARCH: { group: 'Text', description: 'Returns the position of one text string within another; not case-sensitive.', signature: 'SEARCH(find, within, [start])' },
61
67
  TEXT: { group: 'Text', description: 'Converts a value to text in a specific number format.' },
68
+ HYPERLINK: { group: 'Lookup & Reference', description: 'Shows the friendly name and follows the link when the cell is clicked.', signature: 'HYPERLINK(link, [friendly_name])' },
69
+ LET: { group: 'Lookup & Reference', description: 'Names a value inside a formula, then uses it in the calculation.', signature: 'LET(name1, value1, [name2, value2], ..., calculation)' },
70
+ LAMBDA: { group: 'Lookup & Reference', description: 'A function written in the sheet: its parameters, then what it works out.', signature: 'LAMBDA(parameter1, ..., calculation)' },
71
+ MAP: { group: 'Lookup & Reference', description: 'Puts every cell of an array through a LAMBDA.', signature: 'MAP(array1, ..., lambda)' },
72
+ BYROW: { group: 'Lookup & Reference', description: 'One answer per row of an array, as a column.', signature: 'BYROW(array, lambda)' },
73
+ BYCOL: { group: 'Lookup & Reference', description: 'One answer per column of an array, as a row.', signature: 'BYCOL(array, lambda)' },
74
+ REDUCE: { group: 'Lookup & Reference', description: 'Folds an array to one value, carrying an accumulator.', signature: 'REDUCE(initial, array, lambda)' },
75
+ SCAN: { group: 'Lookup & Reference', description: 'Folds an array and keeps every step, as a running total does.', signature: 'SCAN(initial, array, lambda)' },
76
+ MAKEARRAY: { group: 'Lookup & Reference', description: 'Builds an array of the given size from the row and column numbers.', signature: 'MAKEARRAY(rows, columns, lambda)' },
62
77
  TODAY: { group: 'Date & Time', description: "Returns the current date formatted as a date.", signature: 'TODAY()' },
63
78
  NOW: { group: 'Date & Time', description: 'Returns the current date and time formatted as a date and time.', signature: 'NOW()' },
64
79
  YEAR: { group: 'Date & Time', description: 'Returns the year of a date, an integer in the range 1900 - 9999.', signature: 'YEAR(date)' },
@@ -73,15 +88,291 @@ const CATALOG = {
73
88
  XLOOKUP: { group: 'Lookup & Reference', description: 'Searches a range for a match and returns the corresponding item from a second range.' },
74
89
  INDEX: { group: 'Lookup & Reference', description: 'Returns a value from a range at the intersection of a given row and column.' },
75
90
  MATCH: { group: 'Lookup & Reference', description: 'Returns the relative position of an item in a range that matches a specified value.' },
91
+ XMATCH: { group: 'Lookup & Reference', description: 'Returns the relative position of an item in an array, with a choice of exact, next-smaller, next-larger or wildcard match.', signature: 'XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])' },
92
+ LOOKUP: { group: 'Lookup & Reference', description: 'Looks up a value in a one-row or one-column range and returns the matching value from a second range.', signature: 'LOOKUP(lookup_value, lookup_vector, [result_vector])' },
93
+ PMT: { group: 'Financial', description: 'Calculates the payment for a loan based on constant payments and a constant interest rate.', signature: 'PMT(rate, nper, pv, [fv], [type])' },
94
+ IPMT: { group: 'Financial', description: 'Returns the interest payment for a given period of an investment, based on periodic, constant payments and a constant interest rate.', signature: 'IPMT(rate, per, nper, pv, [fv], [type])' },
95
+ PPMT: { group: 'Financial', description: 'Returns the payment on the principal for a given period of an investment.', signature: 'PPMT(rate, per, nper, pv, [fv], [type])' },
96
+ PV: { group: 'Financial', description: 'Returns the present value of an investment: the total amount that a series of future payments is worth now.', signature: 'PV(rate, nper, pmt, [fv], [type])' },
97
+ FV: { group: 'Financial', description: 'Returns the future value of an investment based on periodic, constant payments and a constant interest rate.', signature: 'FV(rate, nper, pmt, [pv], [type])' },
98
+ NPER: { group: 'Financial', description: 'Returns the number of periods for an investment based on periodic, constant payments and a constant interest rate.', signature: 'NPER(rate, pmt, pv, [fv], [type])' },
99
+ RATE: { group: 'Financial', description: 'Returns the interest rate per period of a loan or an investment.', signature: 'RATE(nper, pmt, pv, [fv], [type], [guess])' },
100
+ NPV: { group: 'Financial', description: 'Returns the net present value of an investment based on a discount rate and a series of future payments (negative values) and income (positive values).', signature: 'NPV(rate, value1, [value2], ...)' },
101
+ IRR: { group: 'Financial', description: 'Returns the internal rate of return for a series of cash flows.', signature: 'IRR(values, [guess])' },
102
+ SLN: { group: 'Financial', description: 'Returns the straight-line depreciation of an asset for one period.', signature: 'SLN(cost, salvage, life)' },
103
+ PRODUCT: { group: 'Math', description: 'Multiplies all the numbers given as arguments.', signature: 'PRODUCT(number1, [number2], ...)' },
104
+ SUMSQ: { group: 'Math', description: 'Returns the sum of the squares of the arguments.', signature: 'SUMSQ(number1, [number2], ...)' },
105
+ SUMPRODUCT: { group: 'Math', description: 'Returns the sum of the products of corresponding ranges or arrays.', signature: 'SUMPRODUCT(array1, [array2], ...)' },
106
+ CEILING: { group: 'Math', description: 'Rounds a number up, away from zero, to the nearest multiple of significance.', signature: 'CEILING(number, significance)' },
107
+ 'CEILING.MATH': { group: 'Math', description: 'Rounds a number up to the nearest integer or to the nearest multiple of significance.', signature: 'CEILING.MATH(number, [significance], [mode])' },
108
+ FLOOR: { group: 'Math', description: 'Rounds a number down, toward zero, to the nearest multiple of significance.', signature: 'FLOOR(number, significance)' },
109
+ 'FLOOR.MATH': { group: 'Math', description: 'Rounds a number down to the nearest integer or to the nearest multiple of significance.', signature: 'FLOOR.MATH(number, [significance], [mode])' },
110
+ MROUND: { group: 'Math', description: 'Returns a number rounded to the desired multiple.', signature: 'MROUND(number, multiple)' },
111
+ TRUNC: { group: 'Math', description: 'Truncates a number to an integer by removing the decimal, or fractional, part of the number.', signature: 'TRUNC(number, [digits])' },
112
+ LOG: { group: 'Math', description: 'Returns the logarithm of a number to the base you specify.', signature: 'LOG(number, [base])' },
113
+ LOG10: { group: 'Math', description: 'Returns the base-10 logarithm of a number.', signature: 'LOG10(number)' },
114
+ LN: { group: 'Math', description: 'Returns the natural logarithm of a number.', signature: 'LN(number)' },
115
+ EXP: { group: 'Math', description: 'Returns e raised to the power of a given number.', signature: 'EXP(number)' },
116
+ PI: { group: 'Math', description: 'Returns the value of pi, 3.14159265358979, accurate to 15 digits.', signature: 'PI()' },
117
+ RAND: { group: 'Math', description: 'Returns a random number greater than or equal to 0 and less than 1, evenly distributed. Changes on recalculation.', signature: 'RAND()' },
118
+ RANDBETWEEN: { group: 'Math', description: 'Returns a random number between the numbers you specify.', signature: 'RANDBETWEEN(bottom, top)' },
119
+ SIGN: { group: 'Math', description: 'Returns the sign of a number: 1 if the number is positive, zero if the number is 0, or -1 if the number is negative.', signature: 'SIGN(number)' },
120
+ EVEN: { group: 'Math', description: 'Rounds a positive number up and a negative number down to the nearest even integer.', signature: 'EVEN(number)' },
121
+ ODD: { group: 'Math', description: 'Rounds a positive number up and a negative number down to the nearest odd integer.', signature: 'ODD(number)' },
122
+ QUOTIENT: { group: 'Math', description: 'Returns the integer portion of a division.', signature: 'QUOTIENT(numerator, denominator)' },
123
+ GCD: { group: 'Math', description: 'Returns the greatest common divisor.', signature: 'GCD(number1, [number2], ...)' },
124
+ LCM: { group: 'Math', description: 'Returns the least common multiple.', signature: 'LCM(number1, [number2], ...)' },
125
+ FACT: { group: 'Math', description: 'Returns the factorial of a number, equal to 1*2*3*...*number.', signature: 'FACT(number)' },
126
+ COMBIN: { group: 'Math', description: 'Returns the number of unordered combinations of choosing a number of items from a set.', signature: 'COMBIN(number, chosen)' },
127
+ PERMUT: { group: 'Math', description: 'Returns the number of ordered permutations of choosing a number of items from a set.', signature: 'PERMUT(number, chosen)' },
128
+ LARGE: { group: 'Statistical', description: 'Returns the k-th largest value in a data set.', signature: 'LARGE(range, k)' },
129
+ SMALL: { group: 'Statistical', description: 'Returns the k-th smallest value in a data set.', signature: 'SMALL(range, k)' },
130
+ PERCENTILE: { group: 'Statistical', description: 'Returns the k-th percentile of values in a range.', signature: 'PERCENTILE(range, k)' },
131
+ 'PERCENTILE.INC': { group: 'Statistical', description: 'Returns the k-th percentile of values in a range, where k is in the range 0..1, inclusive.', signature: 'PERCENTILE.INC(range, k)' },
132
+ 'PERCENTILE.EXC': { group: 'Statistical', description: 'Returns the k-th percentile of values in a range, where k is in the range 0..1, exclusive.', signature: 'PERCENTILE.EXC(range, k)' },
133
+ QUARTILE: { group: 'Statistical', description: 'Returns the quartile of a data set.', signature: 'QUARTILE(range, quart)' },
134
+ 'QUARTILE.INC': { group: 'Statistical', description: 'Returns the quartile of a data set, based on percentile values from 0..1, inclusive.', signature: 'QUARTILE.INC(range, quart)' },
135
+ 'QUARTILE.EXC': { group: 'Statistical', description: 'Returns the quartile of a data set, based on percentile values from 0..1, exclusive.', signature: 'QUARTILE.EXC(range, quart)' },
136
+ VAR: { group: 'Statistical', description: 'Estimates variance based on a sample.', signature: 'VAR(number1, [number2], ...)' },
137
+ 'VAR.S': { group: 'Statistical', description: 'Estimates variance based on a sample.', signature: 'VAR.S(number1, [number2], ...)' },
138
+ 'VAR.P': { group: 'Statistical', description: 'Calculates variance based on the entire population.', signature: 'VAR.P(number1, [number2], ...)' },
139
+ VARP: { group: 'Statistical', description: 'Calculates variance based on the entire population.', signature: 'VARP(number1, [number2], ...)' },
140
+ 'STDEV.S': { group: 'Statistical', description: 'Estimates standard deviation based on a sample.', signature: 'STDEV.S(number1, [number2], ...)' },
141
+ 'STDEV.P': { group: 'Statistical', description: 'Calculates standard deviation based on the entire population.', signature: 'STDEV.P(number1, [number2], ...)' },
142
+ STDEVP: { group: 'Statistical', description: 'Calculates standard deviation based on the entire population.', signature: 'STDEVP(number1, [number2], ...)' },
143
+ MODE: { group: 'Statistical', description: 'Returns the most frequently occurring, or repetitive, value in a range of data.', signature: 'MODE(number1, [number2], ...)' },
144
+ 'MODE.SNGL': { group: 'Statistical', description: 'Returns the most frequently occurring, or repetitive, value in a range of data.', signature: 'MODE.SNGL(number1, [number2], ...)' },
145
+ GEOMEAN: { group: 'Statistical', description: 'Returns the geometric mean of a range of positive numeric data.', signature: 'GEOMEAN(number1, [number2], ...)' },
146
+ AVERAGEIFS: { group: 'Statistical', description: 'Finds the average of the cells specified by a given set of conditions or criteria.', signature: 'AVERAGEIFS(avgRange, range, criterion, ...)' },
147
+ MAXIFS: { group: 'Statistical', description: 'Returns the maximum value among cells specified by a given set of conditions or criteria.', signature: 'MAXIFS(maxRange, range, criterion, ...)' },
148
+ MINIFS: { group: 'Statistical', description: 'Returns the minimum value among cells specified by a given set of conditions or criteria.', signature: 'MINIFS(minRange, range, criterion, ...)' },
149
+ CORREL: { group: 'Statistical', description: 'Returns the correlation coefficient between two data sets.', signature: 'CORREL(range1, range2)' },
150
+ SLOPE: { group: 'Statistical', description: 'Returns the slope of the linear regression line through the given data points.', signature: 'SLOPE(known_ys, known_xs)' },
151
+ INTERCEPT: { group: 'Statistical', description: 'Calculates the point at which a line will intersect the y-axis by using a best-fit regression line.', signature: 'INTERCEPT(known_ys, known_xs)' },
152
+ FORECAST: { group: 'Statistical', description: 'Calculates, or predicts, a future value along a linear trend by using existing values.', signature: 'FORECAST(x, known_ys, known_xs)' },
153
+ 'FORECAST.LINEAR': { group: 'Statistical', description: 'Calculates, or predicts, a future value along a linear trend by using existing values.', signature: 'FORECAST.LINEAR(x, known_ys, known_xs)' },
154
+ ISERROR: { group: 'Information', description: 'Checks whether a value is an error, and returns TRUE or FALSE.', signature: 'ISERROR(value)' },
155
+ ISERR: { group: 'Information', description: 'Checks whether a value is an error other than #N/A, and returns TRUE or FALSE.', signature: 'ISERR(value)' },
156
+ ISNA: { group: 'Information', description: 'Checks whether a value is #N/A, and returns TRUE or FALSE.', signature: 'ISNA(value)' },
157
+ NA: { group: 'Information', description: 'Returns the error value #N/A, which means a value is not available.', signature: 'NA()' },
158
+ TYPE: { group: 'Information', description: 'Returns a number for the type of a value: 1 number, 2 text, 4 logical, 16 error, 64 array.', signature: 'TYPE(value)' },
159
+ TRUE: { group: 'Logical', description: 'Returns the logical value TRUE.', signature: 'TRUE()' },
160
+ FALSE: { group: 'Logical', description: 'Returns the logical value FALSE.', signature: 'FALSE()' },
161
+ ISNONTEXT: { group: 'Information', description: 'Checks whether a value is not text (blank cells are not text), and returns TRUE or FALSE.', signature: 'ISNONTEXT(value)' },
162
+ ISEVEN: { group: 'Information', description: 'Returns TRUE if the number is even.', signature: 'ISEVEN(number)' },
163
+ ISODD: { group: 'Information', description: 'Returns TRUE if the number is odd.', signature: 'ISODD(number)' },
164
+ N: { group: 'Information', description: 'Converts a value to a number: a number stays, TRUE is 1, anything else is 0.', signature: 'N(value)' },
165
+ T: { group: 'Text', description: 'Returns the text referred to by value; anything that is not text is an empty string.', signature: 'T(value)' },
166
+ PROPER: { group: 'Text', description: 'Converts a text string to proper case: the first letter in each word to uppercase, and all other letters to lowercase.', signature: 'PROPER(text)' },
167
+ REPT: { group: 'Text', description: 'Repeats text a given number of times.', signature: 'REPT(text, count)' },
168
+ VALUE: { group: 'Text', description: 'Converts a text string that represents a number to a number.', signature: 'VALUE(text)' },
169
+ IMAGE: { group: 'Lookup & Reference', description: 'Puts a picture in the cell, from a web address or a data URL.', signature: 'IMAGE(source, [alt_text])' },
170
+ NUMBERVALUE: { group: 'Text', description: 'Converts text to a number, with the decimal and group separators given rather than guessed.', signature: 'NUMBERVALUE(text, [decimal_separator], [group_separator])' },
171
+ CHAR: { group: 'Text', description: 'Returns the character specified by the code number.', signature: 'CHAR(number)' },
172
+ CODE: { group: 'Text', description: 'Returns a numeric code for the first character in a text string.', signature: 'CODE(text)' },
173
+ UNICHAR: { group: 'Text', description: 'Returns the Unicode character referenced by the given numeric value.', signature: 'UNICHAR(number)' },
174
+ UNICODE: { group: 'Text', description: 'Returns the number (code point) corresponding to the first character of the text.', signature: 'UNICODE(text)' },
175
+ EXACT: { group: 'Text', description: 'Checks whether two text strings are exactly the same, and returns TRUE or FALSE. Case-sensitive.', signature: 'EXACT(text1, text2)' },
176
+ CLEAN: { group: 'Text', description: 'Removes all nonprintable characters from text.', signature: 'CLEAN(text)' },
177
+ REPLACE: { group: 'Text', description: 'Replaces part of a text string with a different text string.', signature: 'REPLACE(old_text, start, count, new_text)' },
178
+ WEEKDAY: { group: 'Date & Time', description: 'Returns a number from 1 to 7 identifying the day of the week of a date.', signature: 'WEEKDAY(date, [type])' },
179
+ EDATE: { group: 'Date & Time', description: 'Returns the date that is the indicated number of months before or after the start date.', signature: 'EDATE(date, months)' },
180
+ NETWORKDAYS: { group: 'Date & Time', description: 'Returns the number of whole workdays between two dates.', signature: 'NETWORKDAYS(start_date, end_date, [holidays])' },
181
+ WORKDAY: { group: 'Date & Time', description: 'Returns the date before or after a specified number of workdays.', signature: 'WORKDAY(start_date, days, [holidays])' },
182
+ WEEKNUM: { group: 'Date & Time', description: 'Returns the week number in the year.', signature: 'WEEKNUM(date, [type])' },
183
+ HOUR: { group: 'Date & Time', description: 'Returns the hour as a number from 0 (12:00 A.M.) to 23 (11:00 P.M.).', signature: 'HOUR(time)' },
184
+ MINUTE: { group: 'Date & Time', description: 'Returns the minute, a number from 0 to 59.', signature: 'MINUTE(time)' },
185
+ SECOND: { group: 'Date & Time', description: 'Returns the second, a number from 0 to 59.', signature: 'SECOND(time)' },
186
+ TIME: { group: 'Date & Time', description: 'Converts hours, minutes and seconds given as numbers to a time serial number.', signature: 'TIME(hour, minute, second)' },
187
+ DATEVALUE: { group: 'Date & Time', description: 'Converts a date in the form of text to a serial number.', signature: 'DATEVALUE(text)' },
188
+ TIMEVALUE: { group: 'Date & Time', description: 'Converts a time in the form of text to a serial number.', signature: 'TIMEVALUE(text)' },
189
+ DAYS360: { group: 'Date & Time', description: 'Calculates the number of days between two dates based on a 360-day year.', signature: 'DAYS360(start_date, end_date)' },
190
+ YEARFRAC: { group: 'Date & Time', description: 'Returns the year fraction representing the number of whole days between two dates.', signature: 'YEARFRAC(start_date, end_date, [basis])' },
191
+ ROW: { group: 'Lookup & Reference', description: 'Returns the row number of a reference, or of the cell the formula is in.', signature: 'ROW([reference])' },
192
+ COLUMN: { group: 'Lookup & Reference', description: 'Returns the column number of a reference, or of the cell the formula is in.', signature: 'COLUMN([reference])' },
193
+ ADDRESS: { group: 'Lookup & Reference', description: 'Creates a cell reference as text, given specified row and column numbers.', signature: 'ADDRESS(row, column, [abs], [a1], [sheet])' },
194
+ OFFSET: { group: 'Lookup & Reference', description: 'Returns a reference to a range that is a given number of rows and columns from a given reference. Volatile.', signature: 'OFFSET(reference, rows, cols, [height], [width])' },
195
+ INDIRECT: { group: 'Lookup & Reference', description: 'Returns the reference specified by a text string. Volatile.', signature: 'INDIRECT(text, [a1])' },
196
+ CHOOSE: { group: 'Lookup & Reference', description: 'Chooses a value from a list of values, based on an index number.', signature: 'CHOOSE(index, value1, [value2], ...)' },
197
+ ROWS: { group: 'Lookup & Reference', description: 'Returns the number of rows in a range.', signature: 'ROWS(range)' },
198
+ COLUMNS: { group: 'Lookup & Reference', description: 'Returns the number of columns in a range.', signature: 'COLUMNS(range)' },
199
+ FILTER: { group: 'Lookup & Reference', description: 'Filters a range or array by a condition. Spills the rows that match.', signature: 'FILTER(array, include, [if_empty])' },
200
+ UNIQUE: { group: 'Lookup & Reference', description: 'Returns the unique values from a range or array. Spills.', signature: 'UNIQUE(array, [by_col], [exactly_once])' },
201
+ SORT: { group: 'Lookup & Reference', description: 'Sorts a range or array by one of its columns. Spills.', signature: 'SORT(array, [sort_index], [sort_order], [by_col])' },
202
+ SORTBY: { group: 'Lookup & Reference', description: 'Sorts a range or array by the values in another range or array. Spills.', signature: 'SORTBY(array, by_array1, [sort_order1], ...)' },
203
+ SEQUENCE: { group: 'Math', description: 'Generates a list of sequential numbers in an array. Spills.', signature: 'SEQUENCE(rows, [columns], [start], [step])' },
204
+ TRANSPOSE: { group: 'Lookup & Reference', description: 'Converts a vertical range into a horizontal one, or the reverse. Spills.', signature: 'TRANSPOSE(array)' },
205
+ TEXTSPLIT: { group: 'Text', description: 'Splits text into columns and rows by delimiters. Spills.', signature: 'TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty])' },
206
+ // ---- Trigonometry ----------------------------------------------------
207
+ SIN: { group: 'Math', description: 'Returns the sine of an angle given in radians.', signature: 'SIN(number)' },
208
+ COS: { group: 'Math', description: 'Returns the cosine of an angle given in radians.', signature: 'COS(number)' },
209
+ TAN: { group: 'Math', description: 'Returns the tangent of an angle given in radians.', signature: 'TAN(number)' },
210
+ COT: { group: 'Math', description: 'Returns the cotangent of an angle given in radians.', signature: 'COT(number)' },
211
+ SEC: { group: 'Math', description: 'Returns the secant of an angle given in radians.', signature: 'SEC(number)' },
212
+ CSC: { group: 'Math', description: 'Returns the cosecant of an angle given in radians.', signature: 'CSC(number)' },
213
+ ASIN: { group: 'Math', description: 'Returns the arcsine of a number, in radians.', signature: 'ASIN(number)' },
214
+ ACOS: { group: 'Math', description: 'Returns the arccosine of a number, in radians.', signature: 'ACOS(number)' },
215
+ ATAN: { group: 'Math', description: 'Returns the arctangent of a number, in radians.', signature: 'ATAN(number)' },
216
+ ATAN2: { group: 'Math', description: 'Returns the arctangent of the x and y coordinates, in radians. Excel takes x first.', signature: 'ATAN2(x_num, y_num)' },
217
+ ACOT: { group: 'Math', description: 'Returns the arccotangent of a number, in radians between 0 and pi.', signature: 'ACOT(number)' },
218
+ SINH: { group: 'Math', description: 'Returns the hyperbolic sine of a number.', signature: 'SINH(number)' },
219
+ COSH: { group: 'Math', description: 'Returns the hyperbolic cosine of a number.', signature: 'COSH(number)' },
220
+ TANH: { group: 'Math', description: 'Returns the hyperbolic tangent of a number.', signature: 'TANH(number)' },
221
+ COTH: { group: 'Math', description: 'Returns the hyperbolic cotangent of a number.', signature: 'COTH(number)' },
222
+ SECH: { group: 'Math', description: 'Returns the hyperbolic secant of a number.', signature: 'SECH(number)' },
223
+ CSCH: { group: 'Math', description: 'Returns the hyperbolic cosecant of a number.', signature: 'CSCH(number)' },
224
+ ASINH: { group: 'Math', description: 'Returns the inverse hyperbolic sine of a number.', signature: 'ASINH(number)' },
225
+ ACOSH: { group: 'Math', description: 'Returns the inverse hyperbolic cosine of a number, which must be 1 or more.', signature: 'ACOSH(number)' },
226
+ ATANH: { group: 'Math', description: 'Returns the inverse hyperbolic tangent of a number between -1 and 1.', signature: 'ATANH(number)' },
227
+ ACOTH: { group: 'Math', description: 'Returns the inverse hyperbolic cotangent of a number outside -1 to 1.', signature: 'ACOTH(number)' },
228
+ DEGREES: { group: 'Math', description: 'Converts radians into degrees.', signature: 'DEGREES(angle)' },
229
+ RADIANS: { group: 'Math', description: 'Converts degrees into radians.', signature: 'RADIANS(angle)' },
230
+ SQRTPI: { group: 'Math', description: 'Returns the square root of a number multiplied by pi.', signature: 'SQRTPI(number)' },
231
+ // ---- Engineering -----------------------------------------------------
232
+ DEC2BIN: { group: 'Engineering', description: 'Converts a decimal number to binary, as ten-digit two’s complement when negative.', signature: 'DEC2BIN(number, [places])' },
233
+ DEC2OCT: { group: 'Engineering', description: 'Converts a decimal number to octal.', signature: 'DEC2OCT(number, [places])' },
234
+ DEC2HEX: { group: 'Engineering', description: 'Converts a decimal number to hexadecimal.', signature: 'DEC2HEX(number, [places])' },
235
+ BIN2DEC: { group: 'Engineering', description: 'Converts a binary number to decimal.', signature: 'BIN2DEC(number)' },
236
+ BIN2OCT: { group: 'Engineering', description: 'Converts a binary number to octal.', signature: 'BIN2OCT(number, [places])' },
237
+ BIN2HEX: { group: 'Engineering', description: 'Converts a binary number to hexadecimal.', signature: 'BIN2HEX(number, [places])' },
238
+ OCT2BIN: { group: 'Engineering', description: 'Converts an octal number to binary.', signature: 'OCT2BIN(number, [places])' },
239
+ OCT2DEC: { group: 'Engineering', description: 'Converts an octal number to decimal.', signature: 'OCT2DEC(number)' },
240
+ OCT2HEX: { group: 'Engineering', description: 'Converts an octal number to hexadecimal.', signature: 'OCT2HEX(number, [places])' },
241
+ HEX2BIN: { group: 'Engineering', description: 'Converts a hexadecimal number to binary.', signature: 'HEX2BIN(number, [places])' },
242
+ HEX2OCT: { group: 'Engineering', description: 'Converts a hexadecimal number to octal.', signature: 'HEX2OCT(number, [places])' },
243
+ HEX2DEC: { group: 'Engineering', description: 'Converts a hexadecimal number to decimal.', signature: 'HEX2DEC(number)' },
244
+ BITAND: { group: 'Engineering', description: 'Returns a bitwise AND of two non-negative integers.', signature: 'BITAND(number1, number2)' },
245
+ BITOR: { group: 'Engineering', description: 'Returns a bitwise OR of two non-negative integers.', signature: 'BITOR(number1, number2)' },
246
+ BITXOR: { group: 'Engineering', description: 'Returns a bitwise exclusive OR of two non-negative integers.', signature: 'BITXOR(number1, number2)' },
247
+ BITLSHIFT: { group: 'Engineering', description: 'Shifts a number left by the given number of bits.', signature: 'BITLSHIFT(number, shift_amount)' },
248
+ BITRSHIFT: { group: 'Engineering', description: 'Shifts a number right by the given number of bits.', signature: 'BITRSHIFT(number, shift_amount)' },
249
+ DELTA: { group: 'Engineering', description: 'Returns 1 when two numbers are equal, and 0 otherwise.', signature: 'DELTA(number1, [number2])' },
250
+ GESTEP: { group: 'Engineering', description: 'Returns 1 when a number is at or above a step, and 0 otherwise.', signature: 'GESTEP(number, [step])' },
251
+ ERF: { group: 'Engineering', description: 'Returns the error function, or its integral between two limits.', signature: 'ERF(lower_limit, [upper_limit])' },
252
+ 'ERF.PRECISE': { group: 'Engineering', description: 'Returns the error function.', signature: 'ERF.PRECISE(x)' },
253
+ ERFC: { group: 'Engineering', description: 'Returns the complementary error function.', signature: 'ERFC(x)' },
254
+ 'ERFC.PRECISE': { group: 'Engineering', description: 'Returns the complementary error function.', signature: 'ERFC.PRECISE(x)' },
255
+ CONVERT: { group: 'Engineering', description: 'Converts a number from one unit of measurement to another.', signature: 'CONVERT(number, from_unit, to_unit)' },
256
+ // ---- Database --------------------------------------------------------
257
+ DSUM: { group: 'Database', description: 'Adds the values in a field of the records that match the criteria.', signature: 'DSUM(database, field, criteria)' },
258
+ DPRODUCT: { group: 'Database', description: 'Multiplies the values in a field of the records that match the criteria.', signature: 'DPRODUCT(database, field, criteria)' },
259
+ DAVERAGE: { group: 'Database', description: 'Averages the values in a field of the records that match the criteria.', signature: 'DAVERAGE(database, field, criteria)' },
260
+ DMAX: { group: 'Database', description: 'Returns the largest value in a field of the records that match the criteria.', signature: 'DMAX(database, field, criteria)' },
261
+ DMIN: { group: 'Database', description: 'Returns the smallest value in a field of the records that match the criteria.', signature: 'DMIN(database, field, criteria)' },
262
+ DCOUNT: { group: 'Database', description: 'Counts the numbers in a field of the records that match the criteria.', signature: 'DCOUNT(database, field, criteria)' },
263
+ DCOUNTA: { group: 'Database', description: 'Counts the non-blank cells in a field of the records that match the criteria.', signature: 'DCOUNTA(database, field, criteria)' },
264
+ DSTDEV: { group: 'Database', description: 'Estimates the standard deviation from a sample of matching records.', signature: 'DSTDEV(database, field, criteria)' },
265
+ DSTDEVP: { group: 'Database', description: 'Returns the standard deviation of the whole population of matching records.', signature: 'DSTDEVP(database, field, criteria)' },
266
+ DVAR: { group: 'Database', description: 'Estimates the variance from a sample of matching records.', signature: 'DVAR(database, field, criteria)' },
267
+ DVARP: { group: 'Database', description: 'Returns the variance of the whole population of matching records.', signature: 'DVARP(database, field, criteria)' },
268
+ DGET: { group: 'Database', description: 'Returns the single record that matches the criteria, and an error when there is not exactly one.', signature: 'DGET(database, field, criteria)' },
269
+ // ---- Distributions ---------------------------------------------------
270
+ 'NORM.DIST': { group: 'Statistical', description: 'Returns the normal distribution for a mean and standard deviation.', signature: 'NORM.DIST(x, mean, standard_dev, cumulative)' },
271
+ NORMDIST: { group: 'Statistical', description: 'The earlier name for NORM.DIST.', signature: 'NORMDIST(x, mean, standard_dev, cumulative)' },
272
+ 'NORM.INV': { group: 'Statistical', description: 'Returns the inverse of the normal cumulative distribution.', signature: 'NORM.INV(probability, mean, standard_dev)' },
273
+ NORMINV: { group: 'Statistical', description: 'The earlier name for NORM.INV.', signature: 'NORMINV(probability, mean, standard_dev)' },
274
+ 'NORM.S.DIST': { group: 'Statistical', description: 'Returns the standard normal distribution.', signature: 'NORM.S.DIST(z, cumulative)' },
275
+ NORMSDIST: { group: 'Statistical', description: 'Returns the cumulative standard normal distribution.', signature: 'NORMSDIST(z)' },
276
+ 'NORM.S.INV': { group: 'Statistical', description: 'Returns the inverse of the standard normal cumulative distribution.', signature: 'NORM.S.INV(probability)' },
277
+ NORMSINV: { group: 'Statistical', description: 'The earlier name for NORM.S.INV.', signature: 'NORMSINV(probability)' },
278
+ STANDARDIZE: { group: 'Statistical', description: 'Returns a normalised value from a mean and standard deviation.', signature: 'STANDARDIZE(x, mean, standard_dev)' },
279
+ PHI: { group: 'Statistical', description: 'Returns the density of the standard normal distribution.', signature: 'PHI(x)' },
280
+ GAUSS: { group: 'Statistical', description: 'Returns the probability a standard normal value is between 0 and z.', signature: 'GAUSS(z)' },
281
+ FISHER: { group: 'Statistical', description: 'Returns the Fisher transformation.', signature: 'FISHER(x)' },
282
+ FISHERINV: { group: 'Statistical', description: 'Returns the inverse of the Fisher transformation.', signature: 'FISHERINV(y)' },
283
+ 'T.DIST': { group: 'Statistical', description: 'Returns the left-tailed Student t-distribution.', signature: 'T.DIST(x, deg_freedom, cumulative)' },
284
+ 'T.DIST.RT': { group: 'Statistical', description: 'Returns the right-tailed Student t-distribution.', signature: 'T.DIST.RT(x, deg_freedom)' },
285
+ 'T.DIST.2T': { group: 'Statistical', description: 'Returns the two-tailed Student t-distribution.', signature: 'T.DIST.2T(x, deg_freedom)' },
286
+ TDIST: { group: 'Statistical', description: 'The earlier t-distribution, which takes a tail count rather than a flag.', signature: 'TDIST(x, deg_freedom, tails)' },
287
+ 'T.INV': { group: 'Statistical', description: 'Returns the left-tailed inverse of the Student t-distribution.', signature: 'T.INV(probability, deg_freedom)' },
288
+ 'T.INV.2T': { group: 'Statistical', description: 'Returns the two-tailed inverse of the Student t-distribution.', signature: 'T.INV.2T(probability, deg_freedom)' },
289
+ TINV: { group: 'Statistical', description: 'The earlier name for T.INV.2T, and so two-tailed.', signature: 'TINV(probability, deg_freedom)' },
290
+ 'CHISQ.DIST': { group: 'Statistical', description: 'Returns the left-tailed chi-squared distribution.', signature: 'CHISQ.DIST(x, deg_freedom, cumulative)' },
291
+ 'CHISQ.DIST.RT': { group: 'Statistical', description: 'Returns the right-tailed chi-squared distribution.', signature: 'CHISQ.DIST.RT(x, deg_freedom)' },
292
+ CHIDIST: { group: 'Statistical', description: 'The earlier chi-squared distribution, which is right-tailed.', signature: 'CHIDIST(x, deg_freedom)' },
293
+ 'CHISQ.INV': { group: 'Statistical', description: 'Returns the left-tailed inverse of the chi-squared distribution.', signature: 'CHISQ.INV(probability, deg_freedom)' },
294
+ 'CHISQ.INV.RT': { group: 'Statistical', description: 'Returns the right-tailed inverse of the chi-squared distribution.', signature: 'CHISQ.INV.RT(probability, deg_freedom)' },
295
+ CHIINV: { group: 'Statistical', description: 'The earlier name for CHISQ.INV.RT.', signature: 'CHIINV(probability, deg_freedom)' },
296
+ 'F.DIST': { group: 'Statistical', description: 'Returns the left-tailed F probability distribution.', signature: 'F.DIST(x, deg_freedom1, deg_freedom2, cumulative)' },
297
+ 'F.DIST.RT': { group: 'Statistical', description: 'Returns the right-tailed F probability distribution.', signature: 'F.DIST.RT(x, deg_freedom1, deg_freedom2)' },
298
+ FDIST: { group: 'Statistical', description: 'The earlier F distribution, which is right-tailed.', signature: 'FDIST(x, deg_freedom1, deg_freedom2)' },
299
+ 'F.INV': { group: 'Statistical', description: 'Returns the left-tailed inverse of the F distribution.', signature: 'F.INV(probability, deg_freedom1, deg_freedom2)' },
300
+ 'F.INV.RT': { group: 'Statistical', description: 'Returns the right-tailed inverse of the F distribution.', signature: 'F.INV.RT(probability, deg_freedom1, deg_freedom2)' },
301
+ FINV: { group: 'Statistical', description: 'The earlier name for F.INV.RT.', signature: 'FINV(probability, deg_freedom1, deg_freedom2)' },
302
+ 'BINOM.DIST': { group: 'Statistical', description: 'Returns the binomial distribution probability.', signature: 'BINOM.DIST(number_s, trials, probability_s, cumulative)' },
303
+ BINOMDIST: { group: 'Statistical', description: 'The earlier name for BINOM.DIST.', signature: 'BINOMDIST(number_s, trials, probability_s, cumulative)' },
304
+ 'BINOM.INV': { group: 'Statistical', description: 'Returns the smallest number of successes whose cumulative probability reaches a criterion.', signature: 'BINOM.INV(trials, probability_s, alpha)' },
305
+ CRITBINOM: { group: 'Statistical', description: 'The earlier name for BINOM.INV.', signature: 'CRITBINOM(trials, probability_s, alpha)' },
306
+ 'NEGBINOM.DIST': { group: 'Statistical', description: 'Returns the negative binomial distribution.', signature: 'NEGBINOM.DIST(number_f, number_s, probability_s, cumulative)' },
307
+ NEGBINOMDIST: { group: 'Statistical', description: 'The earlier negative binomial distribution, density only.', signature: 'NEGBINOMDIST(number_f, number_s, probability_s)' },
308
+ 'POISSON.DIST': { group: 'Statistical', description: 'Returns the Poisson distribution.', signature: 'POISSON.DIST(x, mean, cumulative)' },
309
+ POISSON: { group: 'Statistical', description: 'The earlier name for POISSON.DIST.', signature: 'POISSON(x, mean, cumulative)' },
310
+ 'HYPGEOM.DIST': { group: 'Statistical', description: 'Returns the hypergeometric distribution.', signature: 'HYPGEOM.DIST(sample_s, number_sample, population_s, number_pop, [cumulative])' },
311
+ HYPGEOMDIST: { group: 'Statistical', description: 'The earlier hypergeometric distribution, density only.', signature: 'HYPGEOMDIST(sample_s, number_sample, population_s, number_pop)' },
312
+ 'EXPON.DIST': { group: 'Statistical', description: 'Returns the exponential distribution.', signature: 'EXPON.DIST(x, lambda, cumulative)' },
313
+ EXPONDIST: { group: 'Statistical', description: 'The earlier name for EXPON.DIST.', signature: 'EXPONDIST(x, lambda, cumulative)' },
314
+ 'LOGNORM.DIST': { group: 'Statistical', description: 'Returns the lognormal distribution.', signature: 'LOGNORM.DIST(x, mean, standard_dev, cumulative)' },
315
+ LOGNORMDIST: { group: 'Statistical', description: 'The earlier lognormal distribution, cumulative only.', signature: 'LOGNORMDIST(x, mean, standard_dev)' },
316
+ 'LOGNORM.INV': { group: 'Statistical', description: 'Returns the inverse of the lognormal cumulative distribution.', signature: 'LOGNORM.INV(probability, mean, standard_dev)' },
317
+ LOGINV: { group: 'Statistical', description: 'The earlier name for LOGNORM.INV.', signature: 'LOGINV(probability, mean, standard_dev)' },
318
+ 'GAMMA.DIST': { group: 'Statistical', description: 'Returns the gamma distribution.', signature: 'GAMMA.DIST(x, alpha, beta, cumulative)' },
319
+ GAMMADIST: { group: 'Statistical', description: 'The earlier name for GAMMA.DIST.', signature: 'GAMMADIST(x, alpha, beta, cumulative)' },
320
+ 'GAMMA.INV': { group: 'Statistical', description: 'Returns the inverse of the gamma cumulative distribution.', signature: 'GAMMA.INV(probability, alpha, beta)' },
321
+ GAMMAINV: { group: 'Statistical', description: 'The earlier name for GAMMA.INV.', signature: 'GAMMAINV(probability, alpha, beta)' },
322
+ GAMMA: { group: 'Statistical', description: 'Returns the gamma function value.', signature: 'GAMMA(x)' },
323
+ GAMMALN: { group: 'Statistical', description: 'Returns the natural logarithm of the gamma function.', signature: 'GAMMALN(x)' },
324
+ 'GAMMALN.PRECISE': { group: 'Statistical', description: 'Returns the natural logarithm of the gamma function.', signature: 'GAMMALN.PRECISE(x)' },
325
+ 'BETA.DIST': { group: 'Statistical', description: 'Returns the beta distribution.', signature: 'BETA.DIST(x, alpha, beta, cumulative, [A], [B])' },
326
+ BETADIST: { group: 'Statistical', description: 'The earlier beta distribution, cumulative only.', signature: 'BETADIST(x, alpha, beta, [A], [B])' },
327
+ 'BETA.INV': { group: 'Statistical', description: 'Returns the inverse of the beta cumulative distribution.', signature: 'BETA.INV(probability, alpha, beta, [A], [B])' },
328
+ BETAINV: { group: 'Statistical', description: 'The earlier name for BETA.INV.', signature: 'BETAINV(probability, alpha, beta, [A], [B])' },
329
+ 'WEIBULL.DIST': { group: 'Statistical', description: 'Returns the Weibull distribution.', signature: 'WEIBULL.DIST(x, alpha, beta, cumulative)' },
330
+ WEIBULL: { group: 'Statistical', description: 'The earlier name for WEIBULL.DIST.', signature: 'WEIBULL(x, alpha, beta, cumulative)' },
331
+ 'CONFIDENCE.NORM': { group: 'Statistical', description: 'Returns the confidence interval half-width for a population mean, using the normal distribution.', signature: 'CONFIDENCE.NORM(alpha, standard_dev, size)' },
332
+ CONFIDENCE: { group: 'Statistical', description: 'The earlier name for CONFIDENCE.NORM.', signature: 'CONFIDENCE(alpha, standard_dev, size)' },
333
+ 'CONFIDENCE.T': { group: 'Statistical', description: 'Returns the confidence interval half-width for a population mean, using the t-distribution.', signature: 'CONFIDENCE.T(alpha, standard_dev, size)' },
334
+ 'Z.TEST': { group: 'Statistical', description: 'Returns the one-tailed probability value of a z-test.', signature: 'Z.TEST(array, x, [sigma])' },
335
+ ZTEST: { group: 'Statistical', description: 'The earlier name for Z.TEST.', signature: 'ZTEST(array, x, [sigma])' },
336
+ 'T.TEST': { group: 'Statistical', description: 'Returns the probability associated with a Student t-test.', signature: 'T.TEST(array1, array2, tails, type)' },
337
+ TTEST: { group: 'Statistical', description: 'The earlier name for T.TEST.', signature: 'TTEST(array1, array2, tails, type)' },
338
+ 'F.TEST': { group: 'Statistical', description: 'Returns the two-tailed probability that two samples have the same variance.', signature: 'F.TEST(array1, array2)' },
339
+ FTEST: { group: 'Statistical', description: 'The earlier name for F.TEST.', signature: 'FTEST(array1, array2)' },
340
+ 'CHISQ.TEST': { group: 'Statistical', description: 'Returns the test for independence between observed and expected counts.', signature: 'CHISQ.TEST(actual_range, expected_range)' },
341
+ CHITEST: { group: 'Statistical', description: 'The earlier name for CHISQ.TEST.', signature: 'CHITEST(actual_range, expected_range)' },
342
+ // ---- Descriptive statistics -----------------------------------------
343
+ AVEDEV: { group: 'Statistical', description: 'Returns the average of the absolute deviations from the mean.', signature: 'AVEDEV(number1, [number2], ...)' },
344
+ DEVSQ: { group: 'Statistical', description: 'Returns the sum of squared deviations from the mean.', signature: 'DEVSQ(number1, [number2], ...)' },
345
+ SKEW: { group: 'Statistical', description: 'Returns the skewness of a distribution from a sample.', signature: 'SKEW(number1, [number2], ...)' },
346
+ 'SKEW.P': { group: 'Statistical', description: 'Returns the skewness of a distribution from the whole population.', signature: 'SKEW.P(number1, [number2], ...)' },
347
+ KURT: { group: 'Statistical', description: 'Returns the kurtosis of a data set.', signature: 'KURT(number1, [number2], ...)' },
348
+ TRIMMEAN: { group: 'Statistical', description: 'Returns the mean of the interior of a data set, trimming a percentage off each end.', signature: 'TRIMMEAN(array, percent)' },
349
+ PERMUTATIONA: { group: 'Statistical', description: 'Returns the number of permutations with repetition allowed.', signature: 'PERMUTATIONA(number, number_chosen)' },
350
+ MULTINOMIAL: { group: 'Math', description: 'Returns the multinomial coefficient of a set of numbers.', signature: 'MULTINOMIAL(number1, [number2], ...)' },
351
+ AVERAGEA: { group: 'Statistical', description: 'Averages its arguments, counting text as 0 and a boolean as 1 or 0.', signature: 'AVERAGEA(value1, [value2], ...)' },
352
+ MAXA: { group: 'Statistical', description: 'Returns the largest value, counting text as 0 and a boolean as 1 or 0.', signature: 'MAXA(value1, [value2], ...)' },
353
+ MINA: { group: 'Statistical', description: 'Returns the smallest value, counting text as 0 and a boolean as 1 or 0.', signature: 'MINA(value1, [value2], ...)' },
354
+ STDEVA: { group: 'Statistical', description: 'Estimates the standard deviation from a sample, counting text and booleans.', signature: 'STDEVA(value1, [value2], ...)' },
355
+ STDEVPA: { group: 'Statistical', description: 'Returns the population standard deviation, counting text and booleans.', signature: 'STDEVPA(value1, [value2], ...)' },
356
+ VARA: { group: 'Statistical', description: 'Estimates the variance from a sample, counting text and booleans.', signature: 'VARA(value1, [value2], ...)' },
357
+ VARPA: { group: 'Statistical', description: 'Returns the population variance, counting text and booleans.', signature: 'VARPA(value1, [value2], ...)' },
358
+ 'COVARIANCE.P': { group: 'Statistical', description: 'Returns the population covariance of two ranges.', signature: 'COVARIANCE.P(array1, array2)' },
359
+ COVAR: { group: 'Statistical', description: 'The earlier name for COVARIANCE.P.', signature: 'COVAR(array1, array2)' },
360
+ 'COVARIANCE.S': { group: 'Statistical', description: 'Returns the sample covariance of two ranges.', signature: 'COVARIANCE.S(array1, array2)' },
361
+ PEARSON: { group: 'Statistical', description: 'Returns the Pearson product-moment correlation coefficient.', signature: 'PEARSON(array1, array2)' },
362
+ RSQ: { group: 'Statistical', description: 'Returns the square of the Pearson correlation coefficient.', signature: 'RSQ(known_ys, known_xs)' },
363
+ STEYX: { group: 'Statistical', description: 'Returns the standard error of the predicted y for each x in a regression.', signature: 'STEYX(known_ys, known_xs)' },
364
+ PROB: { group: 'Statistical', description: 'Returns the probability that values fall between two limits.', signature: 'PROB(x_range, prob_range, lower_limit, [upper_limit])' },
76
365
  };
77
366
  /** The IF family is dispatched by the evaluator, not the function table. */
78
- const EVALUATOR_FUNCTIONS = ['IF', 'IFS', 'IFERROR', 'IFNA', 'SWITCH'];
367
+ /** The evaluator's own names, read off the one list rather than copied. */
368
+ const EVALUATOR_FUNCTIONS = EVALUATOR_NAMES;
79
369
  export const FUNCTION_GROUPS = [
80
- 'Math', 'Statistical', 'Logical', 'Information', 'Text', 'Date & Time', 'Lookup & Reference', 'Other',
370
+ 'Financial', 'Math', 'Statistical', 'Logical', 'Information', 'Text', 'Date & Time', 'Lookup & Reference',
371
+ 'Engineering', 'Database', 'Other',
81
372
  ];
82
373
  /** Every function the engine knows, described, alphabetical. */
83
374
  export function functionCatalog() {
84
- const names = new Set([...Object.keys(FUNCTIONS), ...EVALUATOR_FUNCTIONS]);
375
+ const names = new Set([...Object.keys(FUNCTIONS), ...Object.keys(ARRAY_FUNCTIONS), ...EVALUATOR_FUNCTIONS]);
85
376
  return [...names].sort().map((name) => {
86
377
  const entry = CATALOG[name];
87
378
  return {