@rowsncolumns/spreadsheet 10.3.1 → 10.4.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 (452) hide show
  1. package/dist/cjs/api/banded-ranges.d.ts.map +1 -1
  2. package/dist/cjs/api/banded-ranges.js +40 -14
  3. package/dist/cjs/api/calculated-column-fill.d.ts +43 -0
  4. package/dist/cjs/api/calculated-column-fill.d.ts.map +1 -0
  5. package/dist/cjs/api/calculated-column-fill.js +16 -0
  6. package/dist/cjs/api/chart-sheet.d.ts +8 -0
  7. package/dist/cjs/api/chart-sheet.d.ts.map +1 -0
  8. package/dist/cjs/api/chart-sheet.js +20 -0
  9. package/dist/cjs/api/chart-source-ranges.d.ts +64 -0
  10. package/dist/cjs/api/chart-source-ranges.d.ts.map +1 -0
  11. package/dist/cjs/api/chart-source-ranges.js +175 -0
  12. package/dist/cjs/api/selections.d.ts +3 -3
  13. package/dist/cjs/api/selections.d.ts.map +1 -1
  14. package/dist/cjs/api/selections.js +28 -2
  15. package/dist/cjs/api/spreadsheet-api.d.ts +16 -3
  16. package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
  17. package/dist/cjs/api/spreadsheet-api.js +22 -2
  18. package/dist/cjs/api/table-auto-expansion.d.ts +37 -0
  19. package/dist/cjs/api/table-auto-expansion.d.ts.map +1 -0
  20. package/dist/cjs/api/table-auto-expansion.js +16 -0
  21. package/dist/cjs/api/table.d.ts +49 -1
  22. package/dist/cjs/api/table.d.ts.map +1 -1
  23. package/dist/cjs/api/table.js +145 -1
  24. package/dist/cjs/api/validation.d.ts +26 -1
  25. package/dist/cjs/api/validation.d.ts.map +1 -1
  26. package/dist/cjs/api/validation.js +127 -9
  27. package/dist/cjs/atoms/calculated-column-fill.atom.d.ts +15 -0
  28. package/dist/cjs/atoms/calculated-column-fill.atom.d.ts.map +1 -0
  29. package/dist/cjs/atoms/calculated-column-fill.atom.js +18 -0
  30. package/dist/cjs/atoms/chart-actions.atom.d.ts +40 -0
  31. package/dist/cjs/atoms/chart-actions.atom.d.ts.map +1 -0
  32. package/dist/cjs/atoms/chart-actions.atom.js +66 -0
  33. package/dist/cjs/atoms/index.d.ts +5 -0
  34. package/dist/cjs/atoms/index.d.ts.map +1 -1
  35. package/dist/cjs/atoms/index.js +5 -0
  36. package/dist/cjs/atoms/move-chart-dialog.atom.d.ts +28 -0
  37. package/dist/cjs/atoms/move-chart-dialog.atom.d.ts.map +1 -0
  38. package/dist/cjs/atoms/move-chart-dialog.atom.js +34 -0
  39. package/dist/cjs/atoms/selected-chart-embed.atom.d.ts +9 -1
  40. package/dist/cjs/atoms/selected-chart-embed.atom.d.ts.map +1 -1
  41. package/dist/cjs/atoms/selected-chart-embed.atom.js +18 -1
  42. package/dist/cjs/atoms/selected-chart-series.atom.d.ts +24 -0
  43. package/dist/cjs/atoms/selected-chart-series.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/selected-chart-series.atom.js +11 -0
  45. package/dist/cjs/atoms/sheet-context.atom.d.ts +2 -0
  46. package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -1
  47. package/dist/cjs/atoms/sheet-context.atom.js +5 -2
  48. package/dist/cjs/atoms/sparkline-dialog.atom.d.ts +34 -0
  49. package/dist/cjs/atoms/sparkline-dialog.atom.d.ts.map +1 -0
  50. package/dist/cjs/atoms/sparkline-dialog.atom.js +30 -0
  51. package/dist/cjs/atoms/table-auto-expansion.atom.d.ts +14 -0
  52. package/dist/cjs/atoms/table-auto-expansion.atom.d.ts.map +1 -0
  53. package/dist/cjs/atoms/table-auto-expansion.atom.js +17 -0
  54. package/dist/cjs/components/calculated-column-smart-tag/index.d.ts +25 -0
  55. package/dist/cjs/components/calculated-column-smart-tag/index.d.ts.map +1 -0
  56. package/dist/cjs/components/calculated-column-smart-tag/index.js +31 -0
  57. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  58. package/dist/cjs/components/canvas-grid/index.js +393 -72
  59. package/dist/cjs/components/canvas-grid/typings.d.ts +127 -14
  60. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  61. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  62. package/dist/cjs/components/cell/index.js +3 -3
  63. package/dist/cjs/components/cell/typings.d.ts +13 -0
  64. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  65. package/dist/cjs/components/cell-filter/index.d.ts.map +1 -1
  66. package/dist/cjs/components/cell-filter/index.js +13 -2
  67. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  68. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +4 -1
  69. package/dist/cjs/components/cell-structured/sparkline-math.d.ts +28 -5
  70. package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
  71. package/dist/cjs/components/cell-structured/sparkline-math.js +93 -5
  72. package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
  73. package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
  74. package/dist/cjs/components/cell-structured/sparkline.js +3 -3
  75. package/dist/cjs/components/cell-structured/types.d.ts +1 -1
  76. package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
  77. package/dist/cjs/components/chart-sheet-view/index.d.ts +27 -0
  78. package/dist/cjs/components/chart-sheet-view/index.d.ts.map +1 -0
  79. package/dist/cjs/components/chart-sheet-view/index.js +35 -0
  80. package/dist/cjs/components/context-menu/embed-context-menu.d.ts +48 -0
  81. package/dist/cjs/components/context-menu/embed-context-menu.d.ts.map +1 -0
  82. package/dist/cjs/components/context-menu/embed-context-menu.js +123 -0
  83. package/dist/cjs/components/context-menu/index.d.ts +23 -2
  84. package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
  85. package/dist/cjs/components/context-menu/index.js +217 -39
  86. package/dist/cjs/components/context-menu/total-row-function-menu.d.ts +33 -0
  87. package/dist/cjs/components/context-menu/total-row-function-menu.d.ts.map +1 -0
  88. package/dist/cjs/components/context-menu/total-row-function-menu.js +58 -0
  89. package/dist/cjs/components/context-menu/total-row-functions.d.ts +12 -12
  90. package/dist/cjs/components/context-menu/total-row-functions.d.ts.map +1 -1
  91. package/dist/cjs/components/context-menu/total-row-functions.js +39 -39
  92. package/dist/cjs/components/embeds/chart-component.d.ts +17 -0
  93. package/dist/cjs/components/embeds/chart-component.d.ts.map +1 -1
  94. package/dist/cjs/components/embeds/embed-draggable.d.ts +61 -4
  95. package/dist/cjs/components/embeds/embed-draggable.d.ts.map +1 -1
  96. package/dist/cjs/components/embeds/embed-draggable.js +214 -39
  97. package/dist/cjs/components/filter-box/date-tree.d.ts +28 -0
  98. package/dist/cjs/components/filter-box/date-tree.d.ts.map +1 -0
  99. package/dist/cjs/components/filter-box/date-tree.js +147 -0
  100. package/dist/cjs/components/filter-box/filter-by-condition.d.ts +14 -2
  101. package/dist/cjs/components/filter-box/filter-by-condition.d.ts.map +1 -1
  102. package/dist/cjs/components/filter-box/filter-by-condition.js +95 -19
  103. package/dist/cjs/components/filter-box/filter-by-value.d.ts.map +1 -1
  104. package/dist/cjs/components/filter-box/filter-by-value.js +126 -40
  105. package/dist/cjs/components/filter-box/index.d.ts +7 -1
  106. package/dist/cjs/components/filter-box/index.d.ts.map +1 -1
  107. package/dist/cjs/components/filter-box/index.js +102 -11
  108. package/dist/cjs/components/move-chart-dialog/index.d.ts +34 -0
  109. package/dist/cjs/components/move-chart-dialog/index.d.ts.map +1 -0
  110. package/dist/cjs/components/move-chart-dialog/index.js +96 -0
  111. package/dist/cjs/components/print-preview/page-block.d.ts +9 -1
  112. package/dist/cjs/components/print-preview/page-block.d.ts.map +1 -1
  113. package/dist/cjs/components/print-preview/page-block.js +28 -2
  114. package/dist/cjs/components/print-preview/print-preview-dialog.d.ts +8 -1
  115. package/dist/cjs/components/print-preview/print-preview-dialog.d.ts.map +1 -1
  116. package/dist/cjs/components/print-preview/print-preview-dialog.js +144 -3
  117. package/dist/cjs/components/print-preview/run-print.d.ts.map +1 -1
  118. package/dist/cjs/components/print-preview/run-print.js +19 -7
  119. package/dist/cjs/components/print-preview/use-page-layout.d.ts +47 -0
  120. package/dist/cjs/components/print-preview/use-page-layout.d.ts.map +1 -1
  121. package/dist/cjs/components/print-preview/use-page-layout.js +81 -7
  122. package/dist/cjs/components/selection/index.d.ts +1 -1
  123. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  124. package/dist/cjs/components/selection/index.js +6 -2
  125. package/dist/cjs/components/selection/types.d.ts +15 -0
  126. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  127. package/dist/cjs/components/sheet-tabs/index.d.ts.map +1 -1
  128. package/dist/cjs/components/sheet-tabs/index.js +2 -2
  129. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts +1 -1
  130. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  131. package/dist/cjs/components/sheet-tabs/sheet-tab.js +3 -1
  132. package/dist/cjs/components/sparkline-dialog/index.d.ts +43 -0
  133. package/dist/cjs/components/sparkline-dialog/index.d.ts.map +1 -0
  134. package/dist/cjs/components/sparkline-dialog/index.js +127 -0
  135. package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -1
  136. package/dist/cjs/components/subtotal-dialog/index.js +10 -1
  137. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  138. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  139. package/dist/cjs/components/table-auto-expansion-smart-tag/index.js +31 -0
  140. package/dist/cjs/components/toolbar/index.d.ts +1 -0
  141. package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
  142. package/dist/cjs/components/toolbar/index.js +1 -0
  143. package/dist/cjs/components/toolbar/insert-menu.d.ts +2 -1
  144. package/dist/cjs/components/toolbar/insert-menu.d.ts.map +1 -1
  145. package/dist/cjs/components/toolbar/insert-menu.js +24 -1
  146. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts +4 -1
  147. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  148. package/dist/cjs/components/toolbar/merge-cells-selector.js +11 -5
  149. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +31 -0
  150. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -0
  151. package/dist/cjs/components/toolbar/sparkline-actions.js +273 -0
  152. package/dist/cjs/components/toolbar/table-actions.d.ts +9 -1
  153. package/dist/cjs/components/toolbar/table-actions.d.ts.map +1 -1
  154. package/dist/cjs/components/toolbar/table-actions.js +17 -7
  155. package/dist/cjs/components/toolbar/table-style-selector.d.ts +38 -2
  156. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  157. package/dist/cjs/components/toolbar/table-style-selector.js +241 -389
  158. package/dist/cjs/config.d.ts +2 -0
  159. package/dist/cjs/config.d.ts.map +1 -1
  160. package/dist/cjs/config.js +31 -1
  161. package/dist/cjs/helpers.d.ts +1 -1
  162. package/dist/cjs/helpers.d.ts.map +1 -1
  163. package/dist/cjs/helpers.js +13 -2
  164. package/dist/cjs/hooks/use-cell-renderer.d.ts +16 -1
  165. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  166. package/dist/cjs/hooks/use-cell-renderer.js +20 -8
  167. package/dist/cjs/hooks/use-chart-clipboard.d.ts +55 -0
  168. package/dist/cjs/hooks/use-chart-clipboard.d.ts.map +1 -0
  169. package/dist/cjs/hooks/use-chart-clipboard.js +231 -0
  170. package/dist/cjs/hooks/use-chart-source-ranges.d.ts +27 -0
  171. package/dist/cjs/hooks/use-chart-source-ranges.d.ts.map +1 -0
  172. package/dist/cjs/hooks/use-chart-source-ranges.js +211 -0
  173. package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
  174. package/dist/cjs/hooks/use-context-setter.js +3 -1
  175. package/dist/cjs/hooks/use-editable.d.ts +9 -1
  176. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  177. package/dist/cjs/hooks/use-editable.js +25 -1
  178. package/dist/cjs/hooks/use-embeds-charts.d.ts +64 -4
  179. package/dist/cjs/hooks/use-embeds-charts.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-embeds-charts.js +412 -41
  181. package/dist/cjs/hooks/use-grid-children.d.ts +2 -2
  182. package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
  183. package/dist/cjs/hooks/use-grid-children.js +12 -6
  184. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  185. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-keyboard-handler.d.ts +2 -1
  187. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  188. package/dist/cjs/hooks/use-keyboard-handler.js +8 -2
  189. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts +17 -0
  190. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  191. package/dist/cjs/hooks/use-reveal-chart-embed.js +40 -0
  192. package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -1
  193. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  194. package/dist/cjs/hooks/use-selection-renderer.js +37 -7
  195. package/dist/cjs/hooks/use-selection.d.ts +9 -1
  196. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  197. package/dist/cjs/hooks/use-selection.js +118 -30
  198. package/dist/cjs/hooks/use-structured-reference-selection.d.ts +1 -1
  199. package/dist/cjs/hooks/use-structured-reference-selection.d.ts.map +1 -1
  200. package/dist/cjs/hooks/use-structured-reference-selection.js +10 -0
  201. package/dist/cjs/hooks/use-table-hit-zones.d.ts +61 -0
  202. package/dist/cjs/hooks/use-table-hit-zones.d.ts.map +1 -0
  203. package/dist/cjs/hooks/use-table-hit-zones.js +157 -0
  204. package/dist/cjs/hooks/use-table-resizer.d.ts +7 -0
  205. package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-table-resizer.js +22 -10
  207. package/dist/cjs/index.d.ts +13 -0
  208. package/dist/cjs/index.d.ts.map +1 -1
  209. package/dist/cjs/index.js +17 -1
  210. package/dist/cjs/release-date.js +1 -1
  211. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  212. package/dist/cjs/types.d.ts +289 -4
  213. package/dist/cjs/types.d.ts.map +1 -1
  214. package/dist/cjs/utils/copy-as-picture.d.ts +13 -0
  215. package/dist/cjs/utils/copy-as-picture.d.ts.map +1 -0
  216. package/dist/cjs/utils/copy-as-picture.js +70 -0
  217. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts +19 -0
  218. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  219. package/dist/cjs/utils/pivot-chart-field-buttons.js +25 -0
  220. package/dist/cjs/utils/z-order.d.ts +47 -0
  221. package/dist/cjs/utils/z-order.d.ts.map +1 -0
  222. package/dist/cjs/utils/z-order.js +124 -0
  223. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  224. package/dist/esm/api/banded-ranges.js +39 -12
  225. package/dist/esm/api/calculated-column-fill.d.ts +43 -0
  226. package/dist/esm/api/calculated-column-fill.d.ts.map +1 -0
  227. package/dist/esm/api/calculated-column-fill.js +10 -0
  228. package/dist/esm/api/chart-sheet.d.ts +8 -0
  229. package/dist/esm/api/chart-sheet.d.ts.map +1 -0
  230. package/dist/esm/api/chart-sheet.js +15 -0
  231. package/dist/esm/api/chart-source-ranges.d.ts +64 -0
  232. package/dist/esm/api/chart-source-ranges.d.ts.map +1 -0
  233. package/dist/esm/api/chart-source-ranges.js +168 -0
  234. package/dist/esm/api/selections.d.ts +3 -3
  235. package/dist/esm/api/selections.d.ts.map +1 -1
  236. package/dist/esm/api/selections.js +26 -2
  237. package/dist/esm/api/spreadsheet-api.d.ts +16 -3
  238. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
  239. package/dist/esm/api/spreadsheet-api.js +18 -2
  240. package/dist/esm/api/table-auto-expansion.d.ts +37 -0
  241. package/dist/esm/api/table-auto-expansion.d.ts.map +1 -0
  242. package/dist/esm/api/table-auto-expansion.js +10 -0
  243. package/dist/esm/api/table.d.ts +49 -1
  244. package/dist/esm/api/table.d.ts.map +1 -1
  245. package/dist/esm/api/table.js +138 -1
  246. package/dist/esm/api/validation.d.ts +26 -1
  247. package/dist/esm/api/validation.d.ts.map +1 -1
  248. package/dist/esm/api/validation.js +119 -9
  249. package/dist/esm/atoms/calculated-column-fill.atom.d.ts +15 -0
  250. package/dist/esm/atoms/calculated-column-fill.atom.d.ts.map +1 -0
  251. package/dist/esm/atoms/calculated-column-fill.atom.js +12 -0
  252. package/dist/esm/atoms/chart-actions.atom.d.ts +40 -0
  253. package/dist/esm/atoms/chart-actions.atom.d.ts.map +1 -0
  254. package/dist/esm/atoms/chart-actions.atom.js +58 -0
  255. package/dist/esm/atoms/index.d.ts +5 -0
  256. package/dist/esm/atoms/index.d.ts.map +1 -1
  257. package/dist/esm/atoms/index.js +5 -0
  258. package/dist/esm/atoms/move-chart-dialog.atom.d.ts +28 -0
  259. package/dist/esm/atoms/move-chart-dialog.atom.d.ts.map +1 -0
  260. package/dist/esm/atoms/move-chart-dialog.atom.js +25 -0
  261. package/dist/esm/atoms/selected-chart-embed.atom.d.ts +9 -1
  262. package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -1
  263. package/dist/esm/atoms/selected-chart-embed.atom.js +19 -2
  264. package/dist/esm/atoms/selected-chart-series.atom.d.ts +24 -0
  265. package/dist/esm/atoms/selected-chart-series.atom.d.ts.map +1 -0
  266. package/dist/esm/atoms/selected-chart-series.atom.js +4 -0
  267. package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
  268. package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
  269. package/dist/esm/atoms/sheet-context.atom.js +2 -0
  270. package/dist/esm/atoms/sparkline-dialog.atom.d.ts +34 -0
  271. package/dist/esm/atoms/sparkline-dialog.atom.d.ts.map +1 -0
  272. package/dist/esm/atoms/sparkline-dialog.atom.js +21 -0
  273. package/dist/esm/atoms/table-auto-expansion.atom.d.ts +14 -0
  274. package/dist/esm/atoms/table-auto-expansion.atom.d.ts.map +1 -0
  275. package/dist/esm/atoms/table-auto-expansion.atom.js +11 -0
  276. package/dist/esm/components/calculated-column-smart-tag/index.d.ts +25 -0
  277. package/dist/esm/components/calculated-column-smart-tag/index.d.ts.map +1 -0
  278. package/dist/esm/components/calculated-column-smart-tag/index.js +25 -0
  279. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  280. package/dist/esm/components/canvas-grid/index.js +332 -21
  281. package/dist/esm/components/canvas-grid/typings.d.ts +127 -14
  282. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  283. package/dist/esm/components/cell/index.d.ts.map +1 -1
  284. package/dist/esm/components/cell/index.js +3 -3
  285. package/dist/esm/components/cell/typings.d.ts +13 -0
  286. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  287. package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
  288. package/dist/esm/components/cell-filter/index.js +14 -3
  289. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  290. package/dist/esm/components/cell-input/formula-bar-cell-input.js +4 -1
  291. package/dist/esm/components/cell-structured/sparkline-math.d.ts +28 -5
  292. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  293. package/dist/esm/components/cell-structured/sparkline-math.js +58 -4
  294. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  295. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  296. package/dist/esm/components/cell-structured/sparkline.js +3 -3
  297. package/dist/esm/components/cell-structured/types.d.ts +1 -1
  298. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  299. package/dist/esm/components/chart-sheet-view/index.d.ts +27 -0
  300. package/dist/esm/components/chart-sheet-view/index.d.ts.map +1 -0
  301. package/dist/esm/components/chart-sheet-view/index.js +30 -0
  302. package/dist/esm/components/context-menu/embed-context-menu.d.ts +48 -0
  303. package/dist/esm/components/context-menu/embed-context-menu.d.ts.map +1 -0
  304. package/dist/esm/components/context-menu/embed-context-menu.js +112 -0
  305. package/dist/esm/components/context-menu/index.d.ts +23 -2
  306. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  307. package/dist/esm/components/context-menu/index.js +174 -38
  308. package/dist/esm/components/context-menu/total-row-function-menu.d.ts +33 -0
  309. package/dist/esm/components/context-menu/total-row-function-menu.d.ts.map +1 -0
  310. package/dist/esm/components/context-menu/total-row-function-menu.js +50 -0
  311. package/dist/esm/components/context-menu/total-row-functions.d.ts +12 -12
  312. package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -1
  313. package/dist/esm/components/context-menu/total-row-functions.js +29 -31
  314. package/dist/esm/components/embeds/chart-component.d.ts +17 -0
  315. package/dist/esm/components/embeds/chart-component.d.ts.map +1 -1
  316. package/dist/esm/components/embeds/embed-draggable.d.ts +61 -4
  317. package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
  318. package/dist/esm/components/embeds/embed-draggable.js +204 -45
  319. package/dist/esm/components/filter-box/date-tree.d.ts +28 -0
  320. package/dist/esm/components/filter-box/date-tree.d.ts.map +1 -0
  321. package/dist/esm/components/filter-box/date-tree.js +107 -0
  322. package/dist/esm/components/filter-box/filter-by-condition.d.ts +14 -2
  323. package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -1
  324. package/dist/esm/components/filter-box/filter-by-condition.js +72 -16
  325. package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -1
  326. package/dist/esm/components/filter-box/filter-by-value.js +110 -39
  327. package/dist/esm/components/filter-box/index.d.ts +7 -1
  328. package/dist/esm/components/filter-box/index.d.ts.map +1 -1
  329. package/dist/esm/components/filter-box/index.js +88 -2
  330. package/dist/esm/components/move-chart-dialog/index.d.ts +34 -0
  331. package/dist/esm/components/move-chart-dialog/index.d.ts.map +1 -0
  332. package/dist/esm/components/move-chart-dialog/index.js +88 -0
  333. package/dist/esm/components/print-preview/page-block.d.ts +9 -1
  334. package/dist/esm/components/print-preview/page-block.d.ts.map +1 -1
  335. package/dist/esm/components/print-preview/page-block.js +27 -2
  336. package/dist/esm/components/print-preview/print-preview-dialog.d.ts +8 -1
  337. package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -1
  338. package/dist/esm/components/print-preview/print-preview-dialog.js +92 -4
  339. package/dist/esm/components/print-preview/run-print.d.ts.map +1 -1
  340. package/dist/esm/components/print-preview/run-print.js +17 -7
  341. package/dist/esm/components/print-preview/use-page-layout.d.ts +47 -0
  342. package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -1
  343. package/dist/esm/components/print-preview/use-page-layout.js +55 -0
  344. package/dist/esm/components/selection/index.d.ts +1 -1
  345. package/dist/esm/components/selection/index.d.ts.map +1 -1
  346. package/dist/esm/components/selection/index.js +6 -2
  347. package/dist/esm/components/selection/types.d.ts +15 -0
  348. package/dist/esm/components/selection/types.d.ts.map +1 -1
  349. package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -1
  350. package/dist/esm/components/sheet-tabs/index.js +2 -2
  351. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +1 -1
  352. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  353. package/dist/esm/components/sheet-tabs/sheet-tab.js +4 -2
  354. package/dist/esm/components/sparkline-dialog/index.d.ts +43 -0
  355. package/dist/esm/components/sparkline-dialog/index.d.ts.map +1 -0
  356. package/dist/esm/components/sparkline-dialog/index.js +123 -0
  357. package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -1
  358. package/dist/esm/components/subtotal-dialog/index.js +10 -1
  359. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  360. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  361. package/dist/esm/components/table-auto-expansion-smart-tag/index.js +25 -0
  362. package/dist/esm/components/toolbar/index.d.ts +1 -0
  363. package/dist/esm/components/toolbar/index.d.ts.map +1 -1
  364. package/dist/esm/components/toolbar/index.js +1 -0
  365. package/dist/esm/components/toolbar/insert-menu.d.ts +2 -1
  366. package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -1
  367. package/dist/esm/components/toolbar/insert-menu.js +24 -1
  368. package/dist/esm/components/toolbar/merge-cells-selector.d.ts +4 -1
  369. package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  370. package/dist/esm/components/toolbar/merge-cells-selector.js +10 -6
  371. package/dist/esm/components/toolbar/sparkline-actions.d.ts +31 -0
  372. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -0
  373. package/dist/esm/components/toolbar/sparkline-actions.js +238 -0
  374. package/dist/esm/components/toolbar/table-actions.d.ts +9 -1
  375. package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -1
  376. package/dist/esm/components/toolbar/table-actions.js +15 -7
  377. package/dist/esm/components/toolbar/table-style-selector.d.ts +38 -2
  378. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  379. package/dist/esm/components/toolbar/table-style-selector.js +210 -399
  380. package/dist/esm/config.d.ts +2 -0
  381. package/dist/esm/config.d.ts.map +1 -1
  382. package/dist/esm/config.js +30 -0
  383. package/dist/esm/helpers.d.ts +1 -1
  384. package/dist/esm/helpers.d.ts.map +1 -1
  385. package/dist/esm/helpers.js +12 -1
  386. package/dist/esm/hooks/use-cell-renderer.d.ts +16 -1
  387. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  388. package/dist/esm/hooks/use-cell-renderer.js +14 -4
  389. package/dist/esm/hooks/use-chart-clipboard.d.ts +55 -0
  390. package/dist/esm/hooks/use-chart-clipboard.d.ts.map +1 -0
  391. package/dist/esm/hooks/use-chart-clipboard.js +213 -0
  392. package/dist/esm/hooks/use-chart-source-ranges.d.ts +27 -0
  393. package/dist/esm/hooks/use-chart-source-ranges.d.ts.map +1 -0
  394. package/dist/esm/hooks/use-chart-source-ranges.js +186 -0
  395. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
  396. package/dist/esm/hooks/use-context-setter.js +3 -1
  397. package/dist/esm/hooks/use-editable.d.ts +9 -1
  398. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  399. package/dist/esm/hooks/use-editable.js +25 -1
  400. package/dist/esm/hooks/use-embeds-charts.d.ts +64 -4
  401. package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -1
  402. package/dist/esm/hooks/use-embeds-charts.js +394 -39
  403. package/dist/esm/hooks/use-grid-children.d.ts +2 -2
  404. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
  405. package/dist/esm/hooks/use-grid-children.js +8 -2
  406. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  407. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  408. package/dist/esm/hooks/use-keyboard-handler.d.ts +2 -1
  409. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-keyboard-handler.js +8 -2
  411. package/dist/esm/hooks/use-reveal-chart-embed.d.ts +17 -0
  412. package/dist/esm/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  413. package/dist/esm/hooks/use-reveal-chart-embed.js +35 -0
  414. package/dist/esm/hooks/use-selection-renderer.d.ts +13 -1
  415. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-selection-renderer.js +35 -6
  417. package/dist/esm/hooks/use-selection.d.ts +9 -1
  418. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  419. package/dist/esm/hooks/use-selection.js +122 -30
  420. package/dist/esm/hooks/use-structured-reference-selection.d.ts +1 -1
  421. package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -1
  422. package/dist/esm/hooks/use-structured-reference-selection.js +16 -0
  423. package/dist/esm/hooks/use-table-hit-zones.d.ts +61 -0
  424. package/dist/esm/hooks/use-table-hit-zones.d.ts.map +1 -0
  425. package/dist/esm/hooks/use-table-hit-zones.js +146 -0
  426. package/dist/esm/hooks/use-table-resizer.d.ts +7 -0
  427. package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
  428. package/dist/esm/hooks/use-table-resizer.js +21 -10
  429. package/dist/esm/index.d.ts +13 -0
  430. package/dist/esm/index.d.ts.map +1 -1
  431. package/dist/esm/index.js +13 -0
  432. package/dist/esm/release-date.js +1 -1
  433. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  434. package/dist/esm/types.d.ts +289 -4
  435. package/dist/esm/types.d.ts.map +1 -1
  436. package/dist/esm/utils/copy-as-picture.d.ts +13 -0
  437. package/dist/esm/utils/copy-as-picture.d.ts.map +1 -0
  438. package/dist/esm/utils/copy-as-picture.js +45 -0
  439. package/dist/esm/utils/pivot-chart-field-buttons.d.ts +19 -0
  440. package/dist/esm/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  441. package/dist/esm/utils/pivot-chart-field-buttons.js +18 -0
  442. package/dist/esm/utils/z-order.d.ts +47 -0
  443. package/dist/esm/utils/z-order.d.ts.map +1 -0
  444. package/dist/esm/utils/z-order.js +111 -0
  445. package/dist/spreadsheet.min.css +1 -1
  446. package/package.json +12 -10
  447. package/dist/cjs/components/cell-editor/helpers.spec.d.ts +0 -2
  448. package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +0 -1
  449. package/dist/cjs/components/cell-editor/helpers.spec.js +0 -32
  450. package/dist/esm/components/cell-editor/helpers.spec.d.ts +0 -2
  451. package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +0 -1
  452. package/dist/esm/components/cell-editor/helpers.spec.js +0 -30
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TableStyleSelector = exports.getTableBorderStyles = exports.findMatchingBandProperty = void 0;
3
+ exports.TableStyleSelector = exports.getTableBorderStyles = exports.buildCustomTableStyle = exports.getStyleOptionUpdate = exports.findMatchingBandProperty = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var grid_1 = require("@rowsncolumns/grid");
6
6
  var icons_1 = require("@rowsncolumns/icons");
