@trebco/treb 37.0.0 → 37.0.1

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 (528) hide show
  1. package/build/package.json +119 -0
  2. package/build/treb-base-types/src/api_types.d.ts +11 -0
  3. package/build/treb-base-types/src/api_types.js +22 -0
  4. package/build/treb-base-types/src/api_types.js.map +1 -0
  5. package/build/treb-base-types/src/area-utils.d.ts +9 -0
  6. package/build/treb-base-types/src/area-utils.js +50 -0
  7. package/build/treb-base-types/src/area-utils.js.map +1 -0
  8. package/build/treb-base-types/src/area.d.ts +182 -0
  9. package/build/treb-base-types/src/area.js +715 -0
  10. package/build/treb-base-types/src/area.js.map +1 -0
  11. package/build/treb-base-types/src/basic_types.d.ts +20 -0
  12. package/build/treb-base-types/src/basic_types.js +22 -0
  13. package/build/treb-base-types/src/basic_types.js.map +1 -0
  14. package/build/treb-base-types/src/cell.d.ts +167 -0
  15. package/build/treb-base-types/src/cell.js +432 -0
  16. package/build/treb-base-types/src/cell.js.map +1 -0
  17. package/build/treb-base-types/src/cells.d.ts +251 -0
  18. package/build/treb-base-types/src/cells.js +1136 -0
  19. package/build/treb-base-types/src/cells.js.map +1 -0
  20. package/build/treb-base-types/src/color.d.ts +35 -0
  21. package/build/treb-base-types/src/color.js +162 -0
  22. package/build/treb-base-types/src/color.js.map +1 -0
  23. package/build/treb-base-types/src/dom-utilities.d.ts +70 -0
  24. package/build/treb-base-types/src/dom-utilities.js +144 -0
  25. package/build/treb-base-types/src/dom-utilities.js.map +1 -0
  26. package/build/treb-base-types/src/evaluate-options.d.ts +35 -0
  27. package/build/treb-base-types/src/evaluate-options.js +22 -0
  28. package/build/treb-base-types/src/evaluate-options.js.map +1 -0
  29. package/build/treb-base-types/src/font-stack.d.ts +37 -0
  30. package/build/treb-base-types/src/font-stack.js +93 -0
  31. package/build/treb-base-types/src/font-stack.js.map +1 -0
  32. package/build/treb-base-types/src/gradient.d.ts +18 -0
  33. package/build/treb-base-types/src/gradient.js +86 -0
  34. package/build/treb-base-types/src/gradient.js.map +1 -0
  35. package/build/treb-base-types/src/import.d.ts +48 -0
  36. package/build/treb-base-types/src/import.js +22 -0
  37. package/build/treb-base-types/src/import.js.map +1 -0
  38. package/build/treb-base-types/src/index-standalone.d.ts +6 -0
  39. package/build/treb-base-types/src/index-standalone.js +27 -0
  40. package/build/treb-base-types/src/index-standalone.js.map +1 -0
  41. package/build/treb-base-types/src/index.d.ts +22 -0
  42. package/build/treb-base-types/src/index.js +45 -0
  43. package/build/treb-base-types/src/index.js.map +1 -0
  44. package/build/treb-base-types/src/layout.d.ts +22 -0
  45. package/build/treb-base-types/src/layout.js +22 -0
  46. package/build/treb-base-types/src/layout.js.map +1 -0
  47. package/build/treb-base-types/src/localization.d.ts +37 -0
  48. package/build/treb-base-types/src/localization.js +157 -0
  49. package/build/treb-base-types/src/localization.js.map +1 -0
  50. package/build/treb-base-types/src/rectangle.d.ts +51 -0
  51. package/build/treb-base-types/src/rectangle.js +123 -0
  52. package/build/treb-base-types/src/rectangle.js.map +1 -0
  53. package/build/treb-base-types/src/render_text.d.ts +34 -0
  54. package/build/treb-base-types/src/render_text.js +22 -0
  55. package/build/treb-base-types/src/render_text.js.map +1 -0
  56. package/build/treb-base-types/src/style.d.ts +214 -0
  57. package/build/treb-base-types/src/style.js +373 -0
  58. package/build/treb-base-types/src/style.js.map +1 -0
  59. package/build/treb-base-types/src/table.d.ts +58 -0
  60. package/build/treb-base-types/src/table.js +27 -0
  61. package/build/treb-base-types/src/table.js.map +1 -0
  62. package/build/treb-base-types/src/text_part.d.ts +26 -0
  63. package/build/treb-base-types/src/text_part.js +47 -0
  64. package/build/treb-base-types/src/text_part.js.map +1 -0
  65. package/build/treb-base-types/src/theme.d.ts +120 -0
  66. package/build/treb-base-types/src/theme.js +460 -0
  67. package/build/treb-base-types/src/theme.js.map +1 -0
  68. package/build/treb-base-types/src/union.d.ts +73 -0
  69. package/build/treb-base-types/src/union.js +61 -0
  70. package/build/treb-base-types/src/union.js.map +1 -0
  71. package/build/treb-base-types/src/value-type.d.ts +86 -0
  72. package/build/treb-base-types/src/value-type.js +168 -0
  73. package/build/treb-base-types/src/value-type.js.map +1 -0
  74. package/build/treb-base-types/src/worker-proxy.d.ts +95 -0
  75. package/build/treb-base-types/src/worker-proxy.js +221 -0
  76. package/build/treb-base-types/src/worker-proxy.js.map +1 -0
  77. package/build/treb-calculator/src/calculator.d.ts +249 -0
  78. package/build/treb-calculator/src/calculator.js +2755 -0
  79. package/build/treb-calculator/src/calculator.js.map +1 -0
  80. package/build/treb-calculator/src/complex-math.d.ts +75 -0
  81. package/build/treb-calculator/src/complex-math.js +559 -0
  82. package/build/treb-calculator/src/complex-math.js.map +1 -0
  83. package/build/treb-calculator/src/dag/array-vertex.d.ts +71 -0
  84. package/build/treb-calculator/src/dag/array-vertex.js +156 -0
  85. package/build/treb-calculator/src/dag/array-vertex.js.map +1 -0
  86. package/build/treb-calculator/src/dag/calculation_leaf_vertex.d.ts +48 -0
  87. package/build/treb-calculator/src/dag/calculation_leaf_vertex.js +84 -0
  88. package/build/treb-calculator/src/dag/calculation_leaf_vertex.js.map +1 -0
  89. package/build/treb-calculator/src/dag/graph.d.ts +134 -0
  90. package/build/treb-calculator/src/dag/graph.js +842 -0
  91. package/build/treb-calculator/src/dag/graph.js.map +1 -0
  92. package/build/treb-calculator/src/dag/spreadsheet_vertex.d.ts +58 -0
  93. package/build/treb-calculator/src/dag/spreadsheet_vertex.js +232 -0
  94. package/build/treb-calculator/src/dag/spreadsheet_vertex.js.map +1 -0
  95. package/build/treb-calculator/src/dag/spreadsheet_vertex_base.d.ts +20 -0
  96. package/build/treb-calculator/src/dag/spreadsheet_vertex_base.js +25 -0
  97. package/build/treb-calculator/src/dag/spreadsheet_vertex_base.js.map +1 -0
  98. package/build/treb-calculator/src/dag/state_leaf_vertex.d.ts +43 -0
  99. package/build/treb-calculator/src/dag/state_leaf_vertex.js +81 -0
  100. package/build/treb-calculator/src/dag/state_leaf_vertex.js.map +1 -0
  101. package/build/treb-calculator/src/dag/vertex.d.ts +71 -0
  102. package/build/treb-calculator/src/dag/vertex.js +274 -0
  103. package/build/treb-calculator/src/dag/vertex.js.map +1 -0
  104. package/build/treb-calculator/src/descriptors.d.ts +189 -0
  105. package/build/treb-calculator/src/descriptors.js +22 -0
  106. package/build/treb-calculator/src/descriptors.js.map +1 -0
  107. package/build/treb-calculator/src/expression-calculator.d.ts +127 -0
  108. package/build/treb-calculator/src/expression-calculator.js +1033 -0
  109. package/build/treb-calculator/src/expression-calculator.js.map +1 -0
  110. package/build/treb-calculator/src/function-error.d.ts +35 -0
  111. package/build/treb-calculator/src/function-error.js +85 -0
  112. package/build/treb-calculator/src/function-error.js.map +1 -0
  113. package/build/treb-calculator/src/function-library.d.ts +22 -0
  114. package/build/treb-calculator/src/function-library.js +96 -0
  115. package/build/treb-calculator/src/function-library.js.map +1 -0
  116. package/build/treb-calculator/src/functions/base-functions.d.ts +7 -0
  117. package/build/treb-calculator/src/functions/base-functions.js +2611 -0
  118. package/build/treb-calculator/src/functions/base-functions.js.map +1 -0
  119. package/build/treb-calculator/src/functions/beta.d.ts +17 -0
  120. package/build/treb-calculator/src/functions/beta.js +201 -0
  121. package/build/treb-calculator/src/functions/beta.js.map +1 -0
  122. package/build/treb-calculator/src/functions/checkbox.d.ts +3 -0
  123. package/build/treb-calculator/src/functions/checkbox.js +128 -0
  124. package/build/treb-calculator/src/functions/checkbox.js.map +1 -0
  125. package/build/treb-calculator/src/functions/complex-functions.d.ts +2 -0
  126. package/build/treb-calculator/src/functions/complex-functions.js +217 -0
  127. package/build/treb-calculator/src/functions/complex-functions.js.map +1 -0
  128. package/build/treb-calculator/src/functions/date-utils.d.ts +3 -0
  129. package/build/treb-calculator/src/functions/date-utils.js +59 -0
  130. package/build/treb-calculator/src/functions/date-utils.js.map +1 -0
  131. package/build/treb-calculator/src/functions/finance-functions.d.ts +2 -0
  132. package/build/treb-calculator/src/functions/finance-functions.js +547 -0
  133. package/build/treb-calculator/src/functions/finance-functions.js.map +1 -0
  134. package/build/treb-calculator/src/functions/fp.d.ts +2 -0
  135. package/build/treb-calculator/src/functions/fp.js +463 -0
  136. package/build/treb-calculator/src/functions/fp.js.map +1 -0
  137. package/build/treb-calculator/src/functions/function-utilities.d.ts +2 -0
  138. package/build/treb-calculator/src/functions/function-utilities.js +36 -0
  139. package/build/treb-calculator/src/functions/function-utilities.js.map +1 -0
  140. package/build/treb-calculator/src/functions/gamma.d.ts +20 -0
  141. package/build/treb-calculator/src/functions/gamma.js +142 -0
  142. package/build/treb-calculator/src/functions/gamma.js.map +1 -0
  143. package/build/treb-calculator/src/functions/information-functions.d.ts +2 -0
  144. package/build/treb-calculator/src/functions/information-functions.js +71 -0
  145. package/build/treb-calculator/src/functions/information-functions.js.map +1 -0
  146. package/build/treb-calculator/src/functions/lambda-functions.d.ts +2 -0
  147. package/build/treb-calculator/src/functions/lambda-functions.js +85 -0
  148. package/build/treb-calculator/src/functions/lambda-functions.js.map +1 -0
  149. package/build/treb-calculator/src/functions/matrix-functions.d.ts +2 -0
  150. package/build/treb-calculator/src/functions/matrix-functions.js +144 -0
  151. package/build/treb-calculator/src/functions/matrix-functions.js.map +1 -0
  152. package/build/treb-calculator/src/functions/normal.d.ts +2 -0
  153. package/build/treb-calculator/src/functions/normal.js +32 -0
  154. package/build/treb-calculator/src/functions/normal.js.map +1 -0
  155. package/build/treb-calculator/src/functions/regex-functions.d.ts +2 -0
  156. package/build/treb-calculator/src/functions/regex-functions.js +188 -0
  157. package/build/treb-calculator/src/functions/regex-functions.js.map +1 -0
  158. package/build/treb-calculator/src/functions/sparkline.d.ts +37 -0
  159. package/build/treb-calculator/src/functions/sparkline.js +264 -0
  160. package/build/treb-calculator/src/functions/sparkline.js.map +1 -0
  161. package/build/treb-calculator/src/functions/statistics-functions.d.ts +6 -0
  162. package/build/treb-calculator/src/functions/statistics-functions.js +989 -0
  163. package/build/treb-calculator/src/functions/statistics-functions.js.map +1 -0
  164. package/build/treb-calculator/src/functions/students-t.d.ts +3 -0
  165. package/build/treb-calculator/src/functions/students-t.js +64 -0
  166. package/build/treb-calculator/src/functions/students-t.js.map +1 -0
  167. package/build/treb-calculator/src/functions/text-functions.d.ts +3 -0
  168. package/build/treb-calculator/src/functions/text-functions.js +320 -0
  169. package/build/treb-calculator/src/functions/text-functions.js.map +1 -0
  170. package/build/treb-calculator/src/index.d.ts +2 -0
  171. package/build/treb-calculator/src/index.js +22 -0
  172. package/build/treb-calculator/src/index.js.map +1 -0
  173. package/build/treb-calculator/src/notifier-types.d.ts +26 -0
  174. package/build/treb-calculator/src/notifier-types.js +22 -0
  175. package/build/treb-calculator/src/notifier-types.js.map +1 -0
  176. package/build/treb-calculator/src/primitives.d.ts +15 -0
  177. package/build/treb-calculator/src/primitives.js +398 -0
  178. package/build/treb-calculator/src/primitives.js.map +1 -0
  179. package/build/treb-calculator/src/utilities.d.ts +68 -0
  180. package/build/treb-calculator/src/utilities.js +324 -0
  181. package/build/treb-calculator/src/utilities.js.map +1 -0
  182. package/build/treb-charts/src/chart-functions.d.ts +8 -0
  183. package/build/treb-charts/src/chart-functions.js +209 -0
  184. package/build/treb-charts/src/chart-functions.js.map +1 -0
  185. package/build/treb-charts/src/chart-types.d.ts +233 -0
  186. package/build/treb-charts/src/chart-types.js +57 -0
  187. package/build/treb-charts/src/chart-types.js.map +1 -0
  188. package/build/treb-charts/src/chart-utils.d.ts +106 -0
  189. package/build/treb-charts/src/chart-utils.js +1060 -0
  190. package/build/treb-charts/src/chart-utils.js.map +1 -0
  191. package/build/treb-charts/src/chart.d.ts +23 -0
  192. package/build/treb-charts/src/chart.js +94 -0
  193. package/build/treb-charts/src/chart.js.map +1 -0
  194. package/build/treb-charts/src/default-chart-renderer.d.ts +16 -0
  195. package/build/treb-charts/src/default-chart-renderer.js +533 -0
  196. package/build/treb-charts/src/default-chart-renderer.js.map +1 -0
  197. package/build/treb-charts/src/index.d.ts +5 -0
  198. package/build/treb-charts/src/index.js +24 -0
  199. package/build/treb-charts/src/index.js.map +1 -0
  200. package/build/treb-charts/src/main.d.ts +1 -0
  201. package/build/treb-charts/src/main.js +34 -0
  202. package/build/treb-charts/src/main.js.map +1 -0
  203. package/build/treb-charts/src/quicksort.d.ts +1 -0
  204. package/build/treb-charts/src/quicksort.js +49 -0
  205. package/build/treb-charts/src/quicksort.js.map +1 -0
  206. package/build/treb-charts/src/rectangle.d.ts +18 -0
  207. package/build/treb-charts/src/rectangle.js +41 -0
  208. package/build/treb-charts/src/rectangle.js.map +1 -0
  209. package/build/treb-charts/src/renderer-type.d.ts +24 -0
  210. package/build/treb-charts/src/renderer-type.js +22 -0
  211. package/build/treb-charts/src/renderer-type.js.map +1 -0
  212. package/build/treb-charts/src/renderer.d.ts +127 -0
  213. package/build/treb-charts/src/renderer.js +1518 -0
  214. package/build/treb-charts/src/renderer.js.map +1 -0
  215. package/build/treb-charts/src/util.d.ts +18 -0
  216. package/build/treb-charts/src/util.js +71 -0
  217. package/build/treb-charts/src/util.js.map +1 -0
  218. package/build/treb-data-model/src/annotation.d.ts +167 -0
  219. package/build/treb-data-model/src/annotation.js +120 -0
  220. package/build/treb-data-model/src/annotation.js.map +1 -0
  221. package/build/treb-data-model/src/conditional_format.d.ts +155 -0
  222. package/build/treb-data-model/src/conditional_format.js +62 -0
  223. package/build/treb-data-model/src/conditional_format.js.map +1 -0
  224. package/build/treb-data-model/src/data-validation.d.ts +28 -0
  225. package/build/treb-data-model/src/data-validation.js +22 -0
  226. package/build/treb-data-model/src/data-validation.js.map +1 -0
  227. package/build/treb-data-model/src/data_model.d.ts +173 -0
  228. package/build/treb-data-model/src/data_model.js +637 -0
  229. package/build/treb-data-model/src/data_model.js.map +1 -0
  230. package/build/treb-data-model/src/index.d.ts +13 -0
  231. package/build/treb-data-model/src/index.js +28 -0
  232. package/build/treb-data-model/src/index.js.map +1 -0
  233. package/build/treb-data-model/src/language-model.d.ts +22 -0
  234. package/build/treb-data-model/src/language-model.js +22 -0
  235. package/build/treb-data-model/src/language-model.js.map +1 -0
  236. package/build/treb-data-model/src/named.d.ts +124 -0
  237. package/build/treb-data-model/src/named.js +372 -0
  238. package/build/treb-data-model/src/named.js.map +1 -0
  239. package/build/treb-data-model/src/serialize_options.d.ts +49 -0
  240. package/build/treb-data-model/src/serialize_options.js +22 -0
  241. package/build/treb-data-model/src/serialize_options.js.map +1 -0
  242. package/build/treb-data-model/src/sheet.d.ts +499 -0
  243. package/build/treb-data-model/src/sheet.js +2904 -0
  244. package/build/treb-data-model/src/sheet.js.map +1 -0
  245. package/build/treb-data-model/src/sheet_collection.d.ts +58 -0
  246. package/build/treb-data-model/src/sheet_collection.js +112 -0
  247. package/build/treb-data-model/src/sheet_collection.js.map +1 -0
  248. package/build/treb-data-model/src/sheet_selection.d.ts +42 -0
  249. package/build/treb-data-model/src/sheet_selection.js +39 -0
  250. package/build/treb-data-model/src/sheet_selection.js.map +1 -0
  251. package/build/treb-data-model/src/sheet_types.d.ts +104 -0
  252. package/build/treb-data-model/src/sheet_types.js +22 -0
  253. package/build/treb-data-model/src/sheet_types.js.map +1 -0
  254. package/build/treb-data-model/src/types.d.ts +59 -0
  255. package/build/treb-data-model/src/types.js +22 -0
  256. package/build/treb-data-model/src/types.js.map +1 -0
  257. package/build/treb-embed/src/custom-element/spreadsheet-constructor.d.ts +75 -0
  258. package/build/treb-embed/src/custom-element/spreadsheet-constructor.js +1144 -0
  259. package/build/treb-embed/src/custom-element/spreadsheet-constructor.js.map +1 -0
  260. package/build/treb-embed/src/custom-element/treb-global.d.ts +36 -0
  261. package/build/treb-embed/src/custom-element/treb-global.js +64 -0
  262. package/build/treb-embed/src/custom-element/treb-global.js.map +1 -0
  263. package/build/treb-embed/src/custom-element/treb-spreadsheet-element.d.ts +1 -0
  264. package/build/treb-embed/src/custom-element/treb-spreadsheet-element.js +61 -0
  265. package/build/treb-embed/src/custom-element/treb-spreadsheet-element.js.map +1 -0
  266. package/build/treb-embed/src/embedded-spreadsheet.d.ts +1358 -0
  267. package/build/treb-embed/src/embedded-spreadsheet.js +5205 -0
  268. package/build/treb-embed/src/embedded-spreadsheet.js.map +1 -0
  269. package/build/treb-embed/src/index.d.ts +12 -0
  270. package/build/treb-embed/src/index.js +34 -0
  271. package/build/treb-embed/src/index.js.map +1 -0
  272. package/build/treb-embed/src/options.d.ts +266 -0
  273. package/build/treb-embed/src/options.js +56 -0
  274. package/build/treb-embed/src/options.js.map +1 -0
  275. package/build/treb-embed/src/plugin.d.ts +9 -0
  276. package/build/treb-embed/src/plugin.js +22 -0
  277. package/build/treb-embed/src/plugin.js.map +1 -0
  278. package/build/treb-embed/src/progress-dialog.d.ts +49 -0
  279. package/build/treb-embed/src/progress-dialog.js +178 -0
  280. package/build/treb-embed/src/progress-dialog.js.map +1 -0
  281. package/build/treb-embed/src/selection-state.d.ts +15 -0
  282. package/build/treb-embed/src/selection-state.js +22 -0
  283. package/build/treb-embed/src/selection-state.js.map +1 -0
  284. package/build/treb-embed/src/spinner.d.ts +8 -0
  285. package/build/treb-embed/src/spinner.js +40 -0
  286. package/build/treb-embed/src/spinner.js.map +1 -0
  287. package/build/treb-embed/src/toolbar-message.d.ts +72 -0
  288. package/build/treb-embed/src/toolbar-message.js +22 -0
  289. package/build/treb-embed/src/toolbar-message.js.map +1 -0
  290. package/build/treb-embed/src/types.d.ts +185 -0
  291. package/build/treb-embed/src/types.js +45 -0
  292. package/build/treb-embed/src/types.js.map +1 -0
  293. package/build/treb-embed/tsconfig.tsbuildinfo +1 -0
  294. package/build/treb-export/src/address-type.d.ts +34 -0
  295. package/build/treb-export/src/address-type.js +53 -0
  296. package/build/treb-export/src/address-type.js.map +1 -0
  297. package/build/treb-export/src/base-template.d.ts +1 -0
  298. package/build/treb-export/src/base-template.js +22 -0
  299. package/build/treb-export/src/base-template.js.map +1 -0
  300. package/build/treb-export/src/column-width.d.ts +2 -0
  301. package/build/treb-export/src/column-width.js +80 -0
  302. package/build/treb-export/src/column-width.js.map +1 -0
  303. package/build/treb-export/src/drawing/bubble-chart-template.d.ts +514 -0
  304. package/build/treb-export/src/drawing/bubble-chart-template.js +544 -0
  305. package/build/treb-export/src/drawing/bubble-chart-template.js.map +1 -0
  306. package/build/treb-export/src/drawing/chart-template-components2.d.ts +365 -0
  307. package/build/treb-export/src/drawing/chart-template-components2.js +386 -0
  308. package/build/treb-export/src/drawing/chart-template-components2.js.map +1 -0
  309. package/build/treb-export/src/drawing/chart.d.ts +26 -0
  310. package/build/treb-export/src/drawing/chart.js +247 -0
  311. package/build/treb-export/src/drawing/chart.js.map +1 -0
  312. package/build/treb-export/src/drawing/column-chart-template2.d.ts +490 -0
  313. package/build/treb-export/src/drawing/column-chart-template2.js +518 -0
  314. package/build/treb-export/src/drawing/column-chart-template2.js.map +1 -0
  315. package/build/treb-export/src/drawing/donut-chart-template2.d.ts +272 -0
  316. package/build/treb-export/src/drawing/donut-chart-template2.js +293 -0
  317. package/build/treb-export/src/drawing/donut-chart-template2.js.map +1 -0
  318. package/build/treb-export/src/drawing/drawing.d.ts +49 -0
  319. package/build/treb-export/src/drawing/drawing.js +193 -0
  320. package/build/treb-export/src/drawing/drawing.js.map +1 -0
  321. package/build/treb-export/src/drawing/embedded-image.d.ts +12 -0
  322. package/build/treb-export/src/drawing/embedded-image.js +54 -0
  323. package/build/treb-export/src/drawing/embedded-image.js.map +1 -0
  324. package/build/treb-export/src/drawing/scatter-chart-template2.d.ts +520 -0
  325. package/build/treb-export/src/drawing/scatter-chart-template2.js +551 -0
  326. package/build/treb-export/src/drawing/scatter-chart-template2.js.map +1 -0
  327. package/build/treb-export/src/export.d.ts +72 -0
  328. package/build/treb-export/src/export.js +2039 -0
  329. package/build/treb-export/src/export.js.map +1 -0
  330. package/build/treb-export/src/import-export-messages.d.ts +31 -0
  331. package/build/treb-export/src/import-export-messages.js +22 -0
  332. package/build/treb-export/src/import-export-messages.js.map +1 -0
  333. package/build/treb-export/src/import.d.ts +33 -0
  334. package/build/treb-export/src/import.js +1258 -0
  335. package/build/treb-export/src/import.js.map +1 -0
  336. package/build/treb-export/src/index.worker.d.ts +1 -0
  337. package/build/treb-export/src/index.worker.js +93 -0
  338. package/build/treb-export/src/index.worker.js.map +1 -0
  339. package/build/treb-export/src/metadata.d.ts +51 -0
  340. package/build/treb-export/src/metadata.js +153 -0
  341. package/build/treb-export/src/metadata.js.map +1 -0
  342. package/build/treb-export/src/ooxml.d.ts +7 -0
  343. package/build/treb-export/src/ooxml.js +41 -0
  344. package/build/treb-export/src/ooxml.js.map +1 -0
  345. package/build/treb-export/src/relationship.d.ts +8 -0
  346. package/build/treb-export/src/relationship.js +27 -0
  347. package/build/treb-export/src/relationship.js.map +1 -0
  348. package/build/treb-export/src/shared-strings.d.ts +11 -0
  349. package/build/treb-export/src/shared-strings.js +105 -0
  350. package/build/treb-export/src/shared-strings.js.map +1 -0
  351. package/build/treb-export/src/template-2.d.ts +1 -0
  352. package/build/treb-export/src/template-2.js +22 -0
  353. package/build/treb-export/src/template-2.js.map +1 -0
  354. package/build/treb-export/src/unescape_xml.d.ts +1 -0
  355. package/build/treb-export/src/unescape_xml.js +61 -0
  356. package/build/treb-export/src/unescape_xml.js.map +1 -0
  357. package/build/treb-export/src/workbook-sheet.d.ts +75 -0
  358. package/build/treb-export/src/workbook-sheet.js +128 -0
  359. package/build/treb-export/src/workbook-sheet.js.map +1 -0
  360. package/build/treb-export/src/workbook-style.d.ts +110 -0
  361. package/build/treb-export/src/workbook-style.js +1134 -0
  362. package/build/treb-export/src/workbook-style.js.map +1 -0
  363. package/build/treb-export/src/workbook-theme.d.ts +13 -0
  364. package/build/treb-export/src/workbook-theme.js +85 -0
  365. package/build/treb-export/src/workbook-theme.js.map +1 -0
  366. package/build/treb-export/src/workbook.d.ts +123 -0
  367. package/build/treb-export/src/workbook.js +644 -0
  368. package/build/treb-export/src/workbook.js.map +1 -0
  369. package/build/treb-export/src/xml-test.d.ts +9 -0
  370. package/build/treb-export/src/xml-test.js +52 -0
  371. package/build/treb-export/src/xml-test.js.map +1 -0
  372. package/build/treb-export/src/xml-utils.d.ts +76 -0
  373. package/build/treb-export/src/xml-utils.js +223 -0
  374. package/build/treb-export/src/xml-utils.js.map +1 -0
  375. package/build/treb-export/src/zip-wrapper.d.ts +22 -0
  376. package/build/treb-export/src/zip-wrapper.js +93 -0
  377. package/build/treb-export/src/zip-wrapper.js.map +1 -0
  378. package/build/treb-format/src/format.d.ts +130 -0
  379. package/build/treb-format/src/format.js +805 -0
  380. package/build/treb-format/src/format.js.map +1 -0
  381. package/build/treb-format/src/format_cache.d.ts +55 -0
  382. package/build/treb-format/src/format_cache.js +166 -0
  383. package/build/treb-format/src/format_cache.js.map +1 -0
  384. package/build/treb-format/src/format_parser.d.ts +70 -0
  385. package/build/treb-format/src/format_parser.js +618 -0
  386. package/build/treb-format/src/format_parser.js.map +1 -0
  387. package/build/treb-format/src/index.d.ts +4 -0
  388. package/build/treb-format/src/index.js +25 -0
  389. package/build/treb-format/src/index.js.map +1 -0
  390. package/build/treb-format/src/number_format_section.d.ts +58 -0
  391. package/build/treb-format/src/number_format_section.js +78 -0
  392. package/build/treb-format/src/number_format_section.js.map +1 -0
  393. package/build/treb-format/src/value_parser.d.ts +48 -0
  394. package/build/treb-format/src/value_parser.js +244 -0
  395. package/build/treb-format/src/value_parser.js.map +1 -0
  396. package/build/treb-grid/src/editors/autocomplete.d.ts +39 -0
  397. package/build/treb-grid/src/editors/autocomplete.js +316 -0
  398. package/build/treb-grid/src/editors/autocomplete.js.map +1 -0
  399. package/build/treb-grid/src/editors/autocomplete_matcher.d.ts +74 -0
  400. package/build/treb-grid/src/editors/autocomplete_matcher.js +212 -0
  401. package/build/treb-grid/src/editors/autocomplete_matcher.js.map +1 -0
  402. package/build/treb-grid/src/editors/editor.d.ts +214 -0
  403. package/build/treb-grid/src/editors/editor.js +879 -0
  404. package/build/treb-grid/src/editors/editor.js.map +1 -0
  405. package/build/treb-grid/src/editors/external_editor.d.ts +11 -0
  406. package/build/treb-grid/src/editors/external_editor.js +118 -0
  407. package/build/treb-grid/src/editors/external_editor.js.map +1 -0
  408. package/build/treb-grid/src/editors/formula_bar.d.ts +85 -0
  409. package/build/treb-grid/src/editors/formula_bar.js +444 -0
  410. package/build/treb-grid/src/editors/formula_bar.js.map +1 -0
  411. package/build/treb-grid/src/editors/overlay_editor.d.ts +85 -0
  412. package/build/treb-grid/src/editors/overlay_editor.js +353 -0
  413. package/build/treb-grid/src/editors/overlay_editor.js.map +1 -0
  414. package/build/treb-grid/src/index.d.ts +12 -0
  415. package/build/treb-grid/src/index.js +28 -0
  416. package/build/treb-grid/src/index.js.map +1 -0
  417. package/build/treb-grid/src/layout/base_layout.d.ts +346 -0
  418. package/build/treb-grid/src/layout/base_layout.js +2050 -0
  419. package/build/treb-grid/src/layout/base_layout.js.map +1 -0
  420. package/build/treb-grid/src/layout/grid_layout.d.ts +19 -0
  421. package/build/treb-grid/src/layout/grid_layout.js +235 -0
  422. package/build/treb-grid/src/layout/grid_layout.js.map +1 -0
  423. package/build/treb-grid/src/layout/mock-layout.d.ts +10 -0
  424. package/build/treb-grid/src/layout/mock-layout.js +37 -0
  425. package/build/treb-grid/src/layout/mock-layout.js.map +1 -0
  426. package/build/treb-grid/src/render/selection-renderer.d.ts +97 -0
  427. package/build/treb-grid/src/render/selection-renderer.js +315 -0
  428. package/build/treb-grid/src/render/selection-renderer.js.map +1 -0
  429. package/build/treb-grid/src/render/svg_header_overlay.d.ts +20 -0
  430. package/build/treb-grid/src/render/svg_header_overlay.js +76 -0
  431. package/build/treb-grid/src/render/svg_header_overlay.js.map +1 -0
  432. package/build/treb-grid/src/render/svg_selection_block.d.ts +27 -0
  433. package/build/treb-grid/src/render/svg_selection_block.js +106 -0
  434. package/build/treb-grid/src/render/svg_selection_block.js.map +1 -0
  435. package/build/treb-grid/src/render/tile_renderer.d.ts +121 -0
  436. package/build/treb-grid/src/render/tile_renderer.js +1609 -0
  437. package/build/treb-grid/src/render/tile_renderer.js.map +1 -0
  438. package/build/treb-grid/src/types/border_constants.d.ts +9 -0
  439. package/build/treb-grid/src/types/border_constants.js +34 -0
  440. package/build/treb-grid/src/types/border_constants.js.map +1 -0
  441. package/build/treb-grid/src/types/clipboard_data.d.ts +11 -0
  442. package/build/treb-grid/src/types/clipboard_data.js +22 -0
  443. package/build/treb-grid/src/types/clipboard_data.js.map +1 -0
  444. package/build/treb-grid/src/types/clipboard_data2.d.ts +46 -0
  445. package/build/treb-grid/src/types/clipboard_data2.js +22 -0
  446. package/build/treb-grid/src/types/clipboard_data2.js.map +1 -0
  447. package/build/treb-grid/src/types/drag_mask.d.ts +10 -0
  448. package/build/treb-grid/src/types/drag_mask.js +78 -0
  449. package/build/treb-grid/src/types/drag_mask.js.map +1 -0
  450. package/build/treb-grid/src/types/external_editor_config.d.ts +33 -0
  451. package/build/treb-grid/src/types/external_editor_config.js +22 -0
  452. package/build/treb-grid/src/types/external_editor_config.js.map +1 -0
  453. package/build/treb-grid/src/types/grid.d.ts +806 -0
  454. package/build/treb-grid/src/types/grid.js +6410 -0
  455. package/build/treb-grid/src/types/grid.js.map +1 -0
  456. package/build/treb-grid/src/types/grid_base.d.ts +442 -0
  457. package/build/treb-grid/src/types/grid_base.js +3523 -0
  458. package/build/treb-grid/src/types/grid_base.js.map +1 -0
  459. package/build/treb-grid/src/types/grid_command.d.ts +408 -0
  460. package/build/treb-grid/src/types/grid_command.js +75 -0
  461. package/build/treb-grid/src/types/grid_command.js.map +1 -0
  462. package/build/treb-grid/src/types/grid_events.d.ts +93 -0
  463. package/build/treb-grid/src/types/grid_events.js +36 -0
  464. package/build/treb-grid/src/types/grid_events.js.map +1 -0
  465. package/build/treb-grid/src/types/grid_options.d.ts +50 -0
  466. package/build/treb-grid/src/types/grid_options.js +34 -0
  467. package/build/treb-grid/src/types/grid_options.js.map +1 -0
  468. package/build/treb-grid/src/types/scale-control.d.ts +21 -0
  469. package/build/treb-grid/src/types/scale-control.js +148 -0
  470. package/build/treb-grid/src/types/scale-control.js.map +1 -0
  471. package/build/treb-grid/src/types/set_range_options.d.ts +24 -0
  472. package/build/treb-grid/src/types/set_range_options.js +22 -0
  473. package/build/treb-grid/src/types/set_range_options.js.map +1 -0
  474. package/build/treb-grid/src/types/tab_bar.d.ts +84 -0
  475. package/build/treb-grid/src/types/tab_bar.js +426 -0
  476. package/build/treb-grid/src/types/tab_bar.js.map +1 -0
  477. package/build/treb-grid/src/types/tile.d.ts +29 -0
  478. package/build/treb-grid/src/types/tile.js +22 -0
  479. package/build/treb-grid/src/types/tile.js.map +1 -0
  480. package/build/treb-grid/src/types/update_flags.d.ts +48 -0
  481. package/build/treb-grid/src/types/update_flags.js +22 -0
  482. package/build/treb-grid/src/types/update_flags.js.map +1 -0
  483. package/build/treb-grid/src/util/fontmetrics.d.ts +21 -0
  484. package/build/treb-grid/src/util/fontmetrics.js +82 -0
  485. package/build/treb-grid/src/util/fontmetrics.js.map +1 -0
  486. package/build/treb-grid/src/util/ua.d.ts +33 -0
  487. package/build/treb-grid/src/util/ua.js +86 -0
  488. package/build/treb-grid/src/util/ua.js.map +1 -0
  489. package/build/treb-parser/src/csv-parser.d.ts +13 -0
  490. package/build/treb-parser/src/csv-parser.js +107 -0
  491. package/build/treb-parser/src/csv-parser.js.map +1 -0
  492. package/build/treb-parser/src/index.d.ts +4 -0
  493. package/build/treb-parser/src/index.js +25 -0
  494. package/build/treb-parser/src/index.js.map +1 -0
  495. package/build/treb-parser/src/md-parser.d.ts +97 -0
  496. package/build/treb-parser/src/md-parser.js +403 -0
  497. package/build/treb-parser/src/md-parser.js.map +1 -0
  498. package/build/treb-parser/src/parser-types.d.ts +345 -0
  499. package/build/treb-parser/src/parser-types.js +53 -0
  500. package/build/treb-parser/src/parser-types.js.map +1 -0
  501. package/build/treb-parser/src/parser.d.ts +422 -0
  502. package/build/treb-parser/src/parser.js +2418 -0
  503. package/build/treb-parser/src/parser.js.map +1 -0
  504. package/build/treb-utils/src/event_source.d.ts +34 -0
  505. package/build/treb-utils/src/event_source.js +110 -0
  506. package/build/treb-utils/src/event_source.js.map +1 -0
  507. package/build/treb-utils/src/ievent_source.d.ts +9 -0
  508. package/build/treb-utils/src/ievent_source.js +22 -0
  509. package/build/treb-utils/src/ievent_source.js.map +1 -0
  510. package/build/treb-utils/src/index.d.ts +6 -0
  511. package/build/treb-utils/src/index.js +30 -0
  512. package/build/treb-utils/src/index.js.map +1 -0
  513. package/build/treb-utils/src/measurement.d.ts +42 -0
  514. package/build/treb-utils/src/measurement.js +145 -0
  515. package/build/treb-utils/src/measurement.js.map +1 -0
  516. package/build/treb-utils/src/scale.d.ts +16 -0
  517. package/build/treb-utils/src/scale.js +106 -0
  518. package/build/treb-utils/src/scale.js.map +1 -0
  519. package/build/treb-utils/src/serialize_html.d.ts +5 -0
  520. package/build/treb-utils/src/serialize_html.js +128 -0
  521. package/build/treb-utils/src/serialize_html.js.map +1 -0
  522. package/build/treb-utils/src/validate_uri.d.ts +20 -0
  523. package/build/treb-utils/src/validate_uri.js +55 -0
  524. package/build/treb-utils/src/validate_uri.js.map +1 -0
  525. package/dist/{chunk-XD5PEZBZ.mjs → chunk-E35ONJUS.mjs} +1 -1
  526. package/dist/treb-export-worker.mjs +2 -2
  527. package/dist/treb-spreadsheet.mjs +4 -4
  528. package/package.json +1 -1
