@trebco/treb 32.14.0 → 36.1.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 (267) hide show
  1. package/api-generator/api-generator-types.ts +3 -0
  2. package/api-generator/api-generator.ts +15 -1
  3. package/bun.lock +145 -99
  4. package/dist/chunk-43DLP2OX.mjs +11 -0
  5. package/dist/chunk-4CKS56PE.mjs +11 -0
  6. package/dist/chunk-75PARUQE.mjs +11 -0
  7. package/dist/chunk-7QD63AZS.mjs +24601 -0
  8. package/dist/chunk-A55ARVRD.mjs +11 -0
  9. package/dist/chunk-DESAKYW4.mjs +11 -0
  10. package/dist/chunk-EQ2R5W6P.mjs +24565 -0
  11. package/dist/chunk-IYJU2J6D.mjs +24601 -0
  12. package/dist/chunk-KSJFPGXT.mjs +11 -0
  13. package/dist/chunk-ORQFKLXM.mjs +24601 -0
  14. package/dist/chunk-SFDNNDHY.mjs +11 -0
  15. package/dist/chunk-T47DX5MI.mjs +11 -0
  16. package/dist/chunk-T6ILBVEX.mjs +11 -0
  17. package/dist/chunk-TPRCDYYG.mjs +11 -0
  18. package/dist/chunk-YAHNOOHO.mjs +11 -0
  19. package/dist/chunk-YLCFKX2G.mjs +24601 -0
  20. package/dist/treb-export-worker.mjs +9 -2
  21. package/dist/treb-spreadsheet.mjs +7 -19
  22. package/dist/treb.d.ts +144 -117
  23. package/esbuild-composite.mjs +18 -6
  24. package/esbuild-utils.mjs +62 -3
  25. package/i18n/languages/treb-i18n-da.mjs +1 -1
  26. package/i18n/languages/treb-i18n-de.mjs +1 -1
  27. package/i18n/languages/treb-i18n-es.mjs +1 -1
  28. package/i18n/languages/treb-i18n-fr.mjs +1 -1
  29. package/i18n/languages/treb-i18n-it.mjs +1 -1
  30. package/i18n/languages/treb-i18n-nl.mjs +1 -1
  31. package/i18n/languages/treb-i18n-no.mjs +1 -1
  32. package/i18n/languages/treb-i18n-pl.mjs +1 -1
  33. package/i18n/languages/treb-i18n-pt.mjs +1 -1
  34. package/i18n/languages/treb-i18n-sv.mjs +1 -1
  35. package/ooxml-types/README.md +141 -0
  36. package/ooxml-types/package.json +5 -0
  37. package/ooxml-types/src/types/drawingml/chart.ts +327 -0
  38. package/ooxml-types/src/types/drawingml/index.ts +63 -0
  39. package/ooxml-types/src/types/drawingml/spreadsheetDrawing.ts +105 -0
  40. package/ooxml-types/src/types/drawingml/theme.ts +104 -0
  41. package/ooxml-types/src/types/index.ts +3 -0
  42. package/ooxml-types/src/types/package/contentTypes.ts +49 -0
  43. package/ooxml-types/src/types/package/docProps.ts +46 -0
  44. package/ooxml-types/src/types/package/index.ts +17 -0
  45. package/ooxml-types/src/types/package/relationships.ts +37 -0
  46. package/ooxml-types/src/types/spreadsheetml/columns.ts +20 -0
  47. package/ooxml-types/src/types/spreadsheetml/comments.ts +30 -0
  48. package/ooxml-types/src/types/spreadsheetml/dataFeatures.ts +261 -0
  49. package/ooxml-types/src/types/spreadsheetml/enums.ts +175 -0
  50. package/ooxml-types/src/types/spreadsheetml/index.ts +186 -0
  51. package/ooxml-types/src/types/spreadsheetml/metadata.ts +90 -0
  52. package/ooxml-types/src/types/spreadsheetml/misc.ts +35 -0
  53. package/ooxml-types/src/types/spreadsheetml/pageLayout.ts +83 -0
  54. package/ooxml-types/src/types/spreadsheetml/sharedStrings.ts +33 -0
  55. package/ooxml-types/src/types/spreadsheetml/sheetData.ts +70 -0
  56. package/ooxml-types/src/types/spreadsheetml/sheetProperties.ts +86 -0
  57. package/ooxml-types/src/types/spreadsheetml/sheetViews.ts +51 -0
  58. package/ooxml-types/src/types/spreadsheetml/sparkline.ts +46 -0
  59. package/ooxml-types/src/types/spreadsheetml/styles.ts +274 -0
  60. package/ooxml-types/src/types/spreadsheetml/table.ts +106 -0
  61. package/ooxml-types/src/types/spreadsheetml/util.ts +15 -0
  62. package/ooxml-types/src/types/spreadsheetml/workbook.ts +165 -0
  63. package/ooxml-types/src/types/spreadsheetml/worksheet.ts +60 -0
  64. package/package.json +13 -11
  65. package/treb-base-types/src/api_types.ts +1 -1
  66. package/treb-base-types/src/area-utils.ts +1 -1
  67. package/treb-base-types/src/area.ts +1 -1
  68. package/treb-base-types/src/basic_types.ts +1 -1
  69. package/treb-base-types/src/cell.ts +1 -1
  70. package/treb-base-types/src/cells.ts +1 -1
  71. package/treb-base-types/src/color.ts +1 -1
  72. package/treb-base-types/src/dom-utilities.ts +1 -1
  73. package/treb-base-types/src/evaluate-options.ts +1 -1
  74. package/treb-base-types/src/font-stack.ts +1 -1
  75. package/treb-base-types/src/gradient.ts +1 -1
  76. package/treb-base-types/src/import.ts +1 -1
  77. package/treb-base-types/src/index-standalone.ts +1 -1
  78. package/treb-base-types/src/index.ts +2 -1
  79. package/treb-base-types/src/layout.ts +1 -1
  80. package/treb-base-types/src/localization.ts +1 -1
  81. package/treb-base-types/src/rectangle.ts +1 -1
  82. package/treb-base-types/src/render_text.ts +7 -1
  83. package/treb-base-types/src/style.ts +1 -1
  84. package/treb-base-types/src/table.ts +1 -1
  85. package/treb-base-types/src/text_part.ts +1 -1
  86. package/treb-base-types/src/theme.ts +1 -1
  87. package/treb-base-types/src/union.ts +4 -1
  88. package/treb-base-types/src/value-type.ts +1 -1
  89. package/treb-base-types/src/worker-proxy.ts +294 -0
  90. package/treb-base-types/style/resizable.css +1 -1
  91. package/treb-calculator/src/calculator.ts +133 -14
  92. package/treb-calculator/src/complex-math.ts +1 -1
  93. package/treb-calculator/src/dag/array-vertex.ts +1 -1
  94. package/treb-calculator/src/dag/calculation_leaf_vertex.ts +1 -1
  95. package/treb-calculator/src/dag/graph.ts +1 -1
  96. package/treb-calculator/src/dag/spreadsheet_vertex.ts +1 -1
  97. package/treb-calculator/src/dag/spreadsheet_vertex_base.ts +1 -1
  98. package/treb-calculator/src/dag/state_leaf_vertex.ts +1 -1
  99. package/treb-calculator/src/dag/vertex.ts +1 -1
  100. package/treb-calculator/src/descriptors.ts +9 -1
  101. package/treb-calculator/src/expression-calculator.ts +1 -1
  102. package/treb-calculator/src/function-error.ts +1 -1
  103. package/treb-calculator/src/function-library.ts +1 -1
  104. package/treb-calculator/src/functions/base-functions.ts +8 -4
  105. package/treb-calculator/src/functions/beta.ts +1 -1
  106. package/treb-calculator/src/functions/checkbox.ts +1 -1
  107. package/treb-calculator/src/functions/complex-functions.ts +1 -1
  108. package/treb-calculator/src/functions/date-utils.ts +1 -1
  109. package/treb-calculator/src/functions/finance-functions.ts +2 -4
  110. package/treb-calculator/src/functions/fp.ts +1 -1
  111. package/treb-calculator/src/functions/function-utilities.ts +1 -1
  112. package/treb-calculator/src/functions/gamma.ts +1 -1
  113. package/treb-calculator/src/functions/information-functions.ts +1 -1
  114. package/treb-calculator/src/functions/lambda-functions.ts +4 -1
  115. package/treb-calculator/src/functions/matrix-functions.ts +1 -1
  116. package/treb-calculator/src/functions/normal.ts +1 -1
  117. package/treb-calculator/src/functions/regex-functions.ts +13 -4
  118. package/treb-calculator/src/functions/sparkline.ts +1 -1
  119. package/treb-calculator/src/functions/statistics-functions.ts +1 -1
  120. package/treb-calculator/src/functions/students-t.ts +1 -1
  121. package/treb-calculator/src/functions/text-functions.ts +5 -1
  122. package/treb-calculator/src/index.ts +1 -1
  123. package/treb-calculator/src/notifier-types.ts +1 -1
  124. package/treb-calculator/src/primitives.ts +1 -1
  125. package/treb-calculator/src/utilities.ts +1 -1
  126. package/treb-charts/src/chart-functions.ts +1 -1
  127. package/treb-charts/src/chart-types.ts +1 -1
  128. package/treb-charts/src/chart-utils.ts +1 -1
  129. package/treb-charts/src/chart.ts +1 -1
  130. package/treb-charts/src/default-chart-renderer.ts +1 -1
  131. package/treb-charts/src/index.ts +1 -1
  132. package/treb-charts/src/main.ts +1 -1
  133. package/treb-charts/src/quicksort.ts +1 -1
  134. package/treb-charts/src/rectangle.ts +1 -1
  135. package/treb-charts/src/renderer-type.ts +1 -1
  136. package/treb-charts/src/renderer.ts +1 -1
  137. package/treb-charts/src/util.ts +1 -1
  138. package/treb-charts/style/charts.scss +1 -1
  139. package/treb-data-model/src/annotation.ts +1 -1
  140. package/treb-data-model/src/conditional_format.ts +1 -1
  141. package/treb-data-model/src/data-validation.ts +1 -1
  142. package/treb-data-model/src/data_model.ts +32 -5
  143. package/treb-data-model/src/index.ts +1 -1
  144. package/treb-data-model/src/language-model.ts +1 -1
  145. package/treb-data-model/src/named.ts +1 -1
  146. package/treb-data-model/src/serialize_options.ts +1 -1
  147. package/treb-data-model/src/sheet.ts +1 -1
  148. package/treb-data-model/src/sheet_collection.ts +1 -1
  149. package/treb-data-model/src/sheet_selection.ts +1 -1
  150. package/treb-data-model/src/sheet_types.ts +1 -1
  151. package/treb-data-model/src/types.ts +1 -1
  152. package/treb-embed/src/content-types.d.ts +1 -1
  153. package/treb-embed/src/custom-element/global.d.ts +1 -1
  154. package/treb-embed/src/custom-element/spreadsheet-constructor.ts +1 -1
  155. package/treb-embed/src/custom-element/treb-global.ts +1 -1
  156. package/treb-embed/src/custom-element/treb-spreadsheet-element.ts +1 -1
  157. package/treb-embed/src/embedded-spreadsheet.ts +357 -154
  158. package/treb-embed/src/index.ts +1 -1
  159. package/treb-embed/src/options.ts +4 -2
  160. package/treb-embed/src/plugin.ts +1 -1
  161. package/treb-embed/src/progress-dialog.ts +1 -1
  162. package/treb-embed/src/selection-state.ts +1 -1
  163. package/treb-embed/src/spinner.ts +1 -1
  164. package/treb-embed/src/toolbar-message.ts +6 -1
  165. package/treb-embed/src/types.ts +13 -1
  166. package/treb-embed/style/autocomplete.scss +1 -1
  167. package/treb-embed/style/dark-theme.scss +1 -1
  168. package/treb-embed/style/defaults.scss +1 -1
  169. package/treb-embed/style/dialog.scss +1 -1
  170. package/treb-embed/style/dropdown-select.scss +1 -1
  171. package/treb-embed/style/font-stacks.scss +1 -1
  172. package/treb-embed/style/formula-bar.scss +1 -1
  173. package/treb-embed/style/grid.scss +1 -1
  174. package/treb-embed/style/layout.scss +1 -1
  175. package/treb-embed/style/mouse-mask.scss +1 -1
  176. package/treb-embed/style/note.scss +1 -1
  177. package/treb-embed/style/overlay-editor.scss +1 -1
  178. package/treb-embed/style/spinner.scss +1 -1
  179. package/treb-embed/style/tab-bar.scss +1 -1
  180. package/treb-embed/style/table.scss +1 -1
  181. package/treb-embed/style/theme-defaults.scss +1 -1
  182. package/treb-embed/style/toolbar.scss +1 -1
  183. package/treb-embed/style/tooltip.scss +1 -1
  184. package/treb-embed/style/treb-icons.scss +1 -1
  185. package/treb-embed/style/treb-spreadsheet-element.scss +1 -1
  186. package/treb-embed/style/z-index.scss +1 -1
  187. package/treb-export/src/address-type.ts +1 -1
  188. package/treb-export/src/base-template.ts +1 -1
  189. package/treb-export/src/column-width.ts +1 -1
  190. package/treb-export/src/drawing/bubble-chart-template.ts +1 -1
  191. package/treb-export/src/drawing/chart-template-components2.ts +1 -1
  192. package/treb-export/src/drawing/chart.ts +1 -1
  193. package/treb-export/src/drawing/column-chart-template2.ts +1 -1
  194. package/treb-export/src/drawing/donut-chart-template2.ts +1 -1
  195. package/treb-export/src/drawing/drawing.ts +1 -1
  196. package/treb-export/src/drawing/embedded-image.ts +1 -1
  197. package/treb-export/src/drawing/scatter-chart-template2.ts +1 -1
  198. package/treb-export/src/export.ts +10 -6
  199. package/treb-export/src/import-export-messages.ts +61 -0
  200. package/treb-export/src/import.ts +318 -301
  201. package/treb-export/src/index.worker.ts +85 -53
  202. package/treb-export/src/metadata.ts +71 -3
  203. package/treb-export/src/ooxml.ts +47 -0
  204. package/treb-export/src/relationship.ts +1 -1
  205. package/treb-export/src/shared-strings.ts +19 -15
  206. package/treb-export/src/template-2.ts +1 -1
  207. package/treb-export/src/unescape_xml.ts +1 -1
  208. package/treb-export/src/workbook-sheet.ts +11 -6
  209. package/treb-export/src/workbook-style.ts +137 -25
  210. package/treb-export/src/workbook-theme.ts +20 -4
  211. package/treb-export/src/workbook.ts +85 -88
  212. package/treb-export/src/xml-test.ts +1 -1
  213. package/treb-export/src/xml-utils.ts +1 -1
  214. package/treb-export/src/zip-wrapper.ts +1 -1
  215. package/treb-export/tsconfig.json +2 -1
  216. package/treb-format/src/format.test.ts +1 -1
  217. package/treb-format/src/format.ts +12 -5
  218. package/treb-format/src/format_cache.ts +3 -3
  219. package/treb-format/src/format_parser.ts +1 -1
  220. package/treb-format/src/index.ts +1 -1
  221. package/treb-format/src/number_format_section.ts +1 -1
  222. package/treb-format/src/value_parser.ts +1 -1
  223. package/treb-grid/src/editors/autocomplete.ts +1 -1
  224. package/treb-grid/src/editors/autocomplete_matcher.ts +1 -1
  225. package/treb-grid/src/editors/editor.ts +15 -6
  226. package/treb-grid/src/editors/external_editor.ts +33 -8
  227. package/treb-grid/src/editors/formula_bar.ts +12 -1
  228. package/treb-grid/src/editors/overlay_editor.ts +4 -1
  229. package/treb-grid/src/index.ts +1 -1
  230. package/treb-grid/src/layout/base_layout.ts +1 -1
  231. package/treb-grid/src/layout/grid_layout.ts +1 -1
  232. package/treb-grid/src/layout/mock-layout.ts +1 -1
  233. package/treb-grid/src/render/selection-renderer.ts +1 -1
  234. package/treb-grid/src/render/svg_header_overlay.ts +1 -1
  235. package/treb-grid/src/render/svg_selection_block.ts +1 -1
  236. package/treb-grid/src/render/tile_renderer.ts +36 -7
  237. package/treb-grid/src/types/border_constants.ts +1 -1
  238. package/treb-grid/src/types/clipboard_data.ts +1 -1
  239. package/treb-grid/src/types/clipboard_data2.ts +1 -1
  240. package/treb-grid/src/types/drag_mask.ts +1 -1
  241. package/treb-grid/src/types/external_editor_config.ts +1 -1
  242. package/treb-grid/src/types/grid.ts +181 -40
  243. package/treb-grid/src/types/grid_base.ts +7 -4
  244. package/treb-grid/src/types/grid_command.ts +7 -1
  245. package/treb-grid/src/types/grid_events.ts +2 -1
  246. package/treb-grid/src/types/grid_options.ts +1 -1
  247. package/treb-grid/src/types/scale-control.ts +1 -1
  248. package/treb-grid/src/types/set_range_options.ts +1 -1
  249. package/treb-grid/src/types/tab_bar.ts +1 -1
  250. package/treb-grid/src/types/tile.ts +1 -1
  251. package/treb-grid/src/types/update_flags.ts +1 -1
  252. package/treb-grid/src/util/fontmetrics.ts +1 -1
  253. package/treb-grid/src/util/ua.ts +1 -1
  254. package/treb-parser/src/csv-parser.ts +1 -1
  255. package/treb-parser/src/index.ts +1 -1
  256. package/treb-parser/src/md-parser.ts +1 -1
  257. package/treb-parser/src/parser-types.ts +1 -1
  258. package/treb-parser/src/parser.ts +1 -1
  259. package/treb-utils/src/event_source.ts +1 -1
  260. package/treb-utils/src/ievent_source.ts +1 -1
  261. package/treb-utils/src/index.ts +1 -1
  262. package/treb-utils/src/measurement.ts +1 -1
  263. package/treb-utils/src/scale.ts +1 -1
  264. package/treb-utils/src/serialize_html.ts +1 -1
  265. package/treb-utils/src/validate_uri.ts +1 -1
  266. package/tsproject.json +2 -3
  267. package/treb-embed/src/export-worker.ts +0 -44