@@ -11,379 +11,106 @@ var react_1 = tslib_1.__importStar(require("react"));
11
11
  var banded_ranges_1 = require("../../api/banded-ranges");
12
12
  var sheet_context_atom_1 = require("../../atoms/sheet-context.atom");
13
13
  var themes_1 = require("../../themes");
14
- var stripeTint = 0.8;
15
- var colorIndexes = [1, 4, 5, 6, 7, 8, 9];
14
+ /** Excel's Table Style Options (Table Design tab), in ribbon order. */
15
+ var STYLE_OPTIONS = [
16
+ { key: "headerRow", label: "Header Row", defaultValue: true },
17
+ { key: "totalRow", label: "Total Row", defaultValue: false },
18
+ { key: "showRowStripes", label: "Banded Rows", defaultValue: true },
19
+ { key: "showColumnStripes", label: "Banded Columns", defaultValue: false },
20
+ { key: "showFirstColumn", label: "First Column", defaultValue: false },
21
+ { key: "showLastColumn", label: "Last Column", defaultValue: false },
22
+ { key: "filterButton", label: "Filter Button", defaultValue: true },
23
+ ];
24
+ var isBuiltInTheme = function (theme) {
25
+ return !!theme && /^TableStyle(Light|Medium|Dark)\d+$/.test(theme);
26
+ };
27
+ /**
28
+ * The table update a Style Options toggle produces. Flipping Banded Rows / Banded Columns on a
29
+ * built-in style re-resolves the banding for the new stripe toggles (what the Edit Table dialog
30
+ * does); a custom style has no palette to re-resolve from and keeps its banding.
31
+ */
32
+ var getStyleOptionUpdate = function (table, key, checked) {
33
+ var _a;
34
+ var update = (_a = {}, _a[key] = checked, _a);
35
+ if ((key === "showRowStripes" || key === "showColumnStripes") &&
36
+ isBuiltInTheme(table.theme)) {
37
+ var showRowStripes = key === "showRowStripes" ? checked : table.showRowStripes !== false;
38
+ var showColumnStripes = key === "showColumnStripes" ? checked : table.showColumnStripes === true;
39
+ var bandedRange = (0, utils_1.findMatchingBandProperty)(table.theme, showRowStripes, showColumnStripes);
40
+ if (bandedRange && !showColumnStripes) {
41
+ delete bandedRange.columnProperties;
42
+ }
43
+ update.bandedRange = bandedRange;
44
+ }
45
+ return update;
46
+ };
47
+ exports.getStyleOptionUpdate = getStyleOptionUpdate;
48
+ /** The colours "New Table Style…" offers for each element (the workbook palette's accents). */
49
+ var NEW_STYLE_COLORS = [
50
+ "#000000",
51
+ "#595959",
52
+ "#a6a6a6",
53
+ "#d9d9d9",
54
+ "#ffffff",
55
+ "#4472c4",
56
+ "#b4c6e7",
57
+ "#ed7d31",
58
+ "#f8cbad",
59
+ "#a5a5a5",
60
+ "#ffc000",
61
+ "#ffe699",
62
+ "#5b9bd5",
63
+ "#bdd7ee",
64
+ "#70ad47",
65
+ "#c6e0b4",
66
+ ];
67
+ /** The banding a New Table Style paints from its three colours (unset elements stay unpainted). */
68
+ var buildCustomTableStyle = function (name, colors) { return ({
69
+ name: name,
70
+ bandedRange: {
71
+ rowProperties: {
72
+ headerColor: colors.header,
73
+ firstBandColor: colors.firstBand,
74
+ secondBandColor: colors.secondBand,
75
+ },
76
+ },
77
+ }); };
78
+ exports.buildCustomTableStyle = buildCustomTableStyle;
79
+ /** Gallery groups whose swatch is outlined in the style's accent colour (filled-header styles). */
80
+ var OUTLINED_SWATCH_THEMES = /^TableStyle(?:Light(?:[89]|1[0-4])|Medium(?:1[5-9]|2[01]))$/;
81
+ /**
82
+ * The gallery's table styles: the shared palette (`@rowsncolumns/utils` — the same banding the
83
+ * importers and both engines resolve a theme name into) plus a per-swatch preview style.
84
+ */
16
85
  var getTableBorderStyles = function (showRowStripes, showColumnStripes, theme) {
17
- var runningLightIndex = 1;
18
- var runningMediumIndex = 1;
19
- var runningDarkIndex = 1;
20
- return new Map([
21
- [
22
- "Light",
23
- tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([
24
- ["None", 0, 0, undefined]
25
- ], tslib_1.__read(colorIndexes.map(function (value) {
26
- return [
27
- "TableStyleLight" + runningLightIndex++,
28
- stripeTint,
29
- 1,
30
- {
31
- rowProperties: {
32
- firstBandColor: {
33
- theme: value,
34
- tint: showRowStripes ? stripeTint : 1,
35
- },
36
- secondBandColor: showRowStripes
37
- ? {
38
- theme: 0,
39
- }
40
- : undefined,
41
- headerBorder: {
42
- top: {
43
- width: 1,
44
- style: "solid",
45
- color: {
46
- theme: value,
47
- },
48
- },
49
- bottom: {
50
- width: 1,
51
- style: "solid",
52
- color: {
53
- theme: value,
54
- },
55
- },
56
- },
57
- footerBorder: {
58
- bottom: {
59
- width: 1,
60
- style: "solid",
61
- color: {
62
- theme: value,
63
- },
64
- },
65
- },
66
- },
67
- columnProperties: showColumnStripes
68
- ? {
69
- firstBandColor: {
70
- theme: value,
71
- tint: showColumnStripes ? stripeTint : 1,
72
- },
73
- }
74
- : undefined,
75
- },
76
- ];
77
- })), false), tslib_1.__read(colorIndexes.map(function (value) {
78
- return [
79
- "TableStyleLight" + runningLightIndex++,
80
- undefined,
81
- undefined,
82
- {
83
- rowProperties: {
84
- headerColor: {
85
- theme: value,
86
- },
87
- },
88
- },
89
- {
90
- border: theme
91
- ? "1px solid ".concat((0, themes_1.getStringifiedColor)({ theme: value }, theme))
92
- : undefined,
93
- },
94
- ];
95
- })), false), tslib_1.__read(colorIndexes.map(function (value) {
96
- var border = {
97
- width: 1,
98
- style: "solid",
99
- color: {
100
- theme: value,
101
- },
102
- };
103
- return [
104
- "TableStyleLight" + runningLightIndex++,
105
- stripeTint,
106
- 1,
107
- {
108
- rowProperties: {
109
- firstBandColor: {
110
- theme: value,
111
- tint: showRowStripes ? stripeTint : 1,
112
- },
113
- secondBandColor: showRowStripes
114
- ? {
115
- theme: 0,
116
- }
117
- : undefined,
118
- firstBandBorder: {
119
- top: border,
120
- left: border,
121
- right: border,
122
- bottom: border,
123
- },
124
- headerBorder: {
125
- top: border,
126
- left: border,
127
- right: border,
128
- bottom: border,
129
- },
130
- },
131
- columnProperties: showColumnStripes
132
- ? {
133
- firstBandColor: {
134
- theme: value,
135
- tint: showColumnStripes ? stripeTint : 1,
136
- },
137
- }
138
- : undefined,
139
- },
140
- ];
141
- })), false),
142
- ],
143
- [
144
- "Medium",
145
- tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(colorIndexes.map(function (value) {
146
- return [
147
- "TableStyleMedium" + runningMediumIndex++,
148
- stripeTint,
149
- 1,
150
- {
151
- rowProperties: {
152
- headerColor: {
153
- theme: value,
154
- },
155
- firstBandColor: {
156
- theme: value,
157
- tint: showRowStripes ? stripeTint : 1,
158
- },
159
- secondBandColor: showRowStripes
160
- ? {
161
- theme: 0,
162
- }
163
- : undefined,
164
- firstBandBorder: {
165
- bottom: {
166
- width: 1,
167
- style: "solid",
168
- color: {
169
- theme: value,
170
- },
171
- },
172
- },
173
- },
174
- columnProperties: showColumnStripes
175
- ? {
176
- firstBandColor: {
177
- theme: value,
178
- tint: showColumnStripes ? stripeTint : 1,
179
- },
180
- }
181
- : undefined,
182
- },
183
- ];
184
- })), false), tslib_1.__read(colorIndexes.map(function (value) {
185
- return [
186
- "TableStyleMedium" + runningMediumIndex++,
187
- 0.6,
188
- 0.8,
189
- {
190
- rowProperties: {
191
- headerColor: {
192
- theme: value,
193
- },
194
- firstBandColor: {
195
- theme: value,
196
- tint: showRowStripes ? 0.6 : 0.8,
197
- },
198
- secondBandColor: {
199
- theme: value,
200
- tint: 0.8,
201
- },
202
- },
203
- columnProperties: showColumnStripes
204
- ? {
205
- firstBandColor: {
206
- theme: value,
207
- tint: showColumnStripes ? 0.6 : 0.8,
208
- },
209
- // secondBandColor: {
210
- // theme: value,
211
- // tint: 0.8,
212
- // },
213
- }
214
- : undefined,
215
- },
216
- ];
217
- })), false), tslib_1.__read(colorIndexes.map(function (value) {
218
- var border = {
219
- width: 2,
220
- style: "solid",
221
- color: {
222
- theme: 1,
223
- },
224
- };
225
- return [
226
- "TableStyleMedium" + runningMediumIndex++,
227
- -0.15,
228
- 1,
229
- {
230
- rowProperties: {
231
- headerColor: {
232
- theme: value,
233
- },
234
- firstBandColor: {
235
- theme: 0,
236
- tint: showRowStripes ? -0.15 : 1,
237
- },
238
- secondBandColor: showRowStripes
239
- ? {
240
- theme: 0,
241
- }
242
- : undefined,
243
- headerBorder: {
244
- top: border,
245
- },
246
- footerBorder: {
247
- bottom: border,
248
- },
249
- },
250
- columnProperties: showColumnStripes
251
- ? {
252
- firstBandColor: {
253
- theme: 0,
254
- tint: showColumnStripes ? -0.15 : 1,
255
- },
256
- }
257
- : undefined,
258
- },
259
- ];
260
- })), false), tslib_1.__read(colorIndexes.map(function (value) {
261
- var border = {
262
- width: 1,
263
- style: "solid",
264
- color: {
265
- theme: value,
266
- },
267
- };
268
- return [
269
- "TableStyleMedium" + runningMediumIndex++,
270
- stripeTint,
271
- 0.9,
272
- {
273
- rowProperties: {
274
- headerColor: {
275
- theme: value,
276
- tint: 0.9,
277
- },
278
- firstBandColor: {
279
- theme: value,
280
- tint: showRowStripes ? stripeTint : 0.9,
281
- },
282
- secondBandColor: {
283
- theme: value,
284
- tint: 0.9,
285
- },
286
- firstBandBorder: {
287
- top: border,
288
- left: border,
289
- right: border,
290
- bottom: border,
291
- },
292
- headerBorder: {
293
- top: border,
294
- left: border,
295
- right: border,
296
- bottom: border,
297
- },
298
- },
299
- columnProperties: showColumnStripes
300
- ? {
301
- firstBandColor: {
302
- theme: value,
303
- tint: showColumnStripes ? stripeTint : 0.9,
304
- },
305
- }
306
- : undefined,
307
- },
308
- {
309
- border: theme
310
- ? "1px solid ".concat((0, themes_1.getStringifiedColor)({ theme: value }, theme))
311
- : undefined,
312
- },
313
- ];
314
- })), false),
315
- ],
316
- [
317
- "Dark",
318
- tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(colorIndexes.map(function (value) {
319
- var firstTint = value - 1 === 0 ? 0.25 : -0.25;
320
- var secondTint = value - 1 === 0 ? 0.5 : 0;
321
- return [
322
- "TableStyleDark" + runningDarkIndex++,
323
- firstTint,
324
- secondTint,
325
- {
326
- rowProperties: {
327
- headerColor: {
328
- theme: 1,
329
- },
330
- firstBandColor: {
331
- theme: value,
332
- tint: showRowStripes ? firstTint : secondTint,
333
- },
334
- secondBandColor: {
335
- theme: value,
336
- tint: secondTint,
337
- },
338
- },
339
- columnProperties: showColumnStripes
340
- ? {
341
- firstBandColor: {
342
- theme: value,
343
- tint: showColumnStripes ? firstTint : secondTint,
344
- },
345
- }
346
- : undefined,
347
- },
348
- ];
349
- })), false), tslib_1.__read([1, 5, 7, 9].map(function (value) {
350
- var firstTint = value - 1 === 0 ? -0.35 : 0.6;
351
- var secondTint = value - 1 === 0 ? -0.15 : 0.8;
352
- return [
353
- "TableStyleDark" + runningDarkIndex++,
354
- firstTint,
355
- secondTint,
356
- {
357
- rowProperties: {
358
- headerColor: {
359
- theme: value,
360
- },
361
- firstBandColor: {
362
- theme: value - 1,
363
- tint: showRowStripes ? firstTint : secondTint,
364
- },
365
- secondBandColor: {
366
- theme: value - 1,
367
- tint: secondTint,
368
- },
369
- },
370
- columnProperties: showColumnStripes
371
- ? {
372
- firstBandColor: {
373
- theme: value - 1,
374
- tint: showColumnStripes ? firstTint : secondTint,
375
- },
376
- }
377
- : undefined,
378
- },
379
- ];
380
- })), false),
381
- ],
382
- ]);
86
+ var e_1, _a;
87
+ var entries = new Map();
88
+ try {
89
+ for (var _b = tslib_1.__values((0, utils_1.getTableBorderStyles)(showRowStripes, showColumnStripes)), _c = _b.next(); !_c.done; _c = _b.next()) {
90
+ var _d = tslib_1.__read(_c.value, 2), category = _d[0], styles = _d[1];
91
+ entries.set(category, styles.map(function (_a) {
92
+ var _b;
93
+ var _c = tslib_1.__read(_a, 4), tableTheme = _c[0], firstBandTint = _c[1], secondBandTint = _c[2], definition = _c[3];
94
+ var accent = (_b = definition === null || definition === void 0 ? void 0 : definition.rowProperties) === null || _b === void 0 ? void 0 : _b.headerColor;
95
+ var style = theme && accent && OUTLINED_SWATCH_THEMES.test(tableTheme)
96
+ ? { border: "1px solid ".concat((0, themes_1.getStringifiedColor)(accent, theme)) }
97
+ : undefined;
98
+ return [tableTheme, firstBandTint, secondBandTint, definition, style];
99
+ }));
100
+ }
101
+ }
102
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
103
+ finally {
104
+ try {
105
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
106
+ }
107
+ finally { if (e_1) throw e_1.error; }
108
+ }
109
+ return entries;
383
110
  };
