@trebco/treb 32.14.0 → 36.1.2

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 (266) 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/treb-export-worker.mjs +9 -2
  20. package/dist/treb-spreadsheet.mjs +7 -19
  21. package/dist/treb.d.ts +20 -4
  22. package/esbuild-composite.mjs +18 -6
  23. package/esbuild-utils.mjs +62 -3
  24. package/i18n/languages/treb-i18n-da.mjs +1 -1
  25. package/i18n/languages/treb-i18n-de.mjs +1 -1
  26. package/i18n/languages/treb-i18n-es.mjs +1 -1
  27. package/i18n/languages/treb-i18n-fr.mjs +1 -1
  28. package/i18n/languages/treb-i18n-it.mjs +1 -1
  29. package/i18n/languages/treb-i18n-nl.mjs +1 -1
  30. package/i18n/languages/treb-i18n-no.mjs +1 -1
  31. package/i18n/languages/treb-i18n-pl.mjs +1 -1
  32. package/i18n/languages/treb-i18n-pt.mjs +1 -1
  33. package/i18n/languages/treb-i18n-sv.mjs +1 -1
  34. package/ooxml-types/README.md +141 -0
  35. package/ooxml-types/package.json +5 -0
  36. package/ooxml-types/src/types/drawingml/chart.ts +327 -0
  37. package/ooxml-types/src/types/drawingml/index.ts +63 -0
  38. package/ooxml-types/src/types/drawingml/spreadsheetDrawing.ts +105 -0
  39. package/ooxml-types/src/types/drawingml/theme.ts +104 -0
  40. package/ooxml-types/src/types/index.ts +3 -0
  41. package/ooxml-types/src/types/package/contentTypes.ts +49 -0
  42. package/ooxml-types/src/types/package/docProps.ts +46 -0
  43. package/ooxml-types/src/types/package/index.ts +17 -0
  44. package/ooxml-types/src/types/package/relationships.ts +37 -0
  45. package/ooxml-types/src/types/spreadsheetml/columns.ts +20 -0
  46. package/ooxml-types/src/types/spreadsheetml/comments.ts +30 -0
  47. package/ooxml-types/src/types/spreadsheetml/dataFeatures.ts +261 -0
  48. package/ooxml-types/src/types/spreadsheetml/enums.ts +175 -0
  49. package/ooxml-types/src/types/spreadsheetml/index.ts +186 -0
  50. package/ooxml-types/src/types/spreadsheetml/metadata.ts +90 -0
  51. package/ooxml-types/src/types/spreadsheetml/misc.ts +35 -0
  52. package/ooxml-types/src/types/spreadsheetml/pageLayout.ts +83 -0
  53. package/ooxml-types/src/types/spreadsheetml/sharedStrings.ts +33 -0
  54. package/ooxml-types/src/types/spreadsheetml/sheetData.ts +70 -0
  55. package/ooxml-types/src/types/spreadsheetml/sheetProperties.ts +86 -0
  56. package/ooxml-types/src/types/spreadsheetml/sheetViews.ts +51 -0
  57. package/ooxml-types/src/types/spreadsheetml/sparkline.ts +46 -0
  58. package/ooxml-types/src/types/spreadsheetml/styles.ts +274 -0
  59. package/ooxml-types/src/types/spreadsheetml/table.ts +106 -0
  60. package/ooxml-types/src/types/spreadsheetml/util.ts +15 -0
  61. package/ooxml-types/src/types/spreadsheetml/workbook.ts +165 -0
  62. package/ooxml-types/src/types/spreadsheetml/worksheet.ts +60 -0
  63. package/package.json +13 -11
  64. package/treb-base-types/src/api_types.ts +1 -1
  65. package/treb-base-types/src/area-utils.ts +1 -1
  66. package/treb-base-types/src/area.ts +1 -1
  67. package/treb-base-types/src/basic_types.ts +1 -1
  68. package/treb-base-types/src/cell.ts +1 -1
  69. package/treb-base-types/src/cells.ts +1 -1
  70. package/treb-base-types/src/color.ts +1 -1
  71. package/treb-base-types/src/dom-utilities.ts +1 -1
  72. package/treb-base-types/src/evaluate-options.ts +1 -1
  73. package/treb-base-types/src/font-stack.ts +1 -1
  74. package/treb-base-types/src/gradient.ts +1 -1
  75. package/treb-base-types/src/import.ts +1 -1
  76. package/treb-base-types/src/index-standalone.ts +1 -1
  77. package/treb-base-types/src/index.ts +2 -1
  78. package/treb-base-types/src/layout.ts +1 -1
  79. package/treb-base-types/src/localization.ts +1 -1
  80. package/treb-base-types/src/rectangle.ts +1 -1
  81. package/treb-base-types/src/render_text.ts +7 -1
  82. package/treb-base-types/src/style.ts +1 -1
  83. package/treb-base-types/src/table.ts +1 -1
  84. package/treb-base-types/src/text_part.ts +1 -1
  85. package/treb-base-types/src/theme.ts +1 -1
  86. package/treb-base-types/src/union.ts +4 -1
  87. package/treb-base-types/src/value-type.ts +1 -1
  88. package/treb-base-types/src/worker-proxy.ts +294 -0
  89. package/treb-base-types/style/resizable.css +1 -1
  90. package/treb-calculator/src/calculator.ts +133 -14
  91. package/treb-calculator/src/complex-math.ts +1 -1
  92. package/treb-calculator/src/dag/array-vertex.ts +1 -1
  93. package/treb-calculator/src/dag/calculation_leaf_vertex.ts +1 -1
  94. package/treb-calculator/src/dag/graph.ts +1 -1
  95. package/treb-calculator/src/dag/spreadsheet_vertex.ts +1 -1
  96. package/treb-calculator/src/dag/spreadsheet_vertex_base.ts +1 -1
  97. package/treb-calculator/src/dag/state_leaf_vertex.ts +1 -1
  98. package/treb-calculator/src/dag/vertex.ts +1 -1
  99. package/treb-calculator/src/descriptors.ts +9 -1
  100. package/treb-calculator/src/expression-calculator.ts +1 -1
  101. package/treb-calculator/src/function-error.ts +1 -1
  102. package/treb-calculator/src/function-library.ts +1 -1
  103. package/treb-calculator/src/functions/base-functions.ts +8 -4
  104. package/treb-calculator/src/functions/beta.ts +1 -1
  105. package/treb-calculator/src/functions/checkbox.ts +1 -1
  106. package/treb-calculator/src/functions/complex-functions.ts +1 -1
  107. package/treb-calculator/src/functions/date-utils.ts +1 -1
  108. package/treb-calculator/src/functions/finance-functions.ts +2 -4
  109. package/treb-calculator/src/functions/fp.ts +1 -1
  110. package/treb-calculator/src/functions/function-utilities.ts +1 -1
  111. package/treb-calculator/src/functions/gamma.ts +1 -1
  112. package/treb-calculator/src/functions/information-functions.ts +1 -1
  113. package/treb-calculator/src/functions/lambda-functions.ts +4 -1
  114. package/treb-calculator/src/functions/matrix-functions.ts +1 -1
  115. package/treb-calculator/src/functions/normal.ts +1 -1
  116. package/treb-calculator/src/functions/regex-functions.ts +13 -4
  117. package/treb-calculator/src/functions/sparkline.ts +1 -1
  118. package/treb-calculator/src/functions/statistics-functions.ts +1 -1
  119. package/treb-calculator/src/functions/students-t.ts +1 -1
  120. package/treb-calculator/src/functions/text-functions.ts +5 -1
  121. package/treb-calculator/src/index.ts +1 -1
  122. package/treb-calculator/src/notifier-types.ts +1 -1
  123. package/treb-calculator/src/primitives.ts +1 -1
  124. package/treb-calculator/src/utilities.ts +1 -1
  125. package/treb-charts/src/chart-functions.ts +1 -1
  126. package/treb-charts/src/chart-types.ts +1 -1
  127. package/treb-charts/src/chart-utils.ts +1 -1
  128. package/treb-charts/src/chart.ts +1 -1
  129. package/treb-charts/src/default-chart-renderer.ts +1 -1
  130. package/treb-charts/src/index.ts +1 -1
  131. package/treb-charts/src/main.ts +1 -1
  132. package/treb-charts/src/quicksort.ts +1 -1
  133. package/treb-charts/src/rectangle.ts +1 -1
  134. package/treb-charts/src/renderer-type.ts +1 -1
  135. package/treb-charts/src/renderer.ts +1 -1
  136. package/treb-charts/src/util.ts +1 -1
  137. package/treb-charts/style/charts.scss +1 -1
  138. package/treb-data-model/src/annotation.ts +1 -1
  139. package/treb-data-model/src/conditional_format.ts +1 -1
  140. package/treb-data-model/src/data-validation.ts +1 -1
  141. package/treb-data-model/src/data_model.ts +32 -5
  142. package/treb-data-model/src/index.ts +1 -1
  143. package/treb-data-model/src/language-model.ts +1 -1
  144. package/treb-data-model/src/named.ts +1 -1
  145. package/treb-data-model/src/serialize_options.ts +1 -1
  146. package/treb-data-model/src/sheet.ts +1 -1
  147. package/treb-data-model/src/sheet_collection.ts +1 -1
  148. package/treb-data-model/src/sheet_selection.ts +1 -1
  149. package/treb-data-model/src/sheet_types.ts +1 -1
  150. package/treb-data-model/src/types.ts +1 -1
  151. package/treb-embed/src/content-types.d.ts +1 -1
  152. package/treb-embed/src/custom-element/global.d.ts +1 -1
  153. package/treb-embed/src/custom-element/spreadsheet-constructor.ts +1 -1
  154. package/treb-embed/src/custom-element/treb-global.ts +1 -1
  155. package/treb-embed/src/custom-element/treb-spreadsheet-element.ts +1 -1
  156. package/treb-embed/src/embedded-spreadsheet.ts +342 -149
  157. package/treb-embed/src/index.ts +1 -1
  158. package/treb-embed/src/options.ts +4 -2
  159. package/treb-embed/src/plugin.ts +1 -1
  160. package/treb-embed/src/progress-dialog.ts +1 -1
  161. package/treb-embed/src/selection-state.ts +1 -1
  162. package/treb-embed/src/spinner.ts +1 -1
  163. package/treb-embed/src/toolbar-message.ts +6 -1
  164. package/treb-embed/src/types.ts +13 -1
  165. package/treb-embed/style/autocomplete.scss +1 -1
  166. package/treb-embed/style/dark-theme.scss +1 -1
  167. package/treb-embed/style/defaults.scss +1 -1
  168. package/treb-embed/style/dialog.scss +1 -1
  169. package/treb-embed/style/dropdown-select.scss +1 -1
  170. package/treb-embed/style/font-stacks.scss +1 -1
  171. package/treb-embed/style/formula-bar.scss +1 -1
  172. package/treb-embed/style/grid.scss +1 -1
  173. package/treb-embed/style/layout.scss +1 -1
  174. package/treb-embed/style/mouse-mask.scss +1 -1
  175. package/treb-embed/style/note.scss +1 -1
  176. package/treb-embed/style/overlay-editor.scss +1 -1
  177. package/treb-embed/style/spinner.scss +1 -1
  178. package/treb-embed/style/tab-bar.scss +1 -1
  179. package/treb-embed/style/table.scss +1 -1
  180. package/treb-embed/style/theme-defaults.scss +1 -1
  181. package/treb-embed/style/toolbar.scss +1 -1
  182. package/treb-embed/style/tooltip.scss +1 -1
  183. package/treb-embed/style/treb-icons.scss +1 -1
  184. package/treb-embed/style/treb-spreadsheet-element.scss +1 -1
  185. package/treb-embed/style/z-index.scss +1 -1
  186. package/treb-export/src/address-type.ts +1 -1
  187. package/treb-export/src/base-template.ts +1 -1
  188. package/treb-export/src/column-width.ts +1 -1
  189. package/treb-export/src/drawing/bubble-chart-template.ts +1 -1
  190. package/treb-export/src/drawing/chart-template-components2.ts +1 -1
  191. package/treb-export/src/drawing/chart.ts +1 -1
  192. package/treb-export/src/drawing/column-chart-template2.ts +1 -1
  193. package/treb-export/src/drawing/donut-chart-template2.ts +1 -1
  194. package/treb-export/src/drawing/drawing.ts +1 -1
  195. package/treb-export/src/drawing/embedded-image.ts +1 -1
  196. package/treb-export/src/drawing/scatter-chart-template2.ts +1 -1
  197. package/treb-export/src/export.ts +10 -6
  198. package/treb-export/src/import-export-messages.ts +61 -0
  199. package/treb-export/src/import.ts +318 -301
  200. package/treb-export/src/index.worker.ts +85 -53
  201. package/treb-export/src/metadata.ts +71 -3
  202. package/treb-export/src/ooxml.ts +47 -0
  203. package/treb-export/src/relationship.ts +1 -1
  204. package/treb-export/src/shared-strings.ts +19 -15
  205. package/treb-export/src/template-2.ts +1 -1
  206. package/treb-export/src/unescape_xml.ts +1 -1
  207. package/treb-export/src/workbook-sheet.ts +11 -6
  208. package/treb-export/src/workbook-style.ts +137 -25
  209. package/treb-export/src/workbook-theme.ts +20 -4
  210. package/treb-export/src/workbook.ts +85 -88
  211. package/treb-export/src/xml-test.ts +1 -1
  212. package/treb-export/src/xml-utils.ts +1 -1
  213. package/treb-export/src/zip-wrapper.ts +1 -1
  214. package/treb-export/tsconfig.json +2 -1
  215. package/treb-format/src/format.test.ts +1 -1
  216. package/treb-format/src/format.ts +12 -5
  217. package/treb-format/src/format_cache.ts +3 -3
  218. package/treb-format/src/format_parser.ts +1 -1
  219. package/treb-format/src/index.ts +1 -1
  220. package/treb-format/src/number_format_section.ts +1 -1
  221. package/treb-format/src/value_parser.ts +1 -1
  222. package/treb-grid/src/editors/autocomplete.ts +1 -1
  223. package/treb-grid/src/editors/autocomplete_matcher.ts +1 -1
  224. package/treb-grid/src/editors/editor.ts +15 -6
  225. package/treb-grid/src/editors/external_editor.ts +33 -8
  226. package/treb-grid/src/editors/formula_bar.ts +12 -1
  227. package/treb-grid/src/editors/overlay_editor.ts +4 -1
  228. package/treb-grid/src/index.ts +1 -1
  229. package/treb-grid/src/layout/base_layout.ts +1 -1
  230. package/treb-grid/src/layout/grid_layout.ts +1 -1
  231. package/treb-grid/src/layout/mock-layout.ts +1 -1
  232. package/treb-grid/src/render/selection-renderer.ts +1 -1
  233. package/treb-grid/src/render/svg_header_overlay.ts +1 -1
  234. package/treb-grid/src/render/svg_selection_block.ts +1 -1
  235. package/treb-grid/src/render/tile_renderer.ts +36 -7
  236. package/treb-grid/src/types/border_constants.ts +1 -1
  237. package/treb-grid/src/types/clipboard_data.ts +1 -1
  238. package/treb-grid/src/types/clipboard_data2.ts +1 -1
  239. package/treb-grid/src/types/drag_mask.ts +1 -1
  240. package/treb-grid/src/types/external_editor_config.ts +1 -1
  241. package/treb-grid/src/types/grid.ts +181 -40
  242. package/treb-grid/src/types/grid_base.ts +7 -4
  243. package/treb-grid/src/types/grid_command.ts +7 -1
  244. package/treb-grid/src/types/grid_events.ts +2 -1
  245. package/treb-grid/src/types/grid_options.ts +1 -1
  246. package/treb-grid/src/types/scale-control.ts +1 -1
  247. package/treb-grid/src/types/set_range_options.ts +1 -1
  248. package/treb-grid/src/types/tab_bar.ts +1 -1
  249. package/treb-grid/src/types/tile.ts +1 -1
  250. package/treb-grid/src/types/update_flags.ts +1 -1
  251. package/treb-grid/src/util/fontmetrics.ts +1 -1
  252. package/treb-grid/src/util/ua.ts +1 -1
  253. package/treb-parser/src/csv-parser.ts +1 -1
  254. package/treb-parser/src/index.ts +1 -1
  255. package/treb-parser/src/md-parser.ts +1 -1
  256. package/treb-parser/src/parser-types.ts +1 -1
  257. package/treb-parser/src/parser.ts +1 -1
  258. package/treb-utils/src/event_source.ts +1 -1
  259. package/treb-utils/src/ievent_source.ts +1 -1
  260. package/treb-utils/src/index.ts +1 -1
  261. package/treb-utils/src/measurement.ts +1 -1
  262. package/treb-utils/src/scale.ts +1 -1
  263. package/treb-utils/src/serialize_html.ts +1 -1
  264. package/treb-utils/src/validate_uri.ts +1 -1
  265. package/tsproject.json +2 -3
  266. package/treb-embed/src/export-worker.ts +0 -44
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -374,7 +374,7 @@ export class Editor<E = FormulaEditorEvent> extends EventSource<E|FormulaEditorE
374
374
  /**
375
375
  *
376
376
  */