package/dist/treb.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /*! API v32.14. Copyright 2018-2025 trebco, llc. All rights reserved. LGPL: https://treb.app/license */
1
+ /*! API v36.1. Copyright 2018-2026 trebco, llc. All rights reserved. LGPL: https://treb.app/license */
2
2
  /*
3
3
  * This file is part of TREB.
4
4
  *
@@ -15,7 +15,7 @@
15
15
  * You should have received a copy of the GNU General Public License along
16
16
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
17
17
  *
18
- * Copyright 2022-2025 trebco, llc.
18
+ * Copyright 2022-2026 trebco, llc.
19
19
  * info@treb.app
20
20
  *
21
21
  */
@@ -341,6 +341,7 @@ export interface ICellAddress {
341
341
  * embedded spreadsheet
342
342
  */
343
343
  export declare class EmbeddedSpreadsheet<USER_DATA_TYPE = unknown> {
344
+ get ready(): Promise<void[]>;
344
345
 
345
346
  /**
346
347
  * convenience function returns the name of the active sheet. if the
@@ -613,10 +614,11 @@ export declare class EmbeddedSpreadsheet<USER_DATA_TYPE = unknown> {
613
614
  *
614
615
  * @param column - column, or columns (array), or undefined means all columns
615
616
  * @param width - desired width (can be 0) or undefined means 'auto-size'
617
+ * @param allow_shrinking - for auto-size, allow shrinking. defaults to true.
616
618
  *
617
619
  * @public
618
620
  */
619
- SetColumnWidth(column?: number | number[], width?: number): void;
621
+ SetColumnWidth(column?: number | number[], width?: number, allow_shrinking?: boolean): void;
620
622
 
621
623
  /**
622
624
  * Set height of row(s).
@@ -890,8 +892,9 @@ export declare class EmbeddedSpreadsheet<USER_DATA_TYPE = unknown> {
890
892
  * Revert state one level from the undo stack.
891
893
  *
892
894
  * @public
895
+ * @returns true if undo succeeded, false if the undo stack was empty
893
896
  */
894
- Undo(): void;
897
+ Undo(): boolean;
895
898
 
896
899
  /**
897
900
  * Show the about dialog.
@@ -1129,6 +1132,12 @@ export declare class EmbeddedSpreadsheet<USER_DATA_TYPE = unknown> {
1129
1132
  * @param token - the token returned from `Subscribe`
1130
1133
  */
1131
1134
  Cancel(token: number): void;
1135
+
1136
+ /**
1137
+ *
1138
+ */
1139
+ ImportXLSX(// data: string, source: LoadSource): Promise<Blob | void> {
1140
+ data: ArrayBuffer, source: LoadSource, path?: string): Promise<Blob | void>;
1132
1141
  }
1133
1142
 
1134
1143
  /**
@@ -1148,6 +1157,10 @@ export interface LoadDocumentOptions {
1148
1157
  flush?: boolean;
1149
1158
  recalculate?: boolean;
1150
1159
  override_sheet?: string;
1160
+ source?: LoadSource;
1161
+
1162
+ /** opaque data for reference */
1163
+ path?: string;
1151
1164
  }