384
111
  exports.getTableBorderStyles = getTableBorderStyles;
385
112
  exports.TableStyleSelector = (0, react_1.memo)(function (_a) {
386
- var tables = _a.tables, sheetId = _a.sheetId, theme = _a.theme, activeCell = _a.activeCell, selections = _a.selections, onUpdateTable = _a.onUpdateTable, onCreateTable = _a.onCreateTable;
113
+ var tables = _a.tables, sheetId = _a.sheetId, theme = _a.theme, activeCell = _a.activeCell, selections = _a.selections, onUpdateTable = _a.onUpdateTable, onCreateTable = _a.onCreateTable, onRequestCreateTable = _a.onRequestCreateTable, onPreviewTableStyle = _a.onPreviewTableStyle, customTableStyles = _a.customTableStyles, onCreateCustomTableStyle = _a.onCreateCustomTableStyle;
387
114
  var shouldFocusSheetRef = (0, react_1.useRef)(true);
388
115
  var focusSheet = (0, sheet_context_atom_1.useFocusSheet)();
389
116
  var table = (0, react_1.useMemo)(function () {
@@ -393,29 +120,87 @@ exports.TableStyleSelector = (0, react_1.memo)(function (_a) {
393
120
  });
394
121
  }, [tables, sheetId, activeCell]);
395
122
  // Default showstripes is always true
396
- var showRowStripes = table ? Boolean(table.showRowStripes) : true;
123
+ var showRowStripes = table ? table.showRowStripes !== false : true;
397
124
  // Default showColumnStripes
398
125
  var showColumnStripes = table ? Boolean(table.showColumnStripes) : false;
126
+ // Styles created here when the host does not keep them.
127
+ var _b = tslib_1.__read((0, react_1.useState)([]), 2), sessionCustomStyles = _b[0], setSessionCustomStyles = _b[1];
128
+ var allCustomStyles = (0, react_1.useMemo)(function () { return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read((customTableStyles !== null && customTableStyles !== void 0 ? customTableStyles : [])), false), tslib_1.__read(sessionCustomStyles), false); }, [customTableStyles, sessionCustomStyles]);
129
+ var _c = tslib_1.__read((0, react_1.useState)(false), 2), isCreatingStyle = _c[0], setIsCreatingStyle = _c[1];
399
130
  // Classes