377
- public InsertReference(reference: string) {
377
+ public InsertReference(reference: string, toggle_reference_type = false, typed_reference_list: string[] = []) {
378
378
 
379
379
  if (!this.active_editor) {
380
380
  return;
@@ -421,6 +421,8 @@ export class Editor<E = FormulaEditorEvent> extends EventSource<E|FormulaEditorE
421
421
 
422
422
  const substrings = this.SubstringToCaret2(this.active_editor.node);
423
423
 
424
+ // console.info("Case 1", substrings);
425
+
424
426
  /*
425
427
  // console.info('case 1');
426
428
 
@@ -451,7 +453,14 @@ export class Editor<E = FormulaEditorEvent> extends EventSource<E|FormulaEditorE
451
453
  const parent = range.startContainer.parentElement;
452
454
  if (parent instanceof view.HTMLElement && parent.dataset.reference) {
453
455
 
454
- // console.info('case 2');
456
+ if (toggle_reference_type && typed_reference_list.length) {
457
+ for (const [index, ref] of typed_reference_list.entries()) {
458
+ if (ref === parent.textContent) {
459
+ reference = typed_reference_list[index + 1] || typed_reference_list[0];
460
+ break;
461
+ }
462
+ }
463
+ }
455
464
 
456
465
  // replace text
457
466
  parent.textContent = reference;
@@ -581,7 +590,7 @@ export class Editor<E = FormulaEditorEvent> extends EventSource<E|FormulaEditorE
581
590
 
582
591
  for (const support of this.nodes) {
583
592
  for (const area of support.references || []) {
584
- const label = this.model.AddressToLabel(area);
593
+ const label = this.model.AddressToLabel(area, true);
585
594
  if (!map.has(label)) {
586
595
  map.set(label, area);
587
596
  indexes.set(label, indexes.size);
@@ -733,7 +742,7 @@ export class Editor<E = FormulaEditorEvent> extends EventSource<E|FormulaEditorE
733
742
 
734
743
  for (const entry of reference_list) {
735
744
 
736
- const label = this.model.AddressToLabel(entry); // , this.view.active_sheet);
745
+ const label = this.model.AddressToLabel(entry, true); // , this.view.active_sheet);
737
746
  const area = IsCellAddress(entry) ?
738
747
  new Area(entry) :
739
748
  new Area(entry.start, entry.end);
@@ -767,7 +776,7 @@ export class Editor<E = FormulaEditorEvent> extends EventSource<E|FormulaEditorE
767
776
  * @param options
768
777
  */
769
778
  protected UpdateReferences(descriptor: NodeDescriptor, references: Area[] = []) {
770
- descriptor.node.dataset.references = JSON.stringify(references.map(entry => this.model.AddressToLabel(entry)));
779
+ descriptor.node.dataset.references = JSON.stringify(references.map(entry => this.model.AddressToLabel(entry, true)));
771
780
  descriptor.references = references;
772
781
  }
773
782
 
@@ -14,32 +14,30 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
21
21
 
22
-
23
22
  import { Editor, type NodeDescriptor } from './editor';
24
23
 
24
+ export type KeyEventCallbackType = (event: KeyboardEvent) => void;
25
+
25
26
  export class ExternalEditor extends Editor {
26
27
 
28
+ public key_event_callback?: KeyEventCallbackType;
29
+
27
30
  public get active() {
28
31
  return this.nodes.length > 0;
29
32
  }
30
33
 
31
34
  public Reset() {
32
35
  this.AttachNodes();
36
+ this.key_event_callback = undefined;
33
37
  }
34
38
 
35
39
  /**
36
40
  * attach to a set of nodes (one is fine).
37
- *
38
- * FIXME: since this is not used in subclasses for ICE and formula bar,
39
- * perhaps we should move it into a new subclass specifically for
40
- * external editor. we can add some flags as well. TODO/FIXME
41
- *
42
- * update modifying how this works. we will now watch focus ourselves.
43
41
  */
44
42
  public AttachNodes(nodes: HTMLElement[] = [], assume_formula = true) {
45
43
 
@@ -111,6 +109,33 @@ export class ExternalEditor extends Editor {
111
109
  this.active_editor = undefined;
112
110
  });
113
111
 
112
+ this.RegisterListener(descriptor, 'keydown', (event: KeyboardEvent) => {
113
+ if (this.selecting) {
114
+ switch (event.key) {
115
+ case 'ArrowDown':
116
+ case 'ArrowUp':
117
+ case 'ArrowLeft':
118
+ case 'ArrowRight':
119
+ break;
120
+
121
+ case '/':
122
+ if (event.ctrlKey) {
123
+ break;
124
+ }
125
+ // otherwise fall through
126
+
127
+ default:
128
+ return;
129
+ }
130
+ }
131
+
132
+ // we need to pass this event up to grid to handle. we might
133
+ // also want to filter it (let the handler dp that)
134
+
135
+ this.key_event_callback?.(event);
136
+
137
+ });
138
+
114
139
  this.RegisterListener(descriptor, 'input', (event: Event) => {
115
140
 
116
141
  // we're filtering on trusted here because we send an event.
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -51,11 +51,16 @@ export interface TollEvent {
51
51
  value?: string;
52
52
  }
53
53
 
54
+ export interface ToggleReferenceEvent {
55
+ type: 'toggle-reference';
56
+ }
57
+
54
58
  export type FormulaBar2Event
55
59
  = FormulaButtonEvent
56
60
  // | FormulaBarResizeEvent
57
61
  | AddressLabelEvent
58
62
  | TollEvent
63
+ | ToggleReferenceEvent
59
64
  ;
60
65
 
61
66
  // ---
@@ -553,6 +558,12 @@ export class FormulaBar extends Editor<FormulaBar2Event|FormulaEditorEvent> {
553
558
  }
554
559
 
555
560
  switch (event.key){
561
+ case 'F4':
562
+ if (this.selecting) {
563
+ this.Publish({ type: 'toggle-reference' });
564
+ }
565
+ break;
566
+
556
567
  case 'Enter':
557
568
  case 'Tab':
558
569
  {
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -446,6 +446,9 @@ export class OverlayEditor extends Editor<ResetSelectionEvent> {
446
446
 
447
447
  switch (event.key) {
448
448
 
449
+ case 'F4':
450
+ return undefined;
451
+
449
452
  case 'Enter':
450
453
  case 'Tab':
451
454
  return 'commit';
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -886,7 +886,8 @@ export class TileRenderer {
886
886
  const render_part: RenderTextPart = {
887
887
  width: mt_width,
888
888
  text: part.text,
889
- hidden: part.flag === TextPartFlag.hidden
889
+ hidden: part.flag === TextPartFlag.hidden,
890
+ indent: part.flag === TextPartFlag.indent,
890
891
  };
891
892
 
892
893
  strings.push(render_part);
@@ -1067,7 +1068,7 @@ export class TileRenderer {
1067
1068
 
1068
1069
  max_width = Math.max(max_width, last.width);
1069
1070
 
1070
- const line_string = line2.map((metric) => {
1071
+ const line_string: RenderTextPart[] = line2.map((metric) => {
1071
1072
  return {
1072
1073
  ...metric.part,
1073
1074
  hidden: false,
@@ -1078,10 +1079,10 @@ export class TileRenderer {
1078
1079
 
1079
1080
  if (style.indent) {
1080
1081
  if (align === 'right') {
1081
- line_string.push({ text: indent, hidden: false, width: indent_width });
1082
+ line_string.push({ text: indent, hidden: false, width: indent_width, indent: true });
1082
1083
  }
1083
1084
  else if (align === 'left') {
1084
- line_string.unshift({ text: indent, hidden: false, width: indent_width });
1085
+ line_string.unshift({ text: indent, hidden: false, width: indent_width, indent: true });
1085
1086
  }
1086
1087
  }
1087
1088
 
@@ -1100,6 +1101,7 @@ export class TileRenderer {
1100
1101
  for (const line of md) {
1101
1102
  const parts: RenderTextPart[] = [];
1102
1103
 
1104
+ /*
1103
1105
  if (style.indent) {
1104
1106
  if (align === 'right') {
1105
1107
  line.push({ text: indent });
@@ -1108,8 +1110,25 @@ export class TileRenderer {
1108
1110
  line.unshift({ text: indent });
1109
1111
  }
1110
1112
  }
1113
+ */
1111
1114
 
1112
1115
  let line_width = 0;
1116
+ let indent_width = 0;
1117
+
1118
+ if (style.indent) {
1119
+ context.font = fonts.base;
1120
+ indent_width = context.measureText(indent).width;
1121
+ }
1122
+
1123
+ if (style.indent && align === 'left') {
1124
+ line_width += indent_width;
1125
+ parts.push({
1126
+ text: indent,
1127
+ hidden: false,
1128
+ width: indent_width,
1129
+ indent: true,
1130
+ });
1131
+ }
1113
1132
 
1114
1133
  for (const element of line) {
1115
1134
 
@@ -1139,6 +1158,16 @@ export class TileRenderer {
1139
1158
 
1140
1159
  }
1141
1160
 
1161
+ if (style.indent && align === 'right') {
1162
+ line_width += indent_width;
1163
+ parts.push({
1164
+ text: indent,
1165
+ hidden: false,
1166
+ width: indent_width,
1167
+ indent: true,
1168
+ });
1169
+ }
1170
+
1142
1171
  max_width = Math.max(max_width, line_width);
1143
1172
 
1144
1173
  strings.push(parts);
@@ -2211,12 +2240,12 @@ export class TileRenderer {
2211
2240
  context.fillText(part.text, x, baseline);
2212
2241
  }
2213
2242
 
2214
- if (style.underline) {
2243
+ if (style.underline && !part.indent) {
2215
2244
  context.moveTo(x, underline_y);
2216
2245
  context.lineTo(x + part.width, underline_y);
2217
2246
  }
2218
2247
 
2219
- if (style.strike || part.strike) {
2248
+ if ((style.strike || part.strike) && !part.indent) {
2220
2249
  context.moveTo(x, strike_y);
2221
2250
  context.lineTo(x + part.width, strike_y);
2222
2251
  }
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */
@@ -14,7 +14,7 @@
14
14
  * You should have received a copy of the GNU General Public License along
15
15
  * with TREB. If not, see <https://www.gnu.org/licenses/>.
16
16
  *
17
- * Copyright 2022-2025 trebco, llc.
17
+ * Copyright 2022-2026 trebco, llc.
18
18
  * info@treb.app
19
19
  *
20
20
  */