1152
1165
 
1153
1166
  /**
@@ -1604,120 +1617,10 @@ export interface TableSortOptions {
1604
1617
  }
1605
1618
  export type TableSortType = 'text' | 'numeric' | 'auto';
1606
1619
 
1607
- /** clipboard data is a 2d array */
1608
- export type ClipboardData = ClipboardDataElement[][];
1609
-
1610
1620
  /**
1611
- * optional paste options. we can paste formulas or values, and we
1612
- * can use the source style, target style, or just use the source
1613
- * number formats.
1621
+ * this is for the worker side, to normalize postMessage/onmessage
1614
1622
  */
1615
- export interface PasteOptions {
1616
-
1617
- /**
1618
- * when clipboard data includes formulas, optionally paste calculated
1619
- * values instead of the original formulas. defaults to false.
1620
- */
1621
- values?: boolean;
1622
-
1623
- /**
1624
- * when pasting data from the clipboard, we can copy formatting/style
1625
- * from the original data, or we can retain the target range formatting
1626
- * and just paste data. a third option allows pasting source number
1627
- * formats but dropping other style information.
1628
- *
1629
- * defaults to "source", meaning paste source styles.
1630
- */
1631
- formatting?: 'source' | 'target' | 'number-formats';
1632
- }
1633
-
1634
- /**
1635
- * this is a structure for copy/paste data. clipboard data may include
1636
- * relative formauls and resolved styles, so it's suitable for pasting into
1637
- * other areas of the spreadsheet.
1638
- */
1639
- export interface ClipboardDataElement {
1640
-
1641
- /** calculated cell value */
1642
- calculated: CellValue;
1643
-
1644
- /** the actual cell value or formula */
1645
- value: CellValue;
1646
-
1647
- /** cell style. this may include row/column styles from the copy source */
1648
- style?: CellStyle;
1649
-
1650
- /** area. if this cell is part of an array, this is the array range */
1651
- area?: IArea;
1652
- }
1653
- export declare type BorderConstants = "none" | "all" | "outside" | "top" | "bottom" | "left" | "right";
1654
-
1655
- /**
1656
- * options for the SetRange method
1657
- */
1658
- export interface SetRangeOptions {
1659
-
1660
- /** transpose rectangular array before inserting */
1661
- transpose?: boolean;
1662
-
1663
- /** recycle values (R-style) */
1664
- recycle?: boolean;
1665
-
1666
- /** apply as an array (as if you pressed ctrl+shift+enter) */
1667
- array?: boolean;
1668
-
1669
- /** spill over */
1670
- spill?: boolean;
1671
-
1672
- /**
1673
- * argument separator to use when parsing the input formula. set this
1674
- * option to call SetRange with a consistent argument separator,
1675
- * independent of current locale.
1676
- */
1677
- argument_separator?: ',' | ';';
1678
-
1679
- /**
1680
- * allow R1C1-style references; these can be either absolute
1681
- * addresses (e.g. R2C4) or relative to the cell (e.g. R[-3]C[0]).
1682
- */
1683
- r1c1?: boolean;
1684
- }
1685
- export interface ExternalEditorConfig {
1686
-
1687
- /**
1688
- * list of dependencies to highlight. we support undefined entries in
1689
- * this list so you can use the result of `EmbeddedSpreadsheet.Resolve`,
1690
- * which may return undefined.
1691
- */
1692
- dependencies: DependencyList;
1693
-
1694
- /**
1695
- * this callback will be called when the selection changes in the
1696
- * spreadsheet and this external editor is active. return an updated
1697
- * list of dependencies to highlight.
1698
- *
1699
- * NOTE: this is currently synchronous, but don't rely on that. it
1700
- * might switch to async in the future depending on how it works in
1701
- * practice.
1702
- */
1703
- update: ExternalEditorCallback;
1704
-
1705
- /**
1706
- * a list of nodes that will serve as editors. when you attach, we will do
1707
- * an initial pass of context highlighting. we highlight on text changes
1708
- * and insert references if you make a selection in the spreadsheet while
1709
- * an editor is focused.
1710
- */
1711
- nodes: HTMLElement[];
1712
-
1713
- /**
1714
- * assume that we're editing a formula. does not require leading `=`.
1715
- * defaults to `true` for historical reasons.
1716
- */
1717
- assume_formula?: boolean;
1718
- }
1719
- export type DependencyList = Array<IArea | ICellAddress | undefined>;
1720
- export type ExternalEditorCallback = (selection?: string) => DependencyList | undefined;
1623
+ export declare const GetWorkerContext: () => Promise<Worker>;
1721
1624
 
1722
1625
  /**
1723
1626
  * this is the document type used by TREB. it has a lot of small variations
@@ -1792,7 +1695,7 @@ export declare type LoadSource = "drag-and-drop" | "local-file" | "network-file"
1792
1695
  * EmbeddedSheetEvent is a discriminated union. Switch on the `type` field
1793
1696
  * of the event.
1794
1697
  */
1795
- export type EmbeddedSheetEvent = DocumentChangeEvent | DocumentResetEvent | DocumentLoadEvent | ThemeChangeEvent | ViewChangeEvent | DataChangeEvent | FocusViewEvent | SelectionEvent | ResizeEvent | AnnotationSelectionEvent;
1698
+ export type EmbeddedSheetEvent = DocumentChangeEvent | DocumentResetEvent | DocumentLoadEvent | ThemeChangeEvent | ViewChangeEvent | DataChangeEvent | FocusViewEvent | SelectionEvent | ResizeEvent | LanguageChangeEvent | AnnotationSelectionEvent;
1796
1699
 
1797
1700
  /**
1798
1701
  * options when inserting a table into a sheet
@@ -1847,6 +1750,9 @@ export interface DocumentLoadEvent {
1847
1750
  type: 'load';
1848
1751
  source?: LoadSource;
1849
1752
  file_type?: LoadType;
1753
+
1754
+ /** adding a path for tui; consider this opaque data */
1755
+ path?: string;
1850
1756
  }
1851
1757
 
1852
1758
  /**
@@ -1880,6 +1786,7 @@ export interface DocumentChangeEvent {
1880
1786
  */
1881
1787
  export interface SelectionEvent {
1882
1788
  type: 'selection';
1789
+ reason?: 'sheet-change';
1883
1790
  }
1884
1791
 