400
131
  var hoverClass = "rounded-none hover:outline-solid hover:outline-1 hover:outline hover:outline-offset-1 hover:outline-rnc-primary focus:outline focus:outline-offset-1 focus:outline-rnc-primary hover:bg-transparent focus:bg-transparent text-rnc-foreground p-1";
401
132
  var headingClass = "text-xs font-system pt-2 pb-1 text-rnc-foreground";
402
133
  var gridClass = "grid grid-cols-3 md:grid-cols-7 gap-1 pb-1";
134
+ var optionClass = "pl-6 pr-2 py-1 text-xs";
135
+ /**
136
+ * Live preview of the hovered swatch on the active table (a plain range has nothing to paint).
137
+ */
138
+ var previewStyle = (0, react_1.useCallback)(function (theme, bandedRange) {
139
+ if (table) {
140
+ onPreviewTableStyle === null || onPreviewTableStyle === void 0 ? void 0 : onPreviewTableStyle({
141
+ sheetId: sheetId,
142
+ tableId: table.id,
143
+ theme: theme,
144
+ bandedRange: bandedRange,
145
+ });
146
+ }
147
+ }, [table, sheetId, onPreviewTableStyle]);
148
+ var clearPreview = (0, react_1.useCallback)(function () {
149
+ onPreviewTableStyle === null || onPreviewTableStyle === void 0 ? void 0 : onPreviewTableStyle(null);
150
+ }, [onPreviewTableStyle]);
403
151
  /**
404
152
  * On Select style
405
153
  */