@@ -0,0 +1,715 @@
1
+ /*
2
+ * This file is part of TREB.
3
+ *
4
+ * TREB is free software: you can redistribute it and/or modify it under the
5
+ * terms of the GNU General Public License as published by the Free Software
6
+ * Foundation, either version 3 of the License, or (at your option) any
7
+ * later version.
8
+ *
9
+ * TREB is distributed in the hope that it will be useful, but WITHOUT ANY
10
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12
+ * details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License along
15
+ * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
+ *
17
+ * Copyright 2022-2026 trebco, llc.
18
+ * info@treb.app
19
+ *
20
+ */
21
+ /**
22
+ * type guard function
23
+ * FIXME: is there a naming convention for these?
24
+ *
25
+ * @internal
26
+ */
27
+ export const IsCellAddress = (obj) => {
28
+ return (obj !== null
29
+ && typeof obj === 'object'
30
+ && 'row' in obj
31
+ && 'column' in obj);
32
+ };
33
+ /** @internal */
34
+ export const IsArea = (obj) => {
35
+ return (obj !== null
36
+ && typeof obj === 'object'
37
+ && 'start' in obj
38
+ && IsCellAddress(obj.start)
39
+ && 'end' in obj
40
+ && IsCellAddress(obj.end));
41
+ };
42
+ /**
43
+ * class represents a rectangular area on a sheet. can be a range,
44
+ * single cell, entire row/column, or entire sheet.
45
+ *
46
+ * "entire" row/column/sheet is represented with an infinity in the
47
+ * start/end value for row/column/both, so watch out on loops. the
48
+ * sheet class has a method for reducing infinite ranges to actual
49
+ * populated ranges.
50
+ *
51
+ * infinitiy is turning into a headache because it doesn't serialize
52
+ * to json properly. should we switch to a flag, or -1, or something?
53
+ */
54
+ export class Area {
55
+ // tslint:disable-next-line:variable-name
56
+ start_;
57
+ // tslint:disable-next-line:variable-name
58
+ end_;
59
+ /**
60
+ *
61
+ * @param start
62
+ * @param end
63
+ * @param normalize: calls the normalize function
64
+ */
65
+ constructor(start, end = start, normalize = false) {
66
+ /*
67
+ // copy
68
+ this.start_ = {
69
+ row: start.row, column: start.column,
70
+ absolute_column: !!start.absolute_column,
71
+ absolute_row: !!start.absolute_row };
72
+
73
+ this.end_ = {
74
+ row: end.row, column: end.column,
75
+ absolute_column: !!end.absolute_column,
76
+ absolute_row: !!end.absolute_row };
77
+ */
78
+ // patch nulls. this is an effect of transferring via JSON,
79
+ // infinities are -> null. make sure to strict === null.
80
+ // NOTE that the patch function returns a clone, so we can store the
81
+ // returned object (instead of copying, which we used to do).
82
+ this.end_ = this.PatchNull(end);
83
+ this.start_ = this.PatchNull(start);
84
+ if (normalize)
85
+ this.Normalize();
86
+ // this.ResetIterator();
87
+ }
88
+ static FromColumn(column) {
89
+ return new Area({ row: Infinity, column });
90
+ }
91
+ static FromRow(row) {
92
+ return new Area({ row, column: Infinity });
93
+ }
94
+ static ColumnToLabel(c) {
95
+ let s = String.fromCharCode(65 + c % 26);
96
+ while (c > 25) {
97
+ c = Math.floor(c / 26) - 1;
98
+ s = String.fromCharCode(65 + c % 26) + s;
99
+ }
100
+ return s;
101
+ }
102
+ static CellAddressToLabel(address, sheet_id = false) {
103
+ if (address.row === Infinity && address.column === Infinity) {
104
+ throw new Error('this is going to break something');
105
+ }
106
+ const prefix = sheet_id ? `${address.sheet_id || 0}!` : '';
107
+ if (address.row === Infinity) {
108
+ return prefix
109
+ + (address.absolute_column ? '$' : '')
110
+ + this.ColumnToLabel(address.column);
111
+ }
112
+ if (address.column === Infinity) {
113
+ return prefix
114
+ // + (address.absolute_column ? '$' : '')
115
+ // + this.ColumnToLabel(address.column)
116
+ + (address.absolute_row ? '$' : '')
117
+ + (address.row + 1);
118
+ }
119
+ return prefix
120
+ + (address.absolute_column ? '$' : '')
121
+ + this.ColumnToLabel(address.column)
122
+ + (address.absolute_row ? '$' : '')
123
+ + (address.row + 1)
124
+ + (address.spill ? '#' : '');
125
+ }
126
+ /**
127
+ * merge two areas and return a new area.
128
+ * UPDATE to support arbitrary arguments
129
+ */
130
+ static Join(base, ...args) {
131
+ const area = new Area(base.start, base.end);
132
+ for (const arg of args) {
133
+ if (arg) {
134
+ area.ConsumeAddress(arg.start);
135
+ area.ConsumeAddress(arg.end);
136
+ }
137
+ }
138
+ return area;
139
+ }
140
+ /**
141
+ * creates an area that expands the original area in all directions
142
+ * (except at the top/left edges)
143
+ */
144
+ static Bleed(area, length = 1) {
145
+ return new Area({
146
+ row: Math.max(0, area.start.row - length),
147
+ column: Math.max(0, area.start.column - length),
148
+ sheet_id: area.start.sheet_id,
149
+ }, {
150
+ row: area.end.row + length,
151
+ column: area.end.column + length,
152
+ });
153
+ }
154
+ /**
155
+ * adjust an area in response to an insert/delete operation.
156
+ * I noticed we were doing this in several places. moved here to unify.
157
+ *
158
+ * @param source - the starting area. we'll create a new object to return
159
+ * (we will not mutate in place)
160
+ */
161
+ static PatchArea(source, options) {
162
+ const { before_column, column_count, before_row, row_count } = options;
163
+ let area = new Area(source.start, source.end);
164
+ const sheet_id = source.start.sheet_id;
165
+ if (column_count && before_column <= area.end.column) {
166
+ /*
167
+ // (1) we are before the insert point, not affected
168
+
169
+ if (before_column > range.end.column) {
170
+ continue;
171
+ }
172
+ */
173
+ if (column_count > 0) {
174
+ // (2) it's an insert and we are past the insert point:
175
+ // increment [start] and [end] by [count]
176
+ if (before_column <= area.start.column) {
177
+ area.Shift(0, column_count);
178
+ }
179
+ // (3) it's an insert and we contain the insert point:
180
+ // increment [end] by [count]
181
+ else if (before_column > area.start.column && before_column <= area.end.column) {
182
+ area.ConsumeAddress({ row: area.end.row, column: area.end.column + column_count });
183
+ }
184
+ else {
185
+ console.warn(`AA X case 1`, before_column, column_count, JSON.stringify(area));
186
+ }
187
+ }
188
+ else if (column_count < 0) {
189
+ // (4) it's a delete and we are past the delete point (before+count):
190
+ // decrement [start] and [end] by [count]
191
+ if (before_column - column_count <= area.start.column) {
192
+ area.Shift(0, column_count);
193
+ }
194
+ // (5) it's a delete and contains the entire range
195
+ else if (before_column <= area.start.column && before_column - column_count > area.end.column) {
196
+ // we can actually just return at this point
197
+ return false;
198
+ }
199
+ // (6) it's a delete and contains part of the range. clip the range.
200
+ else if (before_column <= area.start.column) {
201
+ const last_column = before_column - column_count - 1;
202
+ area = new Area({
203
+ row: area.start.row, column: last_column + 1 + column_count, sheet_id
204
+ }, {
205
+ row: area.end.row, column: area.end.column + column_count
206
+ });
207
+ }
208
+ else if (before_column <= area.end.column) {
209
+ const last_column = before_column - column_count - 1;
210
+ if (last_column >= area.end.column) {
211
+ area = new Area({
212
+ row: area.start.row, column: area.start.column, sheet_id
213
+ }, {
214
+ row: area.end.row, column: before_column - 1
215
+ });
216
+ }
217
+ else {
218
+ area = new Area({
219
+ row: area.start.row, column: area.start.column, sheet_id
220
+ }, {
221
+ row: area.end.row, column: area.start.column + area.columns + column_count - 1
222
+ });
223
+ }
224
+ }
225
+ else {
226
+ console.warn(`AA X case 2`, before_column, column_count, JSON.stringify(area));
227
+ }
228
+ }
229
+ }
230
+ if (row_count && before_row <= area.end.row) {
231
+ /*
232
+ // (1) we are before the insert point, not affected
233
+
234
+ if (before_column > range.end.column) {
235
+ continue;
236
+ }
237
+ */
238
+ if (row_count > 0) {
239
+ // (2) it's an insert and we are past the insert point:
240
+ // increment [start] and [end] by [count]
241
+ if (before_row <= area.start.row) {
242
+ area.Shift(row_count, 0);
243
+ }
244
+ // (3) it's an insert and we contain the insert point:
245
+ // increment [end] by [count]
246
+ else if (before_row > area.start.row && before_row <= area.end.row) {
247
+ area.ConsumeAddress({ row: area.end.row + row_count, column: area.end.column });
248
+ }
249
+ else {
250
+ console.warn(`AA X case 3`, before_row, row_count, JSON.stringify(area));
251
+ }
252
+ }
253
+ else if (row_count < 0) {
254
+ // (4) it's a delete and we are past the delete point (before+count):
255
+ // decrement [start] and [end] by [count]
256
+ if (before_row - row_count <= area.start.row) {
257
+ area.Shift(row_count, 0);
258
+ }
259
+ // (5) it's a delete and contains the entire range
260
+ else if (before_row <= area.start.row && before_row - row_count > area.end.row) {
261
+ return false;
262
+ }
263
+ // (6) it's a delete and contains part of the range. clip the range.
264
+ else if (before_row <= area.start.row) {
265
+ const last_row = before_row - row_count - 1;
266
+ area = new Area({
267
+ column: area.start.column, row: last_row + 1 + row_count, sheet_id
268
+ }, {
269
+ column: area.end.column, row: area.end.row + row_count
270
+ });
271
+ }
272
+ else if (before_row <= area.end.row) {
273
+ const last_row = before_row - row_count - 1;
274
+ if (last_row >= area.end.row) {
275
+ area = new Area({
276
+ column: area.start.column, row: area.start.row, sheet_id
277
+ }, {
278
+ column: area.end.column, row: before_row - 1
279
+ });
280
+ }
281
+ else {
282
+ area = new Area({
283
+ column: area.start.column, row: area.start.row, sheet_id
284
+ }, {
285
+ column: area.end.column, row: area.start.row + area.rows + row_count - 1
286
+ });
287
+ }
288
+ }
289
+ else {
290
+ console.warn(`AA X case 4`, before_row, row_count, JSON.stringify(area));
291
+ }
292
+ }
293
+ }
294
+ return area;
295
+ }
296
+ /** accessor returns a _copy_ of the start address */
297
+ get start() {
298
+ return { ...this.start_ };
299
+ }
300
+ /** accessor */
301
+ set start(value) { this.start_ = value; }
302
+ /** accessor returns a _copy_ of the end address */
303
+ get end() {
304
+ return { ...this.end_ };
305
+ }
306
+ /** accessor */
307
+ set end(value) { this.end_ = value; }
308
+ /** returns number of rows, possibly infinity */
309
+ get rows() {
310
+ if (this.start_.row === Infinity || this.end_.row === Infinity)
311
+ return Infinity;
312
+ return this.end_.row - this.start_.row + 1;
313
+ }
314
+ /** returns number of columns, possibly infinity */
315
+ get columns() {
316
+ if (this.start_.column === Infinity || this.end_.column === Infinity)
317
+ return Infinity;
318
+ return this.end_.column - this.start_.column + 1;
319
+ }
320
+ /** returns number of cells, possibly infinity */
321
+ get count() {
322
+ return this.rows * this.columns;
323
+ }
324
+ /** returns flag indicating this is the entire sheet, usually after "select all" */
325
+ get entire_sheet() {
326
+ return this.entire_row && this.entire_column;
327
+ }
328
+ /** returns flag indicating this range includes infinite rows */
329
+ get entire_column() {
330
+ return (this.start_.row === Infinity);
331
+ }
332
+ /** returns flag indicating this range includes infinite columns */
333
+ get entire_row() {
334
+ return (this.start_.column === Infinity);
335
+ }
336
+ PatchNull(address) {
337
+ const copy = { ...address };
338
+ if (copy.row === null) {
339
+ copy.row = Infinity;
340
+ }
341
+ if (copy.column === null) {
342
+ copy.column = Infinity;
343
+ }
344
+ return copy;
345
+ }
346
+ SetSheetID(id) {
347
+ this.start_.sheet_id = id;
348
+ }
349
+ Normalize() {
350
+ /*
351
+ let columns = [this.start.column, this.end.column].sort((a, b) => a-b);
352
+ let rows = [this.start.row, this.end.row].sort((a, b) => a-b);
353
+
354
+ this.start_ = {row: rows[0], column: columns[0]};
355
+ this.end = {row:rows[1], column: columns[1]};
356
+ */
357
+ // we need to bind the element and the absolute/relative status
358
+ // so sorting is too simple
359
+ const start = { ...this.start_ };
360
+ const end = { ...this.end_ };
361
+ /*
362
+ const start = {
363
+ sheet_id: this.start_.sheet_id,
364
+ row: this.start_.row,
365
+ column: this.start_.column,
366
+ absolute_column: this.start_.absolute_column,
367
+ absolute_row: this.start_.absolute_row };
368
+
369
+ const end = {
370
+ sheet_id: this.end_.sheet_id, // we don't ever use this, but copy JIC
371
+ row: this.end_.row,
372
+ column: this.end_.column,
373
+ absolute_column: this.end_.absolute_column,
374
+ absolute_row: this.end_.absolute_row };
375
+ */
376
+ // swap row
377
+ if (start.row === Infinity || end.row === Infinity) {
378
+ start.row = end.row = Infinity;
379
+ }
380
+ else if (start.row > end.row) {
381
+ start.row = this.end_.row;
382
+ start.absolute_row = this.end_.absolute_row;
383
+ end.row = this.start_.row;
384
+ end.absolute_row = this.start_.absolute_row;
385
+ }
386
+ // swap column
387
+ if (start.column === Infinity || end.column === Infinity) {
388
+ start.column = end.column = Infinity;
389
+ }
390
+ else if (start.column > end.column) {
391
+ start.column = this.end_.column;
392
+ start.absolute_column = this.end_.absolute_column;
393
+ end.column = this.start_.column;
394
+ end.absolute_column = this.start_.absolute_column;
395
+ }
396
+ this.start_ = start;
397
+ this.end_ = end;
398
+ }
399
+ /** returns the top-left cell in the area */
400
+ TopLeft() {
401
+ const address = { row: 0, column: 0 };
402
+ if (!this.entire_row)
403
+ address.column = this.start.column;
404
+ if (!this.entire_column)
405
+ address.row = this.start.row;
406
+ return address;
407
+ }
408
+ /** returns the bottom-right cell in the area */
409
+ BottomRight() {
410
+ const address = { row: 0, column: 0 };
411
+ if (!this.entire_row)
412
+ address.column = this.end.column;
413
+ if (!this.entire_column)
414
+ address.row = this.end.row;
415
+ return address;
416
+ }
417
+ ContainsRow(row) {
418
+ return this.entire_column || (row >= this.start_.row && row <= this.end_.row);
419
+ }
420
+ ContainsColumn(column) {
421
+ return this.entire_row || (column >= this.start_.column && column <= this.end_.column);
422
+ }
423
+ Contains(address) {
424
+ return (this.entire_column || (address.row >= this.start_.row && address.row <= this.end_.row))
425
+ && (this.entire_row || (address.column >= this.start_.column && address.column <= this.end_.column));
426
+ }
427
+ /**
428
+ * returns true if this area completely contains the argument area
429
+ * (also if areas are ===, as a side effect). note that this returns
430
+ * true if A contains B, but not vice-versa
431
+ */
432
+ ContainsArea(area) {
433
+ return this.start.column <= area.start.column
434
+ && this.end.column >= area.end.column
435
+ && this.start.row <= area.start.row
436
+ && this.end.row >= area.end.row;
437
+ }
438
+ /**
439
+ * returns true if there's an intersection. note that this won't work
440
+ * if there are infinities -- needs real area ?
441
+ */
442
+ Intersects(area) {
443
+ return !(area.start.column > this.end.column
444
+ || this.start.column > area.end.column
445
+ || area.start.row > this.end.row
446
+ || this.start.row > area.end.row);
447
+ }
448
+ Equals(area) {
449
+ return area.start_.row === this.start_.row
450
+ && area.start_.column === this.start_.column
451
+ && area.end_.row === this.end_.row
452
+ && area.end_.column === this.end_.column;
453
+ }
454
+ Equals2(area) {
455
+ return area.start.row === this.start_.row
456
+ && area.start.column === this.start_.column
457
+ && area.end.row === this.end_.row
458
+ && area.end.column === this.end_.column;
459
+ }
460
+ Clone() {
461
+ return new Area(this.start, this.end); // ensure copies
462
+ }
463
+ /* removed, use iterator
464
+ public Array(): ICellAddress[] {
465
+ if (this.entire_column || this.entire_row) throw new Error('can\'t convert infinite area to array');
466
+ const array: ICellAddress[] = new Array<ICellAddress>(this.rows * this.columns);
467
+
468
+ const sheet_id = this.start_.sheet_id;
469
+ let index = 0;
470
+
471
+ // does this need sheet ID?
472
+
473
+ for (let row = this.start_.row; row <= this.end_.row; row++){
474
+ for (let column = this.start_.column; column <= this.end_.column; column++){
475
+ array[index++] = { row, column, sheet_id };
476
+ }
477
+ }
478
+ return array;
479
+ }
480
+ */
481
+ get left() {
482
+ const area = new Area(this.start_, this.end_);
483
+ area.end_.column = area.start_.column;
484
+ return area;
485
+ }
486
+ get right() {
487
+ const area = new Area(this.start_, this.end_);
488
+ area.start_.column = area.end_.column;
489
+ return area;
490
+ }
491
+ get top() {
492
+ const area = new Area(this.start_, this.end_);
493
+ area.end_.row = area.start_.row;
494
+ return area;
495
+ }
496
+ get bottom() {
497
+ const area = new Area(this.start_, this.end_);
498
+ area.start_.row = area.end_.row;
499
+ return area;
500
+ }
501
+ /** shifts range in place */
502
+ Shift(rows, columns) {
503
+ this.start_.row += rows;
504
+ this.start_.column += columns;
505
+ this.end_.row += rows;
506
+ this.end_.column += columns;
507
+ return this; // fluent
508
+ }
509
+ /** Resizes range in place so that it includes the given address */
510
+ ConsumeAddress(addr) {
511
+ if (!this.entire_row) {
512
+ if (addr.column < this.start_.column)
513
+ this.start_.column = addr.column;
514
+ if (addr.column > this.end_.column)
515
+ this.end_.column = addr.column;
516
+ }
517
+ if (!this.entire_column) {
518
+ if (addr.row < this.start_.row)
519
+ this.start_.row = addr.row;
520
+ if (addr.row > this.end_.row)
521
+ this.end_.row = addr.row;
522
+ }
523
+ }
524
+ /** Resizes range in place to be the requested shape */
525
+ Reshape(rows, columns) {
526
+ this.end_.row = this.start_.row + rows - 1;
527
+ this.end_.column = this.start_.column + columns - 1;
528
+ return this; // fluent
529
+ }
530
+ /** Resizes range in place so that it includes the given area (merge) */
531
+ ConsumeArea(area) {
532
+ this.ConsumeAddress(area.start);
533
+ this.ConsumeAddress(area.end);
534
+ }
535
+ /** resizes range in place (updates end) */
536
+ Resize(rows, columns) {
537
+ this.end_.row = this.start_.row + rows - 1;
538
+ this.end_.column = this.start_.column + columns - 1;
539
+ return this; // fluent
540
+ }
541
+ /* *
542
+ * preferred to straight iterator. actually in this class iterator
543
+ * is OK but in some other cases we'll want to generate like this
544
+ *
545
+ * eh I don't know about this inline function, is that going to be
546
+ * optimized out? ...
547
+ * /
548
+ public get contents(): Generator<{ row: number, column: number, sheet_id?: number }> {
549
+
550
+ if (this.entire_row || this.entire_column) {
551
+ throw new Error(`don't iterate infinite area`);
552
+ }
553
+
554
+ const sheet_id = this.start_.sheet_id;
555
+ const start_column = this.start_.column;
556
+ const end_column = this.end_.column;
557
+ const start_row = this.start_.row;
558
+ const end_row = this.end_.row;
559
+
560
+
561
+ function *generator() {
562
+ for (let column = start_column; column <= end_column; column++){
563
+ for (let row = start_row; row <= end_row; row++){
564
+ yield {column, row, sheet_id};
565
+ }
566
+ }
567
+ }
568
+
569
+ return generator();
570
+
571
+ }
572
+ */
573
+ /**
574
+ * modernizing. this is a proper iterator. generators are prettier
575
+ * but there's at least some performance cost -- I'm not sure how
576
+ * much, but it's non-zero.
577
+ */
578
+ [Symbol.iterator]() {
579
+ if (this.entire_row || this.entire_column) {
580
+ throw new Error(`don't iterate infinite area`);
581
+ }
582
+ let row = this.start_.row;
583
+ let column = this.start_.column;
584
+ // this now uses "live" references, so if the object were mutated
585
+ // during iteration the iterator would reflect those changes. which
586
+ // seems bad, but also correct.
587
+ return {
588
+ next: () => {
589
+ const value = { column, row, sheet_id: this.start_.sheet_id };
590
+ if (column > this.end_.column) {
591
+ return {
592
+ done: true,
593
+ value: undefined,
594
+ };
595
+ }
596
+ if (++row > this.end_.row) {
597
+ row = this.start_.row;
598
+ column++;
599
+ }
600
+ return { value };
601
+ },
602
+ };
603
+ }
604
+ /* * @deprecated * /
605
+ public Iterate(f: (...args: any[]) => any): void {
606
+ if (this.entire_column || this.entire_row) {
607
+ console.warn(`don't iterate infinite area`);
608
+ return;
609
+ }
610
+ for (let c = this.start_.column; c <= this.end_.column; c++){
611
+ for (let r = this.start_.row; r <= this.end_.row; r++){
612
+ f({column: c, row: r, sheet_id: this.start_.sheet_id});
613
+ }
614
+ }
615
+ }
616
+ */
617
+ /* *
618
+ * testing: we may have to polyfill for IE11, or just not use it at
619
+ * all, depending on support level... but it works OK (kind of a clumsy
620
+ * implementation though).
621
+ *
622
+ * as it turns out we don't really use iteration that much (I thought
623
+ * we did) so it's probably not worth the polyfill...
624
+ *
625
+ * /
626
+ public next(): IteratorResult<ICellAddress> {
627
+
628
+ // sanity
629
+
630
+ if (this.entire_column || this.entire_row) {
631
+ console.warn('don\'t iterate over infinte range');
632
+ return { value: undefined, done: true };
633
+ }
634
+
635
+ // return current, unless it's OOB; if so, advance
636
+
637
+ if (this.iterator_index.column > this.end.column) {
638
+ this.iterator_index.column = this.start_.column;
639
+ this.iterator_index.row++;
640
+
641
+ if (this.iterator_index.row > this.end.row) {
642
+ this.ResetIterator();
643
+ return { value: undefined, done: true };
644
+ }
645
+
646
+ }
647
+
648
+ const result = { value: { ...this.iterator_index }, done: false };
649
+ this.iterator_index.column++;
650
+
651
+ return result;
652
+ }
653
+
654
+ public [Symbol.iterator](): IterableIterator <ICellAddress> {
655
+ return this;
656
+ }
657
+ */
658
+ /**
659
+ * returns the range in A1-style spreadsheet addressing. if the
660
+ * entire sheet is selected, returns nothing (there's no way to
661
+ * express that in A1 notation). returns the row numbers for entire
662
+ * columns and vice-versa for rows.
663
+ */
664
+ get spreadsheet_label() {
665
+ let s;
666
+ if (this.entire_sheet)
667
+ return '';
668
+ if (this.entire_column) {
669
+ s = Area.ColumnToLabel(this.start_.column);
670
+ s += ':' + Area.ColumnToLabel(this.end_.column);
671
+ return s;
672
+ }
673
+ if (this.entire_row) {
674
+ s = String(this.start_.row + 1);
675
+ s += ':' + (this.end_.row + 1);
676
+ return s;
677
+ }
678
+ s = Area.CellAddressToLabel(this.start_);
679
+ if (this.columns > 1 || this.rows > 1)
680
+ return s + ':' + Area.CellAddressToLabel(this.end_);
681
+ return s;
682
+ }
683
+ /**
684
+ * FIXME: is this different than what would be returned if
685
+ * we just used the default json serializer? (...)
686
+ *
687
+ * NOTE: we could return just the start if size === 1. if
688
+ * you pass an undefined to the Area class ctor it will reuse
689
+ * the start.
690
+ *
691
+ */
692
+ toJSON() {
693
+ return {
694
+ start: { ...this.start_ },
695
+ end: { ...this.end_ },
696
+ };
697
+ /*
698
+ return {
699
+ start: {
700
+ row: this.start.row,
701
+ absolute_row: this.start.absolute_row,
702
+ column: this.start.column,
703
+ absolute_column: this.start.absolute_column,
704
+ },
705
+ end: {
706
+ row: this.end.row,
707
+ absolute_row: this.end.absolute_row,
708
+ column: this.end.column,
709
+ absolute_column: this.end.absolute_column,
710
+ },
711
+ };
712
+ */
713
+ }
714
+ }
715
+ //# sourceMappingURL=area.js.map