1885
1792
  /**
@@ -1897,6 +1804,11 @@ export interface AnnotationSelectionEvent {
1897
1804
  export interface FocusViewEvent {
1898
1805
  type: 'focus-view';
1899
1806
  }
1807
+
1808
+ /** event sent when the loaded language changes (FIXME: should we include the locale?) */
1809
+ export interface LanguageChangeEvent {
1810
+ type: 'language-change';
1811
+ }
1900
1812
  export interface SerializedSheet {
1901
1813
 
1902
1814
  /** cell data */
@@ -2275,6 +2187,121 @@ export interface SerializedNamedExpression {
2275
2187
  expression: string;
2276
2188
  }
2277
2189
 
2190
+ /** clipboard data is a 2d array */
2191
+ export type ClipboardData = ClipboardDataElement[][];
2192
+
2193
+ /**
2194
+ * optional paste options. we can paste formulas or values, and we
2195
+ * can use the source style, target style, or just use the source
2196
+ * number formats.
2197
+ */
2198
+ export interface PasteOptions {
2199
+
2200
+ /**
2201
+ * when clipboard data includes formulas, optionally paste calculated
2202
+ * values instead of the original formulas. defaults to false.
2203
+ */
2204
+ values?: boolean;
2205
+
2206
+ /**
2207
+ * when pasting data from the clipboard, we can copy formatting/style
2208
+ * from the original data, or we can retain the target range formatting
2209
+ * and just paste data. a third option allows pasting source number
2210
+ * formats but dropping other style information.
2211
+ *
2212
+ * defaults to "source", meaning paste source styles.
2213
+ */
2214
+ formatting?: 'source' | 'target' | 'number-formats';
2215
+ }
2216
+
2217
+ /**
2218
+ * this is a structure for copy/paste data. clipboard data may include
2219
+ * relative formauls and resolved styles, so it's suitable for pasting into
2220
+ * other areas of the spreadsheet.
2221
+ */
2222
+ export interface ClipboardDataElement {
2223
+
2224
+ /** calculated cell value */
2225
+ calculated: CellValue;
2226
+
2227
+ /** the actual cell value or formula */
2228
+ value: CellValue;
2229
+
2230
+ /** cell style. this may include row/column styles from the copy source */
2231
+ style?: CellStyle;
2232
+
2233
+ /** area. if this cell is part of an array, this is the array range */
2234
+ area?: IArea;
2235
+ }
2236
+ export declare type BorderConstants = "none" | "all" | "outside" | "top" | "bottom" | "left" | "right";
2237
+
2238
+ /**
2239
+ * options for the SetRange method
2240
+ */
2241
+ export interface SetRangeOptions {
2242
+
2243
+ /** transpose rectangular array before inserting */
2244
+ transpose?: boolean;
2245
+
2246
+ /** recycle values (R-style) */
2247
+ recycle?: boolean;
2248
+
2249
+ /** apply as an array (as if you pressed ctrl+shift+enter) */
2250
+ array?: boolean;
2251
+
2252
+ /** spill over */
2253
+ spill?: boolean;
2254
+
2255
+ /**
2256
+ * argument separator to use when parsing the input formula. set this
2257
+ * option to call SetRange with a consistent argument separator,
2258
+ * independent of current locale.
2259
+ */
2260
+ argument_separator?: ',' | ';';
2261
+
2262
+ /**
2263
+ * allow R1C1-style references; these can be either absolute
2264
+ * addresses (e.g. R2C4) or relative to the cell (e.g. R[-3]C[0]).
2265
+ */
2266
+ r1c1?: boolean;
2267
+ }
2268
+ export interface ExternalEditorConfig {
2269
+
2270
+ /**
2271
+ * list of dependencies to highlight. we support undefined entries in
2272
+ * this list so you can use the result of `EmbeddedSpreadsheet.Resolve`,
2273
+ * which may return undefined.
2274
+ */
2275
+ dependencies: DependencyList;
2276
+
2277
+ /**
2278
+ * this callback will be called when the selection changes in the
2279
+ * spreadsheet and this external editor is active. return an updated
2280
+ * list of dependencies to highlight.
2281
+ *
2282
+ * NOTE: this is currently synchronous, but don't rely on that. it
2283
+ * might switch to async in the future depending on how it works in
2284
+ * practice.
2285
+ */
2286
+ update: ExternalEditorCallback;
2287
+
2288
+ /**
2289
+ * a list of nodes that will serve as editors. when you attach, we will do
2290
+ * an initial pass of context highlighting. we highlight on text changes
2291
+ * and insert references if you make a selection in the spreadsheet while
2292
+ * an editor is focused.
2293
+ */
2294
+ nodes: HTMLElement[];
2295
+
2296
+ /**
2297
+ * assume that we're editing a formula. does not require leading `=`.
2298
+ * defaults to `true` for historical reasons.
2299
+ */
2300
+ assume_formula?: boolean;
2301
+ }
2302
+ export type DependencyList = Array<IArea | ICellAddress | undefined>;
2303
+ export type ExternalEditorCallback = (selection?: string) => DependencyList | undefined;
2304
+
2278
2305
  /**
2279
2306
  * options for exporting CSV/TSV
2280
2307
  */
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as esbuild from 'esbuild';
6
6
 
7
- import { SassPlugin, WorkerPlugin, NotifyPlugin, HTMLPlugin, RewriteIgnoredImports } from './esbuild-utils.mjs';
7
+ import { SassPlugin, NotifyPlugin, HTMLPlugin, CopyFilesPlugin } from './esbuild-utils.mjs';
8
8
  import { promises as fs } from 'fs';
9
9
 
10
10
  import pkg from './package.json' with { type: 'json' };
@@ -18,6 +18,7 @@ import pkg from './package.json' with { type: 'json' };
18
18
  * @property {boolean} minify - separate from dev/production, in case we need to test
19
19
  * @property {boolean} xlsx_support - import/export xlsx files
20
20
  * @property {string} output_filename - generated filename. we enforce the directory.
21
+ * @property {string} outdir - target directory
21
22
  */
22
23
 
23
24
  /**
@@ -33,6 +34,7 @@ const options = {
33
34
  verbose: false,
34
35
  xlsx_support: true,
35
36
  output_filename: 'treb-spreadsheet',
37
+ outdir: 'dist',
36
38
  };
37
39
 
38
40
  //------------------------------------------------------------------------------
@@ -65,31 +67,41 @@ for (let i = 0; i < process.argv.length; i++) {
65
67
  const build_options = {
66
68
  entryPoints: [
67
69
  { in: 'treb-embed/src/index.ts', out: options.output_filename },
68
- { in: 'treb-embed/src/export-worker.ts', out: 'treb-export-worker' },
70
+ // { in: 'treb-embed/src/export-worker.ts', out: 'treb-export-worker' },
71
+ { in: 'treb-export/src/index.worker.ts', out: 'treb-export-worker' },
69
72
  ],
70
73
  banner: {
71
74
  js: `/*! TREB v${pkg.version}. Copyright 2018-${new Date().getFullYear()} trebco, llc. All rights reserved. LGPL: https://treb.app/license */`
72
75
  },
73
76
  bundle: true,
74
- outdir: 'dist',
77
+ outdir: options.outdir,
75
78
  // outfile: 'dist/' + options.output_filename,
76
79
  outExtension: { '.js': '.mjs' },
77
80
  minify: options.minify,
81
+ splitting: true,
78
82
  metafile: true,
79
83
  format: 'esm',
84
+ external: ['*.wasm', 'node:*'],
80
85
  define: {
81
86
  'process.env.XLSX_SUPPORT': `${options.xlsx_support}`,
82
87
  'process.env.NODE_ENV': `"${options.version}"`,
83
88
  'process.env.BUILD_VERSION': `"${pkg.version}"`,
84
89
  'process.env.BUILD_NAME': `"${pkg.name}"`,
85
90
  },
86
- write: false,
91
+ write: true,
87
92
  plugins: [
88
- RewriteIgnoredImports(),
93
+ // RewriteIgnoredImports(),
89
94
  NotifyPlugin(),
90
- WorkerPlugin(options),
91
95
  HTMLPlugin(options),
92
96
  SassPlugin(options),
97
+ CopyFilesPlugin({
98
+ outdir: options.outdir,
99
+ verbose: true,
100
+ trigger: 'treb-embed/src/index.ts', // we have to piggyback on an existing file (I think? this sucks)
101
+ files: [
102
+ 'i18n/languages',
103
+ ]
104
+ }),
93
105
  ],
94
106
  };
95
107
 
package/esbuild-utils.mjs CHANGED
@@ -9,7 +9,7 @@ import { minify } from 'html-minifier-terser';
9
9
  import path from 'path';
10
10
  import * as sass from 'sass';
11
11
  import cssnano from 'cssnano';
12
- import postcss from 'postcss';
12
+ import postcss, { Result } from 'postcss';
13
13
 
14
14
  /** @type {import('html-minifier').Options} */
15
15
  const html_minifier_options = {
@@ -148,6 +148,7 @@ export const WorkerPlugin = (options) => ({
148
148
  format: 'esm',
149
149
 
150
150
  define: options?.define,
151
+ external: ['*.wasm'],
151
152
 
152
153
  // don't write to filesystem
153
154
  write: false,
@@ -300,8 +301,15 @@ export const RewriteIgnoredImports = () => {
300
301
  build.onEnd(async (result) => {
301
302
  if (result.outputFiles) {
302
303
  for (const file of result.outputFiles) {
303
- const { path, text } = file;
304
- await fs.writeFile(path, text.replace(/esbuild-ignore-import:/g, ''));
304
+
305
+ // need to ensure directory has been created already. we
306
+ // should check, rather than always create, but... also this
307
+ // plugin is going to go away soon so nbd
308
+
309
+ const dir = path.dirname(file.path);
310
+ await fs.mkdir(dir, { recursive: true });
311
+
312
+ await fs.writeFile(file.path, file.text.replace(/esbuild-ignore-import:/g, ''));
305
313
  }
306
314
  }
307
315
  });
@@ -309,3 +317,54 @@ export const RewriteIgnoredImports = () => {
309
317
  };
310
318
  };
311
319
 
320
+ /**
321
+ *
322
+ *
323
+ *
324
+ * @param {*} options
325
+ */
326
+ export const CopyFilesPlugin = (options) => {
327
+ return {
328
+ name: 'CopyFiles',
329
+ setup(build){
330
+
331
+ build.onLoad({ filter: new RegExp(options.trigger) }, async (args) => {
332
+ const source = await fs.readFile(args.path, 'utf8');
333
+
334
+ return {
335
+ contents: source,
336
+ loader: args.path.endsWith('ts') ? 'ts' : 'js',
337
+ watchFiles: options.files,
338
+ };
339
+ });
340
+
341
+ build.onEnd(async (result) => {
342
+ const outdir = options.outdir;
343
+ const promises = (options.files || []).map(file => {
344
+ const filename = path.basename(file);
345
+ const target = path.join(outdir, filename);
346
+
347
+ if (options.verbose) {
348
+ console.info('static copy', file, '->', target);
349
+ }
350
+
351
+ return fs.cp(file, target, {
352
+ recursive: true,
353
+ preserveTimestamps: true,
354
+ });
355
+ });
356
+ await Promise.all(promises);
357
+
358
+ result.watchFiles = result.watchFiles || [];
359
+ result.watchFiles.push(...options.files);
360
+
361
+ /*
362
+ return {
363
+ watchFiles: options.files,
364
+ };
365
+ */
366
+
367
+ });
368
+ }
369
+ }
370
+ };
@@ -1 +1 @@
1
- export const LanguageMap = {"language":"DA","created":"Wed, 25 Sep 2024 19:20:21 GMT","version":"2.1.3","functions":[{"base":"ACOS","name":"ARCCOS"},{"base":"ACOSH","name":"ARCCOSH"},{"base":"ADDRESS","name":"ADRESSE","arguments":["række","kolonne","absolut","a1","arknavn"]},{"base":"AND","name":"OG"},{"base":"ARG","name":"ARG","description":"Returnerer hovedargumentet for et komplekst tal (i radianer)"},{"base":"ASIN","name":"ARCSIN"},{"base":"ASINH","name":"ARCSINH"},{"base":"ATAN","name":"ARCTAN"},{"base":"ATAN2","name":"ARCTAN2"},{"base":"ATANH","name":"ARCTANH"},{"base":"AVERAGE","name":"MIDDEL","description":"Returnerer det aritmetiske gennemsnit af alle numeriske argumenter"},{"base":"AVERAGEIF","name":"MIDDEL.HVIS","arguments":["område","kriterier"]},{"base":"AVERAGEIFS","name":"MIDDEL.HVISER","arguments":["værdiområde","kriterieområde","kriterier","kriterieområde","kriterier"]},{"base":"BETA.DIST","name":"BETA.FORDELING","description":"Beta-fordeling","arguments":["x","a","b","kumulativ"]},{"base":"BETA.INV","name":"BETA.INV","description":"Invers af beta-fordelingen","arguments":["sandsynlighed","a","b"]},{"base":"CEILING","name":"AFRUND.LOFT"},{"base":"CELL","name":"CELLE","description":"Returnerer data om en celle","arguments":["type","reference"]},{"base":"CHAR","name":"CHAR","arguments":["tal"]},{"base":"CHECKBOX","name":"CHECKBOX","arguments":["markeret"]},{"base":"CHOOSE","name":"VÆLG","description":"Returnerer et af en liste af valg","arguments":["Valgt indeks","Valg 1..."]},{"base":"CODE","name":"KODE","arguments":["streng"]},{"base":"COLUMN","name":"KOLONNE","arguments":["reference"]},{"base":"COLUMNS","name":"KOLONNER","arguments":["reference"]},{"base":"COMPLEX","name":"KOMPLEKS","description":"Sikrer at den givne værdi behandles som et komplekst tal"},{"base":"COMPLEXLOG","name":"COMPLEXLOG","description":"Returnerer hovedværdien Log(z) af et komplekst tal z"},{"base":"CONCAT","name":"CONCAT","description":"Sætter strenge sammen"},{"base":"CONCATENATE","name":"SAMMENKÆDNING","description":"Sætter strenge sammen"},{"base":"CONJUGATE","name":"CONJUGATE","description":"Returnerer konjugatet af et komplekst tal"},{"base":"CORREL","name":"KORRELATION","description":"Returnerer korrelationen mellem to værdiområder","arguments":["A","B"]},{"base":"COS","name":"COS","arguments":["vinkel i radianer"]},{"base":"COSH","name":"COSH","arguments":["tal"]},{"base":"COUNT","name":"TÆL","description":"Tæller celler der indeholder tal"},{"base":"COUNTA","name":"TÆLV","description":"Tæller celler der ikke er tomme"},{"base":"COUNTIF","name":"TÆL.HVIS","arguments":["område","kriterier"]},{"base":"COUNTIFS","name":"TÆL.HVISER","arguments":["område","kriterier","område","kriterier"]},{"base":"COVAR","name":"KOVARIANS","description":"Returnerer kovariansen mellem to værdiområder","arguments":["A","B"]},{"base":"CUMIPMT","name":"AKKUM.RENTE","description":"Returnerer den akkumulerede rente betalt på et lån mellem to perioder","arguments":["Rente","Perioder","Nutidsværdi","Startperiode","Slutperiode","Type"]},{"base":"CUMPRINC","name":"AKKUM.HOVEDSTOL","description":"Returnerer den akkumulerede hovedstol betalt på et lån mellem to perioder","arguments":["Rente","Perioder","Nutidsværdi","Startperiode","Slutperiode","Type"]},{"base":"DATE","name":"DATO","description":"Konstruerer en dato fra år/måned/dag","arguments":["år","måned","dag"]},{"base":"DAY","name":"DAG","description":"Returnerer dag i måneden fra en dato","arguments":["dato"]},{"base":"DEGREES","name":"GRADER","description":"Konverterer radianer til grader","arguments":["Radianer"]},{"base":"DELTA","name":"DELTA","arguments":["tal","tal"]},{"base":"EDATE","name":"EDATO","arguments":["Startdato","Måneder"]},{"base":"EOMONTH","name":"SLUT.PÅ.MÅNED","arguments":["Startdato","Måneder"]},{"base":"ERF","name":"FEJLFUNK"},{"base":"EXACT","name":"EKSAKT","arguments":["tekst","tekst"]},{"base":"EXP","name":"EKSP"},{"base":"FACT","name":"FAKULTET","description":"Returnerer fakultetet af et tal","arguments":["tal"]},{"base":"FILTER","name":"FILTER","description":"Filtrerer et array ved hjælp af et andet array","arguments":["kilde","filter"]},{"base":"FIND","name":"FIND","description":"Find en streng (nål) i en anden streng (høstak). Skelner mellem store og små bogstaver","arguments":["Nål","Høstak","Start"]},{"base":"FLOOR","name":"AFRUND.GULV"},{"base":"FORMULATEXT","name":"FORMELTEKST","description":"Returnerer en formel som en streng","arguments":["reference"]},{"base":"FV","name":"FV","description":"Returnerer fremtidsværdien af en investering","arguments":["Rente","Perioder","Betaling","Nutidsværdi","Type"]},{"base":"GAMMA","name":"GAMMA","description":"Returnerer gammafunktionen for den givne værdi","arguments":["værdi"]},{"base":"GAMMALN","name":"GAMMALN","description":"Returnerer den naturlige logaritme af gammafunktionen","arguments":["værdi"]},{"base":"GAMMALN.PRECISE","name":"GAMMALN.PRECISE","description":"Returnerer den naturlige logaritme af gammafunktionen","arguments":["værdi"]},{"base":"GCD","name":"STØRSTE.FÆLLES.DIVISOR","description":"Finder den største fælles divisor af argumenterne"},{"base":"GEOMEAN","name":"GEOMIDDELVÆRDI","description":"Returnerer det geometriske gennemsnit af alle numeriske argumenter"},{"base":"HARMEAN","name":"HARMIDDELVÆRDI","description":"Returnerer det harmoniske gennemsnit af argumenterne"},{"base":"HLOOKUP","name":"VOPSLAG","arguments":["Opslagsværdi","Tabel","Resultatindeks","Unøjagtig"]},{"base":"IF","name":"HVIS","arguments":["testværdi","værdi hvis sand","værdi hvis falsk"]},{"base":"IFERROR","name":"HVIS.FEJL","description":"Returnerer den oprindelige værdi eller den alternative værdi hvis den oprindelige værdi indeholder en fejl","arguments":["oprindelig værdi","alternativ værdi"]},{"base":"IMAGINARY","name":"IMAGINÆR","description":"Returnerer den imaginære del af et komplekst tal (som reelt tal)"},{"base":"INDEX","name":"INDEKS","arguments":["område","række","kolonne"]},{"base":"INDIRECT","name":"INDIREKTE","arguments":["reference"]},{"base":"INT","name":"HELTAL"},{"base":"INTERCEPT","name":"SKÆRING","arguments":["kendt_y","kendt_x"]},{"base":"IPMT","name":"R.YDELSE","description":"Returnerer rentedelen af en betaling","arguments":["Rente","Periode","Perioder","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"IRR","name":"IA","description":"Beregner den interne rente af en række pengestrømme","arguments":["Pengestrømme","Gæt"]},{"base":"ISBLANK","name":"ER.TOM","description":"Returnerer sand hvis referencen er tom","arguments":["Reference"]},{"base":"ISCOMPLEX","name":"ISCOMPLEX","description":"Returnerer sand hvis referencen er et komplekst tal","arguments":["Reference"]},{"base":"ISERR","name":"ER.FE","description":"Kontrollerer om en anden celle indeholder en fejl","arguments":["reference"]},{"base":"ISERROR","name":"ER.FEJL","description":"Kontrollerer om en anden celle indeholder en fejl","arguments":["reference"]},{"base":"ISFORMULA","name":"ER.FORMEL","description":"Returnerer sand hvis referencen er en formel","arguments":["Reference"]},{"base":"ISLOGICAL","name":"ER.LOGISK","description":"Returnerer sand hvis referencen er en logisk SAND eller FALSK","arguments":["Reference"]},{"base":"ISNA","name":"ER.IKKE.TILGÆNGELIG","description":"Kontrollerer om en anden celle indeholder en #I/T-fejl","arguments":["reference"]},{"base":"ISNUMBER","name":"ER.TAL","description":"Returnerer sand hvis referencen er et tal","arguments":["Reference"]},{"base":"ISTEXT","name":"ER.TEKST","description":"Returnerer sand hvis referencen er tekst","arguments":["Reference"]},{"base":"LARGE","name":"STØRSTE","description":"Returnerer den n'te numeriske værdi fra dataene i faldende rækkefølge","arguments":["værdier","indeks"]},{"base":"LCM","name":"MINDSTE.FÆLLES.MULTIPLUM","description":"Returnerer det mindste fælles multiplum af argumenterne"},{"base":"LEFT","name":"VENSTRE","arguments":["streng","antal"]},{"base":"LEN","name":"LÆNGDE","arguments":["streng"]},{"base":"LOWER","name":"/","description":"Konverterer tekst til små bogstaver","arguments":["tekst"]},{"base":"MATCH","name":"SAMMENLIGN","arguments":["værdi","område","type"]},{"base":"MAX","name":"MAKS"},{"base":"MDETERM","name":"MDETERM","description":"Returnerer determinanten af en matrix","arguments":["matrix"]},{"base":"MEAN","name":"MEAN","description":"Returnerer det aritmetiske gennemsnit af alle numeriske argumenter"},{"base":"MEDIAN","name":"MEDIAN","description":"Returnerer medianværdien af dataområdet","arguments":["område"]},{"base":"MID","name":"MIDT","arguments":["streng","venstre","antal"]},{"base":"MINVERSE","name":"MINVERT","description":"Returnerer den inverse matrix","arguments":["matrix"]},{"base":"MMULT","name":"MPRODUKT","description":"Returnerer prikproduktet A ⋅ B","arguments":["A","B"]},{"base":"MOD","name":"REST"},{"base":"MONTH","name":"MÅNED","description":"Returnerer måned fra dato","arguments":["dato"]},{"base":"NORM.DIST","name":"NORMAL.FORDELING","description":"Kumulativ normalfordeling","arguments":["værdi","middelværdi","standardafvigelse","kumulativ"]},{"base":"NORM.INV","name":"NORM.INV","description":"Invers af den kumulative normalfordeling","arguments":["sandsynlighed","middelværdi","standardafvigelse"]},{"base":"NORM.S.DIST","name":"STANDARD.NORM.FORDELING","description":"Kumulativ standardnormalfordeling","arguments":["værdi","kumulativ"]},{"base":"NORM.S.INV","name":"STANDARD.NORM.INV","description":"Invers af den kumulative standardnormalfordeling","arguments":["sandsynlighed"]},{"base":"NORMSDIST","name":"STANDARDNORMFORDELING","description":"Kumulativ normalfordeling","arguments":["værdi","kumulativ"]},{"base":"NORMSINV","name":"STANDARDNORMINV","description":"Invers af den kumulative standardnormalfordeling","arguments":["sandsynlighed"]},{"base":"NOT","name":"IKKE"},{"base":"NOW","name":"NU","description":"Returnerer aktuel tid"},{"base":"NPER","name":"NPER","description":"Returnerer antallet af perioder for en investering","arguments":["Rente","Betaling","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"NPV","name":"NUTIDSVÆRDI","description":"Returnerer nutidsværdien af en række fremtidige pengestrømme","arguments":["Rente","Pengestrøm"]},{"base":"OFFSET","name":"FORSKYDNING","arguments":["reference","rækker","kolonner","højde","bredde"]},{"base":"OR","name":"ELLER"},{"base":"PERCENTILE","name":"FRAKTIL","description":"Returnerer den k'te fraktilværdi fra dataområdet","arguments":["område","fraktil"]},{"base":"PHI","name":"PHI","arguments":["x"]},{"base":"PMT","name":"YDELSE","description":"Returnerer den periodiske betaling af et lån","arguments":["Rente","Perioder","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"POWER","name":"POTENS","description":"Returnerer grundtallet opløftet til den givne potens","arguments":["grundtal","eksponent"]},{"base":"PPMT","name":"H.YDELSE","description":"Returnerer hovedstolsdelen af en betaling","arguments":["Rente","Periode","Perioder","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"PRODUCT","name":"PRODUKT"},{"base":"PV","name":"NV","description":"Returnerer nutidsværdien af en investering","arguments":["Rente","Perioder","Betaling","Fremtidsværdi","Type"]},{"base":"QUARTILE","name":"KVARTIL","description":"Returnerer den interpolerede kvartil af datasættet (inklusive median)","arguments":["område","kvartil"]},{"base":"QUARTILE.EXC","name":"KVARTIL.UDELAD","description":"Returnerer den interpolerede kvartil af datasættet (eksklusive median)","arguments":["område","kvartil"]},{"base":"QUARTILE.INC","name":"KVARTIL.MEDTAG","description":"Returnerer den interpolerede kvartil af datasættet (inklusive median)","arguments":["område","kvartil"]},{"base":"RADIANS","name":"RADIANER","description":"Konverterer grader til radianer","arguments":["Grader"]},{"base":"RAND","name":"SLUMP"},{"base":"RANDBETWEEN","name":"SLUMPMELLEM","arguments":["min","maks"]},{"base":"RANK","name":"PLADS","arguments":["Værdi","Kilde","Rækkefølge"]},{"base":"RATE","name":"RENTE","description":"Returnerer renten for et lån","arguments":["Perioder","Betaling","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"REAL","name":"REAL","description":"Returnerer den reelle del af et komplekst tal"},{"base":"RECTANGULAR","name":"RECTANGULAR","description":"Konverterer et komplekst tal i polær form til rektangulær form","arguments":["r","θ i radianer"]},{"base":"REGEXEXTRACT","name":"REGEXEXTRACT","description":"Udtræk tekst ved hjælp af et regulært udtryk","arguments":["tekst","mønster","returneringstilstand","ikke-versalfølsom"]},{"base":"REGEXREPLACE","name":"REGEXREPLACE","description":"Erstat tekst i en streng ved hjælp af et regulært udtryk","arguments":["tekst","mønster","erstatning","forekomst","ikke-versalfølsom"]},{"base":"REGEXTEST","name":"REGEXTEST","description":"Match tekst mod et regulært udtryk","arguments":["tekst","mønster","ikke-versalfølsom"]},{"base":"RIGHT","name":"HØJRE","arguments":["streng","antal"]},{"base":"ROUND","name":"AFRUND"},{"base":"ROUNDDOWN","name":"RUND.NED"},{"base":"ROUNDUP","name":"RUND.OP"},{"base":"ROW","name":"RÆKKE","arguments":["reference"]},{"base":"ROWS","name":"RÆKKER","arguments":["reference"]},{"base":"SEARCH","name":"SØG","description":"Find en streng (nål) i en anden streng (høstak). Ikke-versalfølsom","arguments":["Nål","Høstak","Start"]},{"base":"SEQUENCE","name":"SEQUENCE","arguments":["rækker","kolonner","start","trin"]},{"base":"SIGN","name":"FORTEGN"},{"base":"SIMPLIFY","name":"SIMPLIFY","arguments":["værdi","signifikante cifre"]},{"base":"SIN","name":"SIN","arguments":["vinkel i radianer"]},{"base":"SINH","name":"SINH","arguments":["tal"]},{"base":"SLOPE","name":"STIGNING","arguments":["kendt_y","kendt_x"]},{"base":"SMALL","name":"MINDSTE","description":"Returnerer den n'te numeriske værdi fra dataene i stigende rækkefølge","arguments":["værdier","indeks"]},{"base":"SORT","name":"SORT","arguments":["værdier"]},{"base":"SPARKLINE.COLUMN","name":"SPARKLINE.COLUMN","arguments":["data","farve","negativ farve"]},{"base":"SPARKLINE.LINE","name":"SPARKLINE.LINE","arguments":["data","farve","linjebredde"]},{"base":"SQRT","name":"KVROD","description":"Returnerer kvadratroden af argumentet"},{"base":"STDEV","name":"STDAFV","description":"Returnerer standardafvigelsen af et sæt værdier svarende til en stikprøve af en population","arguments":["data"]},{"base":"STDEV.P","name":"STDAFV.P","description":"Returnerer standardafvigelsen af et sæt værdier svarende til en population","arguments":["data"]},{"base":"STDEV.S","name":"STDAFV.S","description":"Returnerer standardafvigelsen af et sæt værdier svarende til en stikprøve af en population","arguments":["data"]},{"base":"STDEVA","name":"STDAFVV","description":"Returnerer standardafvigelsen af et sæt værdier svarende til en stikprøve af en population","arguments":["data"]},{"base":"STDEVPA","name":"STDAFVPV","description":"Returnerer standardafvigelsen af et sæt værdier svarende til en population","arguments":["data"]},{"base":"SUBSTITUTE","name":"UDSKIFT","arguments":["tekst","søg","erstatning","indeks"]},{"base":"SUBTOTAL","name":"SUBTOTAL","arguments":["type","område"]},{"base":"SUM","name":"SUM","description":"Lægger argumenter og områder sammen","arguments":["værdier eller områder"]},{"base":"SUMIF","name":"SUM.HVIS","arguments":["område","kriterier"]},{"base":"SUMIFS","name":"SUM.HVISER","arguments":["værdiområde","kriterieområde","kriterier","kriterieområde","kriterier"]},{"base":"SUMPRODUCT","name":"SUMPRODUKT","description":"Returnerer summen af parvise produkter af to eller flere områder"},{"base":"SUMSQ","name":"SUMKV","description":"Returnerer summen af kvadraterne af alle argumenter","arguments":["værdier eller områder"]},{"base":"TAN","name":"TAN","arguments":["vinkel i radianer"]},{"base":"TANH","name":"TANH","arguments":["tal"]},{"base":"TEXT","name":"TEKST","arguments":["værdi","talformat"]},{"base":"TODAY","name":"IDAG","description":"Returnerer aktuel dag"},{"base":"TRANSPOSE","name":"TRANSPONER","description":"Returnerer transponeret af inputmatrix","arguments":["matrix"]},{"base":"TRUNC","name":"AFKORT"},{"base":"UPPER","name":"STORE.BOGSTAVER","description":"Konverterer tekst til store bogstaver","arguments":["tekst"]},{"base":"VALUE","name":"VÆRDI","arguments":["tekst"]},{"base":"VAR","name":"VARIANS","description":"Returnerer variansen af et sæt værdier svarende til en stikprøve af en population","arguments":["data"]},{"base":"VAR.P","name":"VARIANS.P","description":"Returnerer variansen af et sæt værdier svarende til en population","arguments":["data"]},{"base":"VAR.S","name":"VARIANS.S","description":"Returnerer variansen af et sæt værdier svarende til en stikprøve af en population","arguments":["data"]},{"base":"VLOOKUP","name":"LOPSLAG","arguments":["Opslagsværdi","Tabel","Resultatindeks","Unøjagtig"]},{"base":"XIRR","name":"INTERN.RENTE","description":"Returnerer den interne rente for en ikke-periodisk strøm af betalinger","arguments":["Værdier","Datoer","Gæt"]},{"base":"XLOOKUP","name":"XOPSLAG","arguments":["Opslagsværdi","Opslagsarray","Returarray","Ikke fundet","Matchtilstand","Søgetilstand"]},{"base":"XNPV","name":"NETTO.NUTIDSVÆRDI","description":"Returnerer NPV for en ikke-periodisk strøm af betalinger ved en given rente","arguments":["Diskonteringsrente","Værdier","Datoer"]},{"base":"YEAR","name":"ÅR","description":"Returnerer år fra dato","arguments":["dato"]},{"base":"YEARFRAC","name":"ÅR.BRØK","description":"Returnerer brøkdelen af et år mellem to datoer","arguments":["Start","Slut","Basis"]},{"base":"Z.TEST","name":"Z.TEST","arguments":["Array","x","Sigma"]}]};
1
+ export const LanguageMap = {"language":"DA","created":"Wed, 23 Jul 2025 17:51:29 GMT","version":"2.1.5","functions":[{"base":"ACOS","name":"ARCCOS","arguments":["tal"]},{"base":"ACOSH","name":"ARCCOSH"},{"base":"ADDRESS","name":"ADRESSE","arguments":["række","kolonne","absolut","a1","arknavne"]},{"base":"AND","name":"OG"},{"base":"ARG","name":"ARG","description":"Returnerer hovedargumentet for et komplekst tal (i radianer)"},{"base":"ASIN","name":"ARCSIN","arguments":["tal"]},{"base":"ASINH","name":"ARCSINH"},{"base":"ATAN","name":"ARCTAN","arguments":["tal"]},{"base":"ATAN2","name":"ARCTAN2","arguments":["y","x"]},{"base":"ATANH","name":"ARCTANH"},{"base":"AVERAGE","name":"MIDDEL","description":"Returnerer det aritmetiske gennemsnit af alle numeriske argumenter"},{"base":"AVERAGEIF","name":"MIDDEL.HVIS","arguments":["område","kriterier"]},{"base":"AVERAGEIFS","name":"MIDDEL.HVISER","arguments":["værdiområde","kriterieområde","kriterier","kriterieområde","kriterier"]},{"base":"BETA.DIST","name":"BETA.FORDELING","description":"beta fordeling","arguments":["x","a","b","kumulativ"]},{"base":"BETA.INV","name":"BETA.INV","description":"Invers af beta fordelingen","arguments":["sandsynlighed","a","b"]},{"base":"BYCOL","name":"BYCOL","description":"Anvend en funktion på hver kolonne i et array","arguments":["data","lambda"]},{"base":"BYROW","name":"BYROW","description":"Anvend en funktion på hver række i et array","arguments":["data","lambda"]},{"base":"CEILING","name":"AFRUND.LOFT","arguments":["tal","betydning"]},{"base":"CEILING.MATH","name":"LOFT.MAT","arguments":["tal","betydning","væk fra nul"]},{"base":"CELL","name":"CELLE","description":"Returnerer data om en celle","arguments":["type","reference"]},{"base":"CHAR","name":"CHAR","arguments":["tal"]},{"base":"CHECKBOX","name":"CHECKBOX","arguments":["markeret"]},{"base":"CHOOSE","name":"VÆLG","description":"Returnerer et af en liste af valg","arguments":["Valgt indeks","Valg 1..."]},{"base":"CODE","name":"KODE","arguments":["streng"]},{"base":"COLUMN","name":"KOLONNE","arguments":["reference"]},{"base":"COLUMNS","name":"KOLONNER","arguments":["reference"]},{"base":"COMPLEX","name":"KOMPLEKS","description":"Sikrer at den givne værdi behandles som et komplekst tal"},{"base":"COMPLEXLOG","name":"COMPLEXLOG","description":"Returnerer hovedværdien Log(z) af et komplekst tal z"},{"base":"CONCAT","name":"CONCAT","description":"Sætter strenge sammen"},{"base":"CONCATENATE","name":"SAMMENKÆDNING","description":"Sætter strenge sammen"},{"base":"CONJUGATE","name":"CONJUGATE","description":"Returnerer konjugatet af et komplekst tal"},{"base":"CORREL","name":"KORRELATION","description":"Returnerer korrelationen mellem to værdiområder","arguments":["A","B"]},{"base":"COS","name":"COS","arguments":["tal"]},{"base":"COSH","name":"COSH","arguments":["tal"]},{"base":"COUNT","name":"TÆL","description":"Tæller celler der indeholder tal"},{"base":"COUNTA","name":"TÆLV","description":"Tæller celler der ikke er tomme"},{"base":"COUNTIF","name":"TÆL.HVIS","arguments":["område","kriterier"]},{"base":"COUNTIFS","name":"TÆL.HVISER","arguments":["område","kriterier","område","kriterier"]},{"base":"COVAR","name":"KOVARIANS","description":"Returnerer kovariansen mellem to værdiområder","arguments":["A","B"]},{"base":"CUMIPMT","name":"AKKUM.RENTE","description":"Returnerer akkumulerede renter betalt på et lån mellem to perioder","arguments":["Rente","Perioder","Nutidsværdi","Start Periode","Slut Periode","Type"]},{"base":"CUMPRINC","name":"AKKUM.HOVEDSTOL","description":"Returnerer akkumuleret hovedstol betalt på et lån mellem to perioder","arguments":["Rente","Perioder","Nutidsværdi","Start Periode","Slut Periode","Type"]},{"base":"DATE","name":"DATO","description":"Konstruerer en dato fra år/måned/dag","arguments":["år","måned","dag"]},{"base":"DAY","name":"DAG","description":"Returnerer dag i måneden fra dato","arguments":["dato"]},{"base":"DEGREES","name":"GRADER","description":"Konverterer radianer til grader","arguments":["Radianer"]},{"base":"DELTA","name":"DELTA","arguments":["tal","tal"]},{"base":"EDATE","name":"EDATO","arguments":["Startdato","Måneder"]},{"base":"EOMONTH","name":"SLUT.PÅ.MÅNED","arguments":["Startdato","Måneder"]},{"base":"ERF","name":"FEJLFUNK"},{"base":"EXACT","name":"EKSAKT","arguments":["tekst","tekst"]},{"base":"EXP","name":"EKSP"},{"base":"FACT","name":"FAKULTET","description":"Returnerer fakultetet af et tal","arguments":["tal"]},{"base":"FACTDOUBLE","name":"DOBBELT.FAKULTET","description":"Returnerer det dobbelte fakultet af et tal","arguments":["tal"]},{"base":"FILTER","name":"FILTER","description":"Filtrer et array ved hjælp af et andet array","arguments":["kilde","filter"]},{"base":"FIND","name":"FIND","description":"Find en streng (nål) i en anden streng (høstak). Forskel på store/små bogstaver.","arguments":["Nål","Høstak","Start"]},{"base":"FLOOR","name":"AFRUND.GULV","arguments":["tal","betydning"]},{"base":"FLOOR.MATH","name":"AFRUND.BUND.MAT","arguments":["tal","betydning","væk fra nul"]},{"base":"FORMULATEXT","name":"FORMELTEKST","description":"Returnerer en formel som en streng","arguments":["reference"]},{"base":"FV","name":"FV","description":"Returnerer fremtidsværdien af en investering","arguments":["Rente","Perioder","Betaling","Nutidsværdi","Type"]},{"base":"GAMMA","name":"GAMMA","description":"Returnerer gamma funktionen for den givne værdi","arguments":["værdi"]},{"base":"GAMMA.DIST","name":"GAMMA.FORDELING"},{"base":"GAMMA.INV","name":"GAMMA.INV","description":"Returnerer inversen af gamma fordelingen","arguments":["sandsynlighed","alpha","beta"]},{"base":"GAMMALN","name":"GAMMALN","description":"Returnerer den naturlige logaritme af gamma funktionen","arguments":["værdi"]},{"base":"GAMMALN.PRECISE","name":"GAMMALN.PRECISE","description":"Returnerer den naturlige logaritme af gamma funktionen","arguments":["værdi"]},{"base":"GCD","name":"STØRSTE.FÆLLES.DIVISOR","description":"Finder den største fælles divisor af argumenterne"},{"base":"GEOMEAN","name":"GEOMIDDELVÆRDI","description":"Returnerer det geometriske gennemsnit af alle numeriske argumenter"},{"base":"HARMEAN","name":"HARMIDDELVÆRDI","description":"Returnerer det harmoniske gennemsnit af argumenterne"},{"base":"HLOOKUP","name":"VOPSLAG","arguments":["Opslagsværdi","Tabel","Resultat indeks","Unøjagtig"]},{"base":"IF","name":"HVIS","arguments":["testværdi","værdi hvis sand","værdi hvis falsk"]},{"base":"IFERROR","name":"HVIS.FEJL","description":"Returnerer den oprindelige værdi, eller den alternative værdi hvis den oprindelige værdi indeholder en fejl","arguments":["oprindelig værdi","alternativ værdi"]},{"base":"IMAGINARY","name":"IMAGINÆR","description":"Returnerer den imaginære del af et komplekst tal (som reel)"},{"base":"INDEX","name":"INDEKS","arguments":["område","række","kolonne"]},{"base":"INDIRECT","name":"INDIREKTE","arguments":["reference"]},{"base":"INT","name":"HELTAL"},{"base":"INTERCEPT","name":"SKÆRING","arguments":["kendt_y","kendt_x"]},{"base":"IPMT","name":"R.YDELSE","description":"Returnerer rentedelen af en betaling","arguments":["Rente","Periode","Perioder","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"IRR","name":"IA","description":"Beregner den interne rente af en serie pengestrømme","arguments":["Pengestrømme","Gæt"]},{"base":"ISBLANK","name":"ER.TOM","description":"Returnerer sand hvis referencen er tom","arguments":["Reference"]},{"base":"ISCOMPLEX","name":"ISCOMPLEX","description":"Returnerer sand hvis referencen er et komplekst tal","arguments":["Reference"]},{"base":"ISERR","name":"ER.FE","description":"Kontrollerer om en anden celle indeholder en fejl","arguments":["reference"]},{"base":"ISERROR","name":"ER.FEJL","description":"Kontrollerer om en anden celle indeholder en fejl","arguments":["reference"]},{"base":"ISFORMULA","name":"ER.FORMEL","description":"Returnerer sand hvis referencen er en formel","arguments":["Reference"]},{"base":"ISLOGICAL","name":"ER.LOGISK","description":"Returnerer sand hvis referencen er en logisk SAND eller FALSK","arguments":["Reference"]},{"base":"ISNA","name":"ER.IKKE.TILGÆNGELIG","description":"Kontrollerer om en anden celle indeholder en #I/T fejl","arguments":["reference"]},{"base":"ISNUMBER","name":"ER.TAL","description":"Returnerer sand hvis referencen er et tal","arguments":["Reference"]},{"base":"ISTEXT","name":"ER.TEKST","description":"Returnerer sand hvis referencen er tekst","arguments":["Reference"]},{"base":"LAMBDA","name":"LAMBDA","description":"Opretter en funktion","arguments":["Argument","Funktion"]},{"base":"LARGE","name":"STØRSTE","description":"Returnerer den n'te numeriske værdi fra dataene, i faldende rækkefølge","arguments":["værdier","indeks"]},{"base":"LCM","name":"MINDSTE.FÆLLES.MULTIPLUM","description":"Returnerer det mindste fælles multiplum af argumenterne"},{"base":"LEFT","name":"VENSTRE","arguments":["streng","antal"]},{"base":"LEN","name":"LÆNGDE","arguments":["streng"]},{"base":"LET","name":"LET","description":"Binder værdier til navne for en beregning","arguments":["Navn","Værdi","Beregning"]},{"base":"LN","name":"LN","arguments":["tal"]},{"base":"LOG","name":"LOG","arguments":["tal","base"]},{"base":"LOG10","name":"LOG10","arguments":["tal"]},{"base":"LOWER","name":"/","description":"Konverterer tekst til små bogstaver","arguments":["tekst"]},{"base":"MAKEARRAY","name":"MAKEARRAY","description":"Opret et array ved hjælp af en funktion","arguments":["rækker","kolonner","lambda"]},{"base":"MAP","name":"MAP","description":"Anvend en funktion på et sæt værdier","arguments":["data","lambda"]},{"base":"MATCH","name":"SAMMENLIGN","arguments":["værdi","område","type"]},{"base":"MAX","name":"MAKS"},{"base":"MDETERM","name":"MDETERM","description":"Returnerer determinanten af en matrix","arguments":["matrix"]},{"base":"MEAN","name":"MEAN","description":"Returnerer det aritmetiske gennemsnit af alle numeriske argumenter"},{"base":"MEDIAN","name":"MEDIAN","description":"Returnerer medianværdien af dataområdet","arguments":["område"]},{"base":"MID","name":"MIDT","arguments":["streng","venstre","antal"]},{"base":"MINVERSE","name":"MINVERT","description":"Returnerer den inverse matrix","arguments":["matrix"]},{"base":"MMULT","name":"MPRODUKT","description":"Returnerer prikproduktet A ⋅ B","arguments":["A","B"]},{"base":"MOD","name":"REST"},{"base":"MONTH","name":"MÅNED","description":"Returnerer måned fra dato","arguments":["dato"]},{"base":"NORM.DIST","name":"NORMAL.FORDELING","description":"Kumulativ normal fordeling","arguments":["værdi","gennemsnit","standardafvigelse","kumulativ"]},{"base":"NORM.INV","name":"NORM.INV","description":"Invers af den normale kumulative fordeling","arguments":["sandsynlighed","gennemsnit","standardafvigelse"]},{"base":"NORM.S.DIST","name":"STANDARD.NORM.FORDELING","description":"Kumulativ normal fordeling","arguments":["værdi","kumulativ"]},{"base":"NORM.S.INV","name":"STANDARD.NORM.INV","description":"Invers af den standard normale kumulative fordeling","arguments":["sandsynlighed"]},{"base":"NORMDIST","name":"NORMFORDELING","description":"Kumulativ normal fordeling","arguments":["værdi","gennemsnit","standardafvigelse","kumulativ"]},{"base":"NORMSDIST","name":"STANDARDNORMFORDELING","description":"Kumulativ normal fordeling","arguments":["værdi","kumulativ"]},{"base":"NORMSINV","name":"STANDARDNORMINV","description":"Invers af den standard normale kumulative fordeling","arguments":["sandsynlighed"]},{"base":"NOT","name":"IKKE"},{"base":"NOW","name":"NU","description":"Returnerer nuværende tid"},{"base":"NPER","name":"NPER","description":"Returnerer antallet af perioder for en investering","arguments":["Rente","Betaling","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"NPV","name":"NUTIDSVÆRDI","description":"Returnerer nutidsværdien af en serie fremtidige pengestrømme","arguments":["Rente","Pengestrøm"]},{"base":"OFFSET","name":"FORSKYDNING","arguments":["reference","rækker","kolonner","højde","bredde"]},{"base":"OR","name":"ELLER"},{"base":"PERCENTILE","name":"FRAKTIL","description":"Returnerer den k'te fraktilværdi fra dataområdet","arguments":["område","fraktil"]},{"base":"PHI","name":"PHI","arguments":["x"]},{"base":"PMT","name":"YDELSE","description":"Returnerer den periodiske betaling af et lån","arguments":["Rente","Perioder","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"POWER","name":"POTENS","description":"Returnerer base opløftet til den givne potens","arguments":["base","eksponent"]},{"base":"PPMT","name":"H.YDELSE","description":"Returnerer hovedstolsdelen af en betaling","arguments":["Rente","Periode","Perioder","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"PRODUCT","name":"PRODUKT"},{"base":"PV","name":"NV","description":"Returnerer nutidsværdien af en investering","arguments":["Rente","Perioder","Betaling","Fremtidsværdi","Type"]},{"base":"QUARTILE","name":"KVARTIL","description":"Returnerer det interpolerede kvartil af datasættet (inklusive median)","arguments":["område","kvartil"]},{"base":"QUARTILE.EXC","name":"KVARTIL.UDELAD","description":"Returnerer det interpolerede kvartil af datasættet (eksklusive median)","arguments":["område","kvartil"]},{"base":"QUARTILE.INC","name":"KVARTIL.MEDTAG","description":"Returnerer det interpolerede kvartil af datasættet (inklusive median)","arguments":["område","kvartil"]},{"base":"RADIANS","name":"RADIANER","description":"Konverterer grader til radianer","arguments":["Grader"]},{"base":"RAND","name":"SLUMP"},{"base":"RANDARRAY","name":"RANDARRAY","description":"Returnerer et array af uniformt fordelte tilfældige tal","arguments":["rækker","kolonner","min","maks","heltal"]},{"base":"RANDBETWEEN","name":"SLUMPMELLEM","arguments":["min","maks"]},{"base":"RANK","name":"PLADS","arguments":["Værdi","Kilde","Rækkefølge"]},{"base":"RATE","name":"RENTE","description":"Returnerer renten på et lån","arguments":["Perioder","Betaling","Nutidsværdi","Fremtidsværdi","Type"]},{"base":"REAL","name":"REAL","description":"Returnerer den reelle del af et komplekst tal"},{"base":"RECTANGULAR","name":"RECTANGULAR","description":"Konverterer et komplekst tal i polær form til rektangulær form","arguments":["r","θ i radianer"]},{"base":"REDUCE","name":"REDUCE","description":"Akkumulerer en værdi ved at anvende en funktion på et sæt værdier","arguments":["startværdi","data","lambda"]},{"base":"REGEXEXTRACT","name":"REGEXEXTRACT","description":"Udtræk tekst ved hjælp af et regulært udtryk","arguments":["tekst","mønster","returmodus","ikke forskel på store/små bogstaver"]},{"base":"REGEXREPLACE","name":"REGEXREPLACE","description":"Erstat tekst i en streng ved hjælp af regex","arguments":["tekst","mønster","erstatning","forekomst","ikke forskel på store/små bogstaver"]},{"base":"REGEXTEST","name":"REGEXTEST","description":"Match tekst mod et regulært udtryk","arguments":["tekst","mønster","ikke forskel på store/små bogstaver"]},{"base":"RIGHT","name":"HØJRE","arguments":["streng","antal"]},{"base":"ROUND","name":"AFRUND"},{"base":"ROUNDDOWN","name":"RUND.NED"},{"base":"ROUNDUP","name":"RUND.OP"},{"base":"ROW","name":"RÆKKE","arguments":["reference"]},{"base":"ROWS","name":"RÆKKER","arguments":["reference"]},{"base":"SCAN","name":"SCAN","description":"Anvender en funktion på et sæt værdier, iterativt","arguments":["startværdi","data","lambda"]},{"base":"SEARCH","name":"SØG","description":"Find en streng (nål) i en anden streng (høstak). Ikke forskel på store/små bogstaver.","arguments":["Nål","Høstak","Start"]},{"base":"SEQUENCE","name":"SEQUENCE","arguments":["rækker","kolonner","start","trin"]},{"base":"SIGN","name":"FORTEGN"},{"base":"SIMPLIFY","name":"SIMPLIFY","arguments":["værdi","signifikante cifre"]},{"base":"SIN","name":"SIN","arguments":["tal"]},{"base":"SINH","name":"SINH","arguments":["tal"]},{"base":"SLOPE","name":"STIGNING","arguments":["kendt_y","kendt_x"]},{"base":"SMALL","name":"MINDSTE","description":"Returnerer den n'te numeriske værdi fra dataene, i stigende rækkefølge","arguments":["værdier","indeks"]},{"base":"SORT","name":"SORT","arguments":["værdier"]},{"base":"SPARKLINE.COLUMN","name":"SPARKLINE.COLUMN","arguments":["data","farve","negativ farve"]},{"base":"SPARKLINE.LINE","name":"SPARKLINE.LINE","arguments":["data","farve","linjebredde"]},{"base":"SQRT","name":"KVROD","description":"Returnerer kvadratroden af argumentet"},{"base":"STDEV","name":"STDAFV","description":"Returnerer standardafvigelsen af et sæt værdier, svarende til en stikprøve af en population","arguments":["data"]},{"base":"STDEV.P","name":"STDAFV.P","description":"Returnerer standardafvigelsen af et sæt værdier, svarende til en population","arguments":["data"]},{"base":"STDEV.S","name":"STDAFV.S","description":"Returnerer standardafvigelsen af et sæt værdier, svarende til en stikprøve af en population","arguments":["data"]},{"base":"STDEVA","name":"STDAFVV","description":"Returnerer standardafvigelsen af et sæt værdier, svarende til en stikprøve af en population","arguments":["data"]},{"base":"STDEVPA","name":"STDAFVPV","description":"Returnerer standardafvigelsen af et sæt værdier, svarende til en population","arguments":["data"]},{"base":"SUBSTITUTE","name":"UDSKIFT","arguments":["tekst","søg","erstatning","indeks"]},{"base":"SUBTOTAL","name":"SUBTOTAL","arguments":["type","område"]},{"base":"SUM","name":"SUM","description":"Adderer argumenter og områder","arguments":["værdier eller områder"]},{"base":"SUMIF","name":"SUM.HVIS","arguments":["område","kriterier"]},{"base":"SUMIFS","name":"SUM.HVISER","arguments":["værdiområde","kriterieområde","kriterier","kriterieområde","kriterier"]},{"base":"SUMPRODUCT","name":"SUMPRODUKT","description":"Returnerer summen af parvis produkter af to eller flere områder"},{"base":"SUMSQ","name":"SUMKV","description":"Returnerer summen af kvadraterne af alle argumenter","arguments":["værdier eller områder"]},{"base":"T.DIST","name":"T.FORDELING","description":"Returnerer den venstre-halede Student's t-fordeling","arguments":["X","frihedsgrader","kumulativ"]},{"base":"T.INV","name":"T.INV","description":"Returnerer den venstre-halede invers af Student's t-fordeling","arguments":["Sandsynlighed","Frihedsgrader"]},{"base":"T.INV.2T","name":"T.INV.2T","description":"Returnerer den to-halede invers af Student's t-fordeling","arguments":["Sandsynlighed","Frihedsgrader"]},{"base":"TAN","name":"TAN","arguments":["tal"]},{"base":"TANH","name":"TANH","arguments":["tal"]},{"base":"TEXT","name":"TEKST","arguments":["værdi","talformat"]},{"base":"TODAY","name":"IDAG","description":"Returnerer nuværende dag"},{"base":"TRANSPOSE","name":"TRANSPONER","description":"Returnerer transponeringen af input matrix","arguments":["matrix"]},{"base":"TRUNC","name":"AFKORT"},{"base":"UPPER","name":"STORE.BOGSTAVER","description":"Konverterer tekst til store bogstaver","arguments":["tekst"]},{"base":"VALUE","name":"VÆRDI","arguments":["tekst"]},{"base":"VAR","name":"VARIANS","description":"Returnerer variansen af et sæt værdier, svarende til en stikprøve af en population","arguments":["data"]},{"base":"VAR.P","name":"VARIANS.P","description":"Returnerer variansen af et sæt værdier, svarende til en population","arguments":["data"]},{"base":"VAR.S","name":"VARIANS.S","description":"Returnerer variansen af et sæt værdier, svarende til en stikprøve af en population","arguments":["data"]},{"base":"VLOOKUP","name":"LOPSLAG","arguments":["Opslagsværdi","Tabel","Resultat indeks","Unøjagtig"]},{"base":"XIRR","name":"INTERN.RENTE","description":"returnerer den interne rente af en ikke-periodisk strøm af betalinger","arguments":["Værdier","Datoer","Gæt"]},{"base":"XLOOKUP","name":"XOPSLAG","arguments":["Opslagsværdi","Opslagsarray","Returarray","Ikke fundet","Match modus","Søgemodus"]},{"base":"XNPV","name":"NETTO.NUTIDSVÆRDI","description":"returnerer NPV af en ikke-periodisk strøm af betalinger til en given rente","arguments":["Diskonteringsrente","Værdier","Datoer"]},{"base":"YEAR","name":"ÅR","description":"Returnerer år fra dato","arguments":["dato"]},{"base":"YEARFRAC","name":"ÅR.BRØK","description":"Returnerer brøkdelen af et år mellem to datoer","arguments":["Start","Slut","Basis"]},{"base":"Z.TEST","name":"Z.TEST","arguments":["Array","x","Sigma"]}]};