406
154
  var onSelectStyle = (0, react_1.useCallback)(function (theme, bandedRange) {
155
+ clearPreview();
407
156
  if (table) {
408
157
  onUpdateTable === null || onUpdateTable === void 0 ? void 0 : onUpdateTable(sheetId, table.id, tslib_1.__assign(tslib_1.__assign({}, table), { theme: theme, bandedRange: bandedRange }));
409
158
  }
159
+ else if (onRequestCreateTable) {
160
+ onRequestCreateTable(sheetId, activeCell, selections, theme, bandedRange);
161
+ }
410
162
  else {
411
163
  onCreateTable === null || onCreateTable === void 0 ? void 0 : onCreateTable(sheetId, activeCell, selections, undefined, theme, bandedRange);
412
164
  }
413
- }, [table, sheetId, activeCell, selections, onCreateTable, onUpdateTable]);
165
+ }, [
166
+ table,
167
+ sheetId,
168
+ activeCell,
169
+ selections,
170
+ onCreateTable,
171
+ onRequestCreateTable,
172
+ onUpdateTable,
173
+ clearPreview,
174
+ ]);
175
+ /** A Style Options toggle → the table update (banding re-resolved for stripe toggles). */
176
+ var onToggleStyleOption = (0, react_1.useCallback)(function (key, checked) {
177
+ if (table) {
178
+ onUpdateTable === null || onUpdateTable === void 0 ? void 0 : onUpdateTable(sheetId, table.id, (0, exports.getStyleOptionUpdate)(table, key, checked));
179
+ }
180
+ }, [table, sheetId, onUpdateTable]);
181
+ /** "New Table Style…" created a style: keep it and apply it like a picked swatch. */
182
+ var onCreateStyle = (0, react_1.useCallback)(function (style) {
183
+ if (onCreateCustomTableStyle) {
184
+ onCreateCustomTableStyle(style);
185
+ }
186
+ else {
187
+ setSessionCustomStyles(function (prev) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(prev), false), [style], false); });
188
+ }
189
+ setIsCreatingStyle(false);
190
+ onSelectStyle(style.name, style.bandedRange);
191
+ }, [onCreateCustomTableStyle, onSelectStyle]);
414
192
  /**
415
193
  * Get all table border styles
416
194
  */
417
195
  var tableBorderstyles = (0, react_1.useMemo)(function () { return tslib_1.__spreadArray([], tslib_1.__read((0, exports.getTableBorderStyles)(showRowStripes, showColumnStripes, theme).entries()), false); }, [showRowStripes, showColumnStripes, theme]);
418
- return (react_1.default.createElement(ui_1.DropdownMenu, { modal: false },
196
+ var swatch = function (key, tableTheme, bandProperties, style) { return (react_1.default.createElement(ui_1.DropdownMenuItem, { key: key, onClick: function () { return onSelectStyle(tableTheme, bandProperties); }, onPointerEnter: function () { return previewStyle(tableTheme, bandProperties); }, onPointerLeave: clearPreview, onFocus: function () { return previewStyle(tableTheme, bandProperties); }, onBlur: clearPreview, className: hoverClass, title: tableTheme },
197
+ react_1.default.createElement(TableSkeleton, { rowProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.rowProperties, columnProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.columnProperties, theme: theme, style: style }))); };
198
+ return (react_1.default.createElement(ui_1.DropdownMenu, { modal: false, onOpenChange: function (open) {
199
+ if (!open) {
200
+ clearPreview();
201
+ setIsCreatingStyle(false);
202
+ }
203
+ } },
419
204
  react_1.default.createElement(ui_1.DropdownMenuTrigger, { asChild: true },
420
205
  react_1.default.createElement(ui_1.IconButton, { size: "xl", tooltip: "Format as Table", className: "gap-1" },
421
206
  react_1.default.createElement(icons_1.TableIcon, null),
@@ -430,24 +215,91 @@ exports.TableStyleSelector = (0, react_1.memo)(function (_a) {
430
215
  }, onInteractOutside: function () {
431
216
  shouldFocusSheetRef.current = false;
432
217
  } },
433
- react_1.default.createElement("div", { className: "max-w-dropdown md:min-w-[400px] p-2 pt-0" }, tableBorderstyles.map(function (_a) {
434
- var _b = tslib_1.__read(_a, 2), category = _b[0], tableStyles = _b[1];
435
- return (react_1.default.createElement("div", { key: category },
436
- react_1.default.createElement("div", { className: headingClass }, category),
218
+ react_1.default.createElement("div", { className: "max-w-dropdown md:min-w-[400px] p-2 pt-0" },
219
+ table ? (react_1.default.createElement("div", { "data-testid": "table-style-options" },
220
+ react_1.default.createElement("div", { className: headingClass }, "Style Options"),
221
+ react_1.default.createElement(ui_1.Separator, { className: "mb-1" }),
222
+ react_1.default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-4 pb-1" }, STYLE_OPTIONS.map(function (_a) {
223
+ var _b;
224
+ var key = _a.key, label = _a.label, defaultValue = _a.defaultValue;
225
+ return (react_1.default.createElement(ui_1.DropdownMenuCheckboxItem, { key: key, className: optionClass, checked: (_b = table[key]) !== null && _b !== void 0 ? _b : defaultValue, disabled: key === "filterButton" && table.headerRow === false,
226
+ // Keep the gallery open across toggles (a checkbox item closes the menu on
227
+ // select by default).
228
+ onSelect: function (event) { return event.preventDefault(); }, onCheckedChange: function (checked) {
229
+ return onToggleStyleOption(key, checked === true);
230
+ } },
231
+ react_1.default.createElement(ui_1.DropdownMenuItemIndicator, null,
232
+ react_1.default.createElement(icons_1.CheckIcon, null)),
233
+ label));
234
+ })))) : null,
235
+ allCustomStyles.length ? (react_1.default.createElement("div", null,
236
+ react_1.default.createElement("div", { className: headingClass }, "Custom"),
437
237
  react_1.default.createElement(ui_1.Separator, { className: "mb-2" }),
438
- react_1.default.createElement("div", { className: gridClass }, tableStyles.map(function (_a, index) {
439
- var _b = tslib_1.__read(_a, 5), tableTheme = _b[0],
440
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
441
- firstBandTint = _b[1],
442
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
443
- secondBandTint = _b[2], bandProperties = _b[3], style = _b[4];
444
- return (react_1.default.createElement(ui_1.DropdownMenuItem, { key: index, onClick: function () {
445
- return onSelectStyle(tableTheme, bandProperties);
446
- }, className: hoverClass, title: tableTheme },
447
- react_1.default.createElement(TableSkeleton, { rowProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.rowProperties, columnProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.columnProperties, theme: theme, style: style })));
448
- }))));
449
- }))))));
238
+ react_1.default.createElement("div", { className: gridClass }, allCustomStyles.map(function (style, index) {
239
+ return swatch("custom-".concat(index), style.name, style.bandedRange);
240
+ })))) : null,
241
+ tableBorderstyles.map(function (_a) {
242
+ var _b = tslib_1.__read(_a, 2), category = _b[0], tableStyles = _b[1];
243
+ return (react_1.default.createElement("div", { key: category },
244
+ react_1.default.createElement("div", { className: headingClass }, category),
245
+ react_1.default.createElement(ui_1.Separator, { className: "mb-2" }),
246
+ react_1.default.createElement("div", { className: gridClass }, tableStyles.map(function (_a, index) {
247
+ var _b = tslib_1.__read(_a, 5), tableTheme = _b[0],
248
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
249
+ firstBandTint = _b[1],
250
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
251
+ secondBandTint = _b[2], bandProperties = _b[3], style = _b[4];
252
+ return swatch(index, tableTheme, bandProperties, style);
253
+ }))));
254
+ }),
255
+ react_1.default.createElement(ui_1.Separator, { className: "my-1" }),
256
+ isCreatingStyle ? (react_1.default.createElement(NewTableStyleForm, { defaultName: "Table Style ".concat(allCustomStyles.length + 1), theme: theme, onCreate: onCreateStyle, onCancel: function () { return setIsCreatingStyle(false); } })) : (react_1.default.createElement(ui_1.DropdownMenuItem, { className: "text-xs",
257
+ // Keep the menu open: the form replaces this item in place.
258
+ onSelect: function (event) {
259
+ event.preventDefault();
260
+ setIsCreatingStyle(true);
261
+ } }, "New Table Style\u2026")),
262
+ react_1.default.createElement(ui_1.DropdownMenuItem, { className: "text-xs", onClick: function () { return onSelectStyle("None", undefined); }, onPointerEnter: function () { return previewStyle("None", undefined); }, onPointerLeave: clearPreview, onFocus: function () { return previewStyle("None", undefined); }, onBlur: clearPreview }, "Clear"))))));
450
263
  });
264
+ /**
265
+ * "New Table Style…" — Excel's dialog reduced to the three elements the gallery swatches show:
266
+ * header, first banded row, second banded row. Inline in the gallery so the picked colours
267
+ * preview in the same place they will be offered.
268
+ */
269
+ var NewTableStyleForm = function (_a) {
270
+ var defaultName = _a.defaultName, theme = _a.theme, onCreate = _a.onCreate, onCancel = _a.onCancel;
271
+ var _b = tslib_1.__read((0, react_1.useState)(defaultName), 2), name = _b[0], setName = _b[1];
272
+ var _c = tslib_1.__read((0, react_1.useState)("#4472c4"), 2), header = _c[0], setHeader = _c[1];
273
+ var _d = tslib_1.__read((0, react_1.useState)("#b4c6e7"), 2), firstBand = _d[0], setFirstBand = _d[1];
274
+ var _e = tslib_1.__read((0, react_1.useState)("#ffffff"), 2), secondBand = _e[0], setSecondBand = _e[1];
275
+ var preview = (0, react_1.useMemo)(function () { return (0, exports.buildCustomTableStyle)(name, { header: header, firstBand: firstBand, secondBand: secondBand }); }, [name, header, firstBand, secondBand]);
276
+ var rows = [
277
+ ["Header Row", header, setHeader],
278
+ ["First Row Stripe", firstBand, setFirstBand],
279
+ ["Second Row Stripe", secondBand, setSecondBand],
280
+ ];
281
+ return (react_1.default.createElement("form", { "data-testid": "new-table-style-form", className: "m-0 p-1 flex flex-col gap-2",
282
+ // The gallery is a Radix menu: keep typing in the fields from driving its typeahead.
283
+ onKeyDown: function (event) { return event.stopPropagation(); }, onSubmit: function (event) {
284
+ event.preventDefault();
285
+ if (name.trim()) {
286
+ onCreate((0, exports.buildCustomTableStyle)(name.trim(), { header: header, firstBand: firstBand, secondBand: secondBand }));
287
+ }
288
+ } },
289
+ react_1.default.createElement("div", { className: "flex items-center gap-2" },
290
+ react_1.default.createElement("label", { className: "font-system text-xs w-24", htmlFor: "rnc-new-table-style-name" }, "Name"),
291
+ react_1.default.createElement(ui_1.Input, { id: "rnc-new-table-style-name", value: name, onChange: function (event) { return setName(event.target.value); }, required: true }),
292
+ react_1.default.createElement(TableSkeleton, { rowProperties: preview.bandedRange.rowProperties, theme: theme })),
293
+ rows.map(function (_a) {
294
+ var _b = tslib_1.__read(_a, 3), label = _b[0], value = _b[1], setValue = _b[2];
295
+ return (react_1.default.createElement("div", { className: "flex items-center gap-2", key: label },
296
+ react_1.default.createElement("span", { className: "font-system text-xs w-24" }, label),
297
+ react_1.default.createElement(ui_1.ColorPicker, { colors: NEW_STYLE_COLORS, value: value, onChange: setValue, size: 14, className: "flex-wrap", direction: "horizontal" })));
298
+ }),
299
+ react_1.default.createElement("div", { className: "flex gap-1" },
300
+ react_1.default.createElement(ui_1.Button, { type: "submit", variant: "primary", size: "xs", disabled: !name.trim() }, "Create"),
301
+ react_1.default.createElement(ui_1.Button, { size: "xs", type: "button", onClick: onCancel }, "Cancel"))));
302
+ };
451
303
  /**
452
304
  * Table skeleton
453
305
  * @param param0