@rowsncolumns/spreadsheet 10.3.0 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) 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 +407 -77
  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 +218 -42
  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/resizer/index.d.ts.map +1 -1
  123. package/dist/cjs/components/resizer/index.js +10 -5
  124. package/dist/cjs/components/selection/index.d.ts +1 -1
  125. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  126. package/dist/cjs/components/selection/index.js +6 -2
  127. package/dist/cjs/components/selection/types.d.ts +15 -0
  128. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  129. package/dist/cjs/components/sheet-search/index.d.ts.map +1 -1
  130. package/dist/cjs/components/sheet-search/index.js +6 -2
  131. package/dist/cjs/components/sheet-tabs/index.d.ts.map +1 -1
  132. package/dist/cjs/components/sheet-tabs/index.js +2 -2
  133. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts +1 -1
  134. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  135. package/dist/cjs/components/sheet-tabs/sheet-tab.js +3 -1
  136. package/dist/cjs/components/sparkline-dialog/index.d.ts +43 -0
  137. package/dist/cjs/components/sparkline-dialog/index.d.ts.map +1 -0
  138. package/dist/cjs/components/sparkline-dialog/index.js +127 -0
  139. package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -1
  140. package/dist/cjs/components/subtotal-dialog/index.js +10 -1
  141. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  142. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  143. package/dist/cjs/components/table-auto-expansion-smart-tag/index.js +31 -0
  144. package/dist/cjs/components/toolbar/index.d.ts +1 -0
  145. package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
  146. package/dist/cjs/components/toolbar/index.js +1 -0
  147. package/dist/cjs/components/toolbar/insert-menu.d.ts +2 -1
  148. package/dist/cjs/components/toolbar/insert-menu.d.ts.map +1 -1
  149. package/dist/cjs/components/toolbar/insert-menu.js +24 -1
  150. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts +4 -1
  151. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  152. package/dist/cjs/components/toolbar/merge-cells-selector.js +11 -5
  153. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +31 -0
  154. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -0
  155. package/dist/cjs/components/toolbar/sparkline-actions.js +273 -0
  156. package/dist/cjs/components/toolbar/table-actions.d.ts +9 -1
  157. package/dist/cjs/components/toolbar/table-actions.d.ts.map +1 -1
  158. package/dist/cjs/components/toolbar/table-actions.js +17 -7
  159. package/dist/cjs/components/toolbar/table-style-selector.d.ts +38 -2
  160. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  161. package/dist/cjs/components/toolbar/table-style-selector.js +241 -389
  162. package/dist/cjs/config.d.ts +2 -0
  163. package/dist/cjs/config.d.ts.map +1 -1
  164. package/dist/cjs/config.js +31 -1
  165. package/dist/cjs/helpers.d.ts +1 -1
  166. package/dist/cjs/helpers.d.ts.map +1 -1
  167. package/dist/cjs/helpers.js +13 -2
  168. package/dist/cjs/hooks/use-cell-renderer.d.ts +16 -1
  169. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  170. package/dist/cjs/hooks/use-cell-renderer.js +20 -8
  171. package/dist/cjs/hooks/use-chart-clipboard.d.ts +55 -0
  172. package/dist/cjs/hooks/use-chart-clipboard.d.ts.map +1 -0
  173. package/dist/cjs/hooks/use-chart-clipboard.js +231 -0
  174. package/dist/cjs/hooks/use-chart-source-ranges.d.ts +27 -0
  175. package/dist/cjs/hooks/use-chart-source-ranges.d.ts.map +1 -0
  176. package/dist/cjs/hooks/use-chart-source-ranges.js +211 -0
  177. package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
  178. package/dist/cjs/hooks/use-context-setter.js +3 -1
  179. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-copy-paste-cut.js +6 -3
  181. package/dist/cjs/hooks/use-editable.d.ts +9 -1
  182. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  183. package/dist/cjs/hooks/use-editable.js +25 -1
  184. package/dist/cjs/hooks/use-embeds-charts.d.ts +64 -4
  185. package/dist/cjs/hooks/use-embeds-charts.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-embeds-charts.js +412 -41
  187. package/dist/cjs/hooks/use-grid-children.d.ts +2 -2
  188. package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-grid-children.js +12 -6
  190. package/dist/cjs/hooks/use-header-actions.d.ts.map +1 -1
  191. package/dist/cjs/hooks/use-header-actions.js +17 -10
  192. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  193. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  194. package/dist/cjs/hooks/use-keyboard-handler.d.ts +2 -1
  195. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  196. package/dist/cjs/hooks/use-keyboard-handler.js +8 -2
  197. package/dist/cjs/hooks/use-move-columns-rows.d.ts.map +1 -1
  198. package/dist/cjs/hooks/use-move-columns-rows.js +21 -15
  199. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts +17 -0
  200. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  201. package/dist/cjs/hooks/use-reveal-chart-embed.js +40 -0
  202. package/dist/cjs/hooks/use-selection-move.d.ts.map +1 -1
  203. package/dist/cjs/hooks/use-selection-move.js +14 -6
  204. package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -1
  205. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-selection-renderer.js +37 -7
  207. package/dist/cjs/hooks/use-selection-resize.d.ts.map +1 -1
  208. package/dist/cjs/hooks/use-selection-resize.js +13 -6
  209. package/dist/cjs/hooks/use-selection.d.ts +9 -1
  210. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  211. package/dist/cjs/hooks/use-selection.js +177 -55
  212. package/dist/cjs/hooks/use-structured-reference-selection.d.ts +1 -1
  213. package/dist/cjs/hooks/use-structured-reference-selection.d.ts.map +1 -1
  214. package/dist/cjs/hooks/use-structured-reference-selection.js +10 -0
  215. package/dist/cjs/hooks/use-table-hit-zones.d.ts +61 -0
  216. package/dist/cjs/hooks/use-table-hit-zones.d.ts.map +1 -0
  217. package/dist/cjs/hooks/use-table-hit-zones.js +157 -0
  218. package/dist/cjs/hooks/use-table-resizer.d.ts +7 -0
  219. package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
  220. package/dist/cjs/hooks/use-table-resizer.js +38 -18
  221. package/dist/cjs/hooks/use-touch.d.ts.map +1 -1
  222. package/dist/cjs/hooks/use-touch.js +16 -8
  223. package/dist/cjs/index.d.ts +13 -0
  224. package/dist/cjs/index.d.ts.map +1 -1
  225. package/dist/cjs/index.js +17 -1
  226. package/dist/cjs/release-date.js +1 -1
  227. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  228. package/dist/cjs/types.d.ts +289 -4
  229. package/dist/cjs/types.d.ts.map +1 -1
  230. package/dist/cjs/utils/copy-as-picture.d.ts +13 -0
  231. package/dist/cjs/utils/copy-as-picture.d.ts.map +1 -0
  232. package/dist/cjs/utils/copy-as-picture.js +70 -0
  233. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts +19 -0
  234. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  235. package/dist/cjs/utils/pivot-chart-field-buttons.js +25 -0
  236. package/dist/cjs/utils/z-order.d.ts +47 -0
  237. package/dist/cjs/utils/z-order.d.ts.map +1 -0
  238. package/dist/cjs/utils/z-order.js +124 -0
  239. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  240. package/dist/esm/api/banded-ranges.js +39 -12
  241. package/dist/esm/api/calculated-column-fill.d.ts +43 -0
  242. package/dist/esm/api/calculated-column-fill.d.ts.map +1 -0
  243. package/dist/esm/api/calculated-column-fill.js +10 -0
  244. package/dist/esm/api/chart-sheet.d.ts +8 -0
  245. package/dist/esm/api/chart-sheet.d.ts.map +1 -0
  246. package/dist/esm/api/chart-sheet.js +15 -0
  247. package/dist/esm/api/chart-source-ranges.d.ts +64 -0
  248. package/dist/esm/api/chart-source-ranges.d.ts.map +1 -0
  249. package/dist/esm/api/chart-source-ranges.js +168 -0
  250. package/dist/esm/api/selections.d.ts +3 -3
  251. package/dist/esm/api/selections.d.ts.map +1 -1
  252. package/dist/esm/api/selections.js +26 -2
  253. package/dist/esm/api/spreadsheet-api.d.ts +16 -3
  254. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
  255. package/dist/esm/api/spreadsheet-api.js +18 -2
  256. package/dist/esm/api/table-auto-expansion.d.ts +37 -0
  257. package/dist/esm/api/table-auto-expansion.d.ts.map +1 -0
  258. package/dist/esm/api/table-auto-expansion.js +10 -0
  259. package/dist/esm/api/table.d.ts +49 -1
  260. package/dist/esm/api/table.d.ts.map +1 -1
  261. package/dist/esm/api/table.js +138 -1
  262. package/dist/esm/api/validation.d.ts +26 -1
  263. package/dist/esm/api/validation.d.ts.map +1 -1
  264. package/dist/esm/api/validation.js +119 -9
  265. package/dist/esm/atoms/calculated-column-fill.atom.d.ts +15 -0
  266. package/dist/esm/atoms/calculated-column-fill.atom.d.ts.map +1 -0
  267. package/dist/esm/atoms/calculated-column-fill.atom.js +12 -0
  268. package/dist/esm/atoms/chart-actions.atom.d.ts +40 -0
  269. package/dist/esm/atoms/chart-actions.atom.d.ts.map +1 -0
  270. package/dist/esm/atoms/chart-actions.atom.js +58 -0
  271. package/dist/esm/atoms/index.d.ts +5 -0
  272. package/dist/esm/atoms/index.d.ts.map +1 -1
  273. package/dist/esm/atoms/index.js +5 -0
  274. package/dist/esm/atoms/move-chart-dialog.atom.d.ts +28 -0
  275. package/dist/esm/atoms/move-chart-dialog.atom.d.ts.map +1 -0
  276. package/dist/esm/atoms/move-chart-dialog.atom.js +25 -0
  277. package/dist/esm/atoms/selected-chart-embed.atom.d.ts +9 -1
  278. package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -1
  279. package/dist/esm/atoms/selected-chart-embed.atom.js +19 -2
  280. package/dist/esm/atoms/selected-chart-series.atom.d.ts +24 -0
  281. package/dist/esm/atoms/selected-chart-series.atom.d.ts.map +1 -0
  282. package/dist/esm/atoms/selected-chart-series.atom.js +4 -0
  283. package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
  284. package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
  285. package/dist/esm/atoms/sheet-context.atom.js +2 -0
  286. package/dist/esm/atoms/sparkline-dialog.atom.d.ts +34 -0
  287. package/dist/esm/atoms/sparkline-dialog.atom.d.ts.map +1 -0
  288. package/dist/esm/atoms/sparkline-dialog.atom.js +21 -0
  289. package/dist/esm/atoms/table-auto-expansion.atom.d.ts +14 -0
  290. package/dist/esm/atoms/table-auto-expansion.atom.d.ts.map +1 -0
  291. package/dist/esm/atoms/table-auto-expansion.atom.js +11 -0
  292. package/dist/esm/components/calculated-column-smart-tag/index.d.ts +25 -0
  293. package/dist/esm/components/calculated-column-smart-tag/index.d.ts.map +1 -0
  294. package/dist/esm/components/calculated-column-smart-tag/index.js +25 -0
  295. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  296. package/dist/esm/components/canvas-grid/index.js +346 -26
  297. package/dist/esm/components/canvas-grid/typings.d.ts +127 -14
  298. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  299. package/dist/esm/components/cell/index.d.ts.map +1 -1
  300. package/dist/esm/components/cell/index.js +3 -3
  301. package/dist/esm/components/cell/typings.d.ts +13 -0
  302. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  303. package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
  304. package/dist/esm/components/cell-filter/index.js +14 -3
  305. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  306. package/dist/esm/components/cell-input/formula-bar-cell-input.js +4 -1
  307. package/dist/esm/components/cell-structured/sparkline-math.d.ts +28 -5
  308. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  309. package/dist/esm/components/cell-structured/sparkline-math.js +58 -4
  310. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  311. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  312. package/dist/esm/components/cell-structured/sparkline.js +3 -3
  313. package/dist/esm/components/cell-structured/types.d.ts +1 -1
  314. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  315. package/dist/esm/components/chart-sheet-view/index.d.ts +27 -0
  316. package/dist/esm/components/chart-sheet-view/index.d.ts.map +1 -0
  317. package/dist/esm/components/chart-sheet-view/index.js +30 -0
  318. package/dist/esm/components/context-menu/embed-context-menu.d.ts +48 -0
  319. package/dist/esm/components/context-menu/embed-context-menu.d.ts.map +1 -0
  320. package/dist/esm/components/context-menu/embed-context-menu.js +112 -0
  321. package/dist/esm/components/context-menu/index.d.ts +23 -2
  322. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  323. package/dist/esm/components/context-menu/index.js +174 -38
  324. package/dist/esm/components/context-menu/total-row-function-menu.d.ts +33 -0
  325. package/dist/esm/components/context-menu/total-row-function-menu.d.ts.map +1 -0
  326. package/dist/esm/components/context-menu/total-row-function-menu.js +50 -0
  327. package/dist/esm/components/context-menu/total-row-functions.d.ts +12 -12
  328. package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -1
  329. package/dist/esm/components/context-menu/total-row-functions.js +29 -31
  330. package/dist/esm/components/embeds/chart-component.d.ts +17 -0
  331. package/dist/esm/components/embeds/chart-component.d.ts.map +1 -1
  332. package/dist/esm/components/embeds/embed-draggable.d.ts +61 -4
  333. package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
  334. package/dist/esm/components/embeds/embed-draggable.js +207 -47
  335. package/dist/esm/components/filter-box/date-tree.d.ts +28 -0
  336. package/dist/esm/components/filter-box/date-tree.d.ts.map +1 -0
  337. package/dist/esm/components/filter-box/date-tree.js +107 -0
  338. package/dist/esm/components/filter-box/filter-by-condition.d.ts +14 -2
  339. package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -1
  340. package/dist/esm/components/filter-box/filter-by-condition.js +72 -16
  341. package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -1
  342. package/dist/esm/components/filter-box/filter-by-value.js +110 -39
  343. package/dist/esm/components/filter-box/index.d.ts +7 -1
  344. package/dist/esm/components/filter-box/index.d.ts.map +1 -1
  345. package/dist/esm/components/filter-box/index.js +88 -2
  346. package/dist/esm/components/move-chart-dialog/index.d.ts +34 -0
  347. package/dist/esm/components/move-chart-dialog/index.d.ts.map +1 -0
  348. package/dist/esm/components/move-chart-dialog/index.js +88 -0
  349. package/dist/esm/components/print-preview/page-block.d.ts +9 -1
  350. package/dist/esm/components/print-preview/page-block.d.ts.map +1 -1
  351. package/dist/esm/components/print-preview/page-block.js +27 -2
  352. package/dist/esm/components/print-preview/print-preview-dialog.d.ts +8 -1
  353. package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -1
  354. package/dist/esm/components/print-preview/print-preview-dialog.js +92 -4
  355. package/dist/esm/components/print-preview/run-print.d.ts.map +1 -1
  356. package/dist/esm/components/print-preview/run-print.js +17 -7
  357. package/dist/esm/components/print-preview/use-page-layout.d.ts +47 -0
  358. package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -1
  359. package/dist/esm/components/print-preview/use-page-layout.js +55 -0
  360. package/dist/esm/components/resizer/index.d.ts.map +1 -1
  361. package/dist/esm/components/resizer/index.js +8 -4
  362. package/dist/esm/components/selection/index.d.ts +1 -1
  363. package/dist/esm/components/selection/index.d.ts.map +1 -1
  364. package/dist/esm/components/selection/index.js +6 -2
  365. package/dist/esm/components/selection/types.d.ts +15 -0
  366. package/dist/esm/components/selection/types.d.ts.map +1 -1
  367. package/dist/esm/components/sheet-search/index.d.ts.map +1 -1
  368. package/dist/esm/components/sheet-search/index.js +5 -2
  369. package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -1
  370. package/dist/esm/components/sheet-tabs/index.js +2 -2
  371. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +1 -1
  372. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  373. package/dist/esm/components/sheet-tabs/sheet-tab.js +4 -2
  374. package/dist/esm/components/sparkline-dialog/index.d.ts +43 -0
  375. package/dist/esm/components/sparkline-dialog/index.d.ts.map +1 -0
  376. package/dist/esm/components/sparkline-dialog/index.js +123 -0
  377. package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -1
  378. package/dist/esm/components/subtotal-dialog/index.js +10 -1
  379. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  380. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  381. package/dist/esm/components/table-auto-expansion-smart-tag/index.js +25 -0
  382. package/dist/esm/components/toolbar/index.d.ts +1 -0
  383. package/dist/esm/components/toolbar/index.d.ts.map +1 -1
  384. package/dist/esm/components/toolbar/index.js +1 -0
  385. package/dist/esm/components/toolbar/insert-menu.d.ts +2 -1
  386. package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -1
  387. package/dist/esm/components/toolbar/insert-menu.js +24 -1
  388. package/dist/esm/components/toolbar/merge-cells-selector.d.ts +4 -1
  389. package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  390. package/dist/esm/components/toolbar/merge-cells-selector.js +10 -6
  391. package/dist/esm/components/toolbar/sparkline-actions.d.ts +31 -0
  392. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -0
  393. package/dist/esm/components/toolbar/sparkline-actions.js +238 -0
  394. package/dist/esm/components/toolbar/table-actions.d.ts +9 -1
  395. package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -1
  396. package/dist/esm/components/toolbar/table-actions.js +15 -7
  397. package/dist/esm/components/toolbar/table-style-selector.d.ts +38 -2
  398. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  399. package/dist/esm/components/toolbar/table-style-selector.js +210 -399
  400. package/dist/esm/config.d.ts +2 -0
  401. package/dist/esm/config.d.ts.map +1 -1
  402. package/dist/esm/config.js +30 -0
  403. package/dist/esm/helpers.d.ts +1 -1
  404. package/dist/esm/helpers.d.ts.map +1 -1
  405. package/dist/esm/helpers.js +12 -1
  406. package/dist/esm/hooks/use-cell-renderer.d.ts +16 -1
  407. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  408. package/dist/esm/hooks/use-cell-renderer.js +14 -4
  409. package/dist/esm/hooks/use-chart-clipboard.d.ts +55 -0
  410. package/dist/esm/hooks/use-chart-clipboard.d.ts.map +1 -0
  411. package/dist/esm/hooks/use-chart-clipboard.js +213 -0
  412. package/dist/esm/hooks/use-chart-source-ranges.d.ts +27 -0
  413. package/dist/esm/hooks/use-chart-source-ranges.d.ts.map +1 -0
  414. package/dist/esm/hooks/use-chart-source-ranges.js +186 -0
  415. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-context-setter.js +3 -1
  417. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  418. package/dist/esm/hooks/use-copy-paste-cut.js +6 -4
  419. package/dist/esm/hooks/use-editable.d.ts +9 -1
  420. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  421. package/dist/esm/hooks/use-editable.js +25 -1
  422. package/dist/esm/hooks/use-embeds-charts.d.ts +64 -4
  423. package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -1
  424. package/dist/esm/hooks/use-embeds-charts.js +394 -39
  425. package/dist/esm/hooks/use-grid-children.d.ts +2 -2
  426. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
  427. package/dist/esm/hooks/use-grid-children.js +8 -2
  428. package/dist/esm/hooks/use-header-actions.d.ts.map +1 -1
  429. package/dist/esm/hooks/use-header-actions.js +11 -4
  430. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  431. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  432. package/dist/esm/hooks/use-keyboard-handler.d.ts +2 -1
  433. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  434. package/dist/esm/hooks/use-keyboard-handler.js +8 -2
  435. package/dist/esm/hooks/use-move-columns-rows.d.ts.map +1 -1
  436. package/dist/esm/hooks/use-move-columns-rows.js +12 -6
  437. package/dist/esm/hooks/use-reveal-chart-embed.d.ts +17 -0
  438. package/dist/esm/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  439. package/dist/esm/hooks/use-reveal-chart-embed.js +35 -0
  440. package/dist/esm/hooks/use-selection-move.d.ts.map +1 -1
  441. package/dist/esm/hooks/use-selection-move.js +11 -4
  442. package/dist/esm/hooks/use-selection-renderer.d.ts +13 -1
  443. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  444. package/dist/esm/hooks/use-selection-renderer.js +35 -6
  445. package/dist/esm/hooks/use-selection-resize.d.ts.map +1 -1
  446. package/dist/esm/hooks/use-selection-resize.js +11 -5
  447. package/dist/esm/hooks/use-selection.d.ts +9 -1
  448. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  449. package/dist/esm/hooks/use-selection.js +172 -54
  450. package/dist/esm/hooks/use-structured-reference-selection.d.ts +1 -1
  451. package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -1
  452. package/dist/esm/hooks/use-structured-reference-selection.js +16 -0
  453. package/dist/esm/hooks/use-table-hit-zones.d.ts +61 -0
  454. package/dist/esm/hooks/use-table-hit-zones.d.ts.map +1 -0
  455. package/dist/esm/hooks/use-table-hit-zones.js +146 -0
  456. package/dist/esm/hooks/use-table-resizer.d.ts +7 -0
  457. package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
  458. package/dist/esm/hooks/use-table-resizer.js +36 -19
  459. package/dist/esm/hooks/use-touch.d.ts.map +1 -1
  460. package/dist/esm/hooks/use-touch.js +15 -7
  461. package/dist/esm/index.d.ts +13 -0
  462. package/dist/esm/index.d.ts.map +1 -1
  463. package/dist/esm/index.js +13 -0
  464. package/dist/esm/release-date.js +1 -1
  465. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  466. package/dist/esm/types.d.ts +289 -4
  467. package/dist/esm/types.d.ts.map +1 -1
  468. package/dist/esm/utils/copy-as-picture.d.ts +13 -0
  469. package/dist/esm/utils/copy-as-picture.d.ts.map +1 -0
  470. package/dist/esm/utils/copy-as-picture.js +45 -0
  471. package/dist/esm/utils/pivot-chart-field-buttons.d.ts +19 -0
  472. package/dist/esm/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  473. package/dist/esm/utils/pivot-chart-field-buttons.js +18 -0
  474. package/dist/esm/utils/z-order.d.ts +47 -0
  475. package/dist/esm/utils/z-order.d.ts.map +1 -0
  476. package/dist/esm/utils/z-order.js +111 -0
  477. package/dist/spreadsheet.min.css +1 -1
  478. package/package.json +8 -6
  479. package/dist/cjs/components/cell-editor/helpers.spec.d.ts +0 -2
  480. package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +0 -1
  481. package/dist/cjs/components/cell-editor/helpers.spec.js +0 -32
  482. package/dist/esm/components/cell-editor/helpers.spec.d.ts +0 -2
  483. package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +0 -1
  484. 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.FilterBox = exports.FilterBoxWrapper = exports.isTableView = void 0;
3
+ exports.FilterBox = exports.FilterBoxWrapper = exports.hasActiveFilterCriteria = exports.isTableView = 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");
@@ -19,6 +19,21 @@ var isTableView = function (filter) {
19
19
  return "columns" in filter;
20
20
  };
21
21
  exports.isTableView = isTableView;
22
+ /**
23
+ * Whether a column's stored criteria still filter anything — what enables
24
+ * Excel's "Clear Filter From <column>" item. Same test as the state layer's
25
+ * `isFilterCriteriaActive`.
26
+ */
27
+ var hasActiveFilterCriteria = function (criteria) {
28
+ var _a, _b, _c;
29
+ return Boolean(criteria &&
30
+ (((_a = criteria.condition) === null || _a === void 0 ? void 0 : _a.type) ||
31
+ ((_b = criteria.condition2) === null || _b === void 0 ? void 0 : _b.type) ||
32
+ ((_c = criteria.visibleValues) === null || _c === void 0 ? void 0 : _c.length) ||
33
+ criteria.colorFilter ||
34
+ criteria.iconFilter));
35
+ };
36
+ exports.hasActiveFilterCriteria = hasActiveFilterCriteria;
22
37
  // Excel-style "Auto apply": changes in the filter box apply live without
23
38
  // pressing Apply. On by default like Excel; unchecking it survives across
24
39
  // filter boxes and sessions, matching Excel's sticky checkbox.
@@ -45,7 +60,7 @@ var storeAutoApplyPreference = function (value) {
45
60
  }
46
61
  };
47
62
  exports.FilterBoxWrapper = (0, react_2.memo)(function (_a) {
48
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
63
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
49
64
  var dimensionIndex = _a.dimensionIndex, onOpenChange = _a.onOpenChange, onSort = _a.onSort, onFilter = _a.onFilter, onDeleteTableColumn = _a.onDeleteTableColumn, onInsertTableColumn = _a.onInsertTableColumn, sheetId = _a.sheetId, filter = _a.filter, values = _a.values, availableCellColors = _a.availableCellColors, availableFontColors = _a.availableFontColors, availableIcons = _a.availableIcons, customLists = _a.customLists;
50
65
  // Opens the host-mounted multi-level Sort dialog.
51
66
  var openSortDialog = (0, sort_dialog_atom_1.useOpenSortDialog)();
@@ -56,23 +71,30 @@ exports.FilterBoxWrapper = (0, react_2.memo)(function (_a) {
56
71
  // Table view
57
72
  var isTable = (0, exports.isTableView)(filter);
58
73
  // State
59
- var _p = tslib_1.__read((0, react_1.useState)((_d = (_c = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition) === null || _c === void 0 ? void 0 : _c.type) !== null && _d !== void 0 ? _d : undefined), 2), conditionType = _p[0], onChangeConditionType = _p[1];
74
+ var _2 = tslib_1.__read((0, react_1.useState)((_d = (_c = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition) === null || _c === void 0 ? void 0 : _c.type) !== null && _d !== void 0 ? _d : undefined), 2), conditionType = _2[0], onChangeConditionType = _2[1];
60
75
  // Hidden values
61
- var _q = tslib_1.__read((0, react_1.useState)((_e = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.visibleValues) !== null && _e !== void 0 ? _e : values), 2), visibleValues = _q[0], onChangeVisibleValues = _q[1];
62
- var _r = tslib_1.__read((0, react_1.useState)((_j = (_h = (_g = (_f = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition) === null || _f === void 0 ? void 0 : _f.values) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.userEnteredValue) !== null && _j !== void 0 ? _j : ""), 2), fromValue = _r[0], onChangeFromValue = _r[1];
76
+ var _3 = tslib_1.__read((0, react_1.useState)((_e = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.visibleValues) !== null && _e !== void 0 ? _e : values), 2), visibleValues = _3[0], onChangeVisibleValues = _3[1];
77
+ var _4 = tslib_1.__read((0, react_1.useState)((_j = (_h = (_g = (_f = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition) === null || _f === void 0 ? void 0 : _f.values) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.userEnteredValue) !== null && _j !== void 0 ? _j : ""), 2), fromValue = _4[0], onChangeFromValue = _4[1];
63
78
  // For range : Between type
64
- var _s = tslib_1.__read((0, react_1.useState)((_o = (_m = (_l = (_k = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition) === null || _k === void 0 ? void 0 : _k.values) === null || _l === void 0 ? void 0 : _l[1]) === null || _m === void 0 ? void 0 : _m.userEnteredValue) !== null && _o !== void 0 ? _o : ""), 2), toValue = _s[0], onChangeToValue = _s[1];
79
+ var _5 = tslib_1.__read((0, react_1.useState)((_o = (_m = (_l = (_k = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition) === null || _k === void 0 ? void 0 : _k.values) === null || _l === void 0 ? void 0 : _l[1]) === null || _m === void 0 ? void 0 : _m.userEnteredValue) !== null && _o !== void 0 ? _o : ""), 2), toValue = _5[0], onChangeToValue = _5[1];
65
80
  // Color & icon filter criteria (Phase 3). `null` means "cleared this
66
81
  // turn"; `undefined` (initial) means "no change — preserve any
67
82
  // existing criterion from the spec".
68
- var _t = tslib_1.__read((0, react_1.useState)(undefined), 2), colorFilter = _t[0], onChangeColorFilter = _t[1];
69
- var _u = tslib_1.__read((0, react_1.useState)(undefined), 2), iconFilter = _u[0], onChangeIconFilter = _u[1];
83
+ var _6 = tslib_1.__read((0, react_1.useState)(undefined), 2), colorFilter = _6[0], onChangeColorFilter = _6[1];
84
+ var _7 = tslib_1.__read((0, react_1.useState)(undefined), 2), iconFilter = _7[0], onChangeIconFilter = _7[1];
85
+ // Excel's Custom AutoFilter second clause + And / Or join.
86
+ var _8 = tslib_1.__read((0, react_1.useState)((_q = (_p = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition2) === null || _p === void 0 ? void 0 : _p.type) !== null && _q !== void 0 ? _q : undefined), 2), condition2Type = _8[0], onChangeCondition2Type = _8[1];
87
+ var _9 = tslib_1.__read((0, react_1.useState)((_u = (_t = (_s = (_r = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition2) === null || _r === void 0 ? void 0 : _r.values) === null || _s === void 0 ? void 0 : _s[0]) === null || _t === void 0 ? void 0 : _t.userEnteredValue) !== null && _u !== void 0 ? _u : ""), 2), condition2From = _9[0], onChangeCondition2From = _9[1];
88
+ var _10 = tslib_1.__read((0, react_1.useState)((_y = (_x = (_w = (_v = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.condition2) === null || _v === void 0 ? void 0 : _v.values) === null || _w === void 0 ? void 0 : _w[1]) === null || _x === void 0 ? void 0 : _x.userEnteredValue) !== null && _y !== void 0 ? _y : ""), 2), condition2To = _10[0], onChangeCondition2To = _10[1];
89
+ var _11 = tslib_1.__read((0, react_1.useState)((_z = filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.conditionJoin) !== null && _z !== void 0 ? _z : "AND"), 2), conditionJoin = _11[0], onChangeConditionJoin = _11[1];
90
+ // "Sort by Color" is a collapsed sub-menu of the dropdown, like Excel's.
91
+ var _12 = tslib_1.__read((0, react_1.useState)(false), 2), showSortByColor = _12[0], setShowSortByColor = _12[1];
70
92
  // Auto apply (Excel parity). `pendingAutoApplyTick` counts user edits made
71
93
  // while auto apply is on; the debounced effect below applies the newest
72
94
  // state once per burst.
73
- var _v = tslib_1.__read((0, react_1.useState)(readAutoApplyPreference), 2), autoApply = _v[0], setAutoApply = _v[1];
95
+ var _13 = tslib_1.__read((0, react_1.useState)(readAutoApplyPreference), 2), autoApply = _13[0], setAutoApply = _13[1];
74
96
  var autoApplyRef = (0, react_1.useRef)(autoApply);
75
- var _w = tslib_1.__read((0, react_1.useState)(0), 2), pendingAutoApplyTick = _w[0], setPendingAutoApplyTick = _w[1];
97
+ var _14 = tslib_1.__read((0, react_1.useState)(0), 2), pendingAutoApplyTick = _14[0], setPendingAutoApplyTick = _14[1];
76
98
  // Armed only after mount: FilterByCondition clears its To value via a
77
99
  // mount-time layout effect — a programmatic write, not a user edit.
78
100
  // Without this guard, just opening the filter box would fire an apply.
@@ -177,9 +199,22 @@ exports.FilterBoxWrapper = (0, react_2.memo)(function (_a) {
177
199
  }
178
200
  return undefined;
179
201
  })();
202
+ var condition2Values = [];
203
+ if (condition2From) {
204
+ condition2Values.push({ userEnteredValue: condition2From });
205
+ }
206
+ if (condition2To) {
207
+ condition2Values.push({ userEnteredValue: condition2To });
208
+ }
209
+ // A second clause without a first is applied as the only clause.
210
+ var condition2 = condition2Type
211
+ ? { type: condition2Type, values: condition2Values }
212
+ : null;
180
213
  onFilter === null || onFilter === void 0 ? void 0 : onFilter(sheetId, filter, dimensionIndex, conditionType, conditionValues, normalizedVisibleValues, {
181
214
  colorFilter: colorFilter,
182
215
  iconFilter: iconFilter,
216
+ condition2: condition2,
217
+ conditionJoin: condition2 ? conditionJoin : null,
183
218
  });
184
219
  }, [
185
220
  sheetId,
@@ -189,11 +224,39 @@ exports.FilterBoxWrapper = (0, react_2.memo)(function (_a) {
189
224
  fromValue,
190
225
  toValue,
191
226
  conditionType,
227
+ condition2Type,
228
+ condition2From,
229
+ condition2To,
230
+ conditionJoin,
192
231
  visibleValues,
193
232
  values,
194
233
  colorFilter,
195
234
  iconFilter,
196
235
  ]);
236
+ // Excel's "Clear Filter From <column>": drop every criterion on this
237
+ // column only — the filter (and the other columns' criteria) stay.
238
+ var columnLabel = isTable
239
+ ? (_1 = (_0 = filter.columns) === null || _0 === void 0 ? void 0 : _0[dimensionIndex]) === null || _1 === void 0 ? void 0 : _1.name
240
+ : undefined;
241
+ var clearLabel = "Clear Filter From \"".concat(columnLabel !== null && columnLabel !== void 0 ? columnLabel : "Column ".concat((0, utils_1.number2Alpha)(filter.range.startColumnIndex + dimensionIndex)), "\"");
242
+ var canClearColumn = (0, exports.hasActiveFilterCriteria)(filterCriteria);
243
+ var onClearColumnFilter = (0, react_2.useCallback)(function () {
244
+ onFilter === null || onFilter === void 0 ? void 0 : onFilter(sheetId, filter, dimensionIndex, undefined, undefined, undefined, {
245
+ colorFilter: null,
246
+ iconFilter: null,
247
+ condition2: null,
248
+ });
249
+ onClose();
250
+ }, [onFilter, sheetId, filter, dimensionIndex, onClose]);
251
+ // Excel's "Sort by Color": surface the picked fill / font colour or CF icon
252
+ // to the top of the column (one level, ascending).
253
+ var onSortByColor = (0, react_2.useCallback)(function (options) {
254
+ onSort === null || onSort === void 0 ? void 0 : onSort(sheetId, filter, dimensionIndex, "ASCENDING", options);
255
+ onClose();
256
+ }, [onSort, sheetId, filter, dimensionIndex, onClose]);
257
+ var hasSortColors = Boolean((availableCellColors === null || availableCellColors === void 0 ? void 0 : availableCellColors.length) ||
258
+ (availableFontColors === null || availableFontColors === void 0 ? void 0 : availableFontColors.length) ||
259
+ (availableIcons === null || availableIcons === void 0 ? void 0 : availableIcons.length));
197
260
  // Debounced auto-apply. `appliedTickRef` keeps applyFilter identity
198
261
  // changes that carry no user edit (e.g. the async values re-sync above)
199
262
  // from re-applying an already-flushed tick.
@@ -250,6 +313,10 @@ exports.FilterBoxWrapper = (0, react_2.memo)(function (_a) {
250
313
  var onUserChangeColorFilter = (0, react_2.useMemo)(function () { return wrapWithAutoApply(onChangeColorFilter); }, [wrapWithAutoApply]);
251
314
  var onUserChangeIconFilter = (0, react_2.useMemo)(function () { return wrapWithAutoApply(onChangeIconFilter); }, [wrapWithAutoApply]);
252
315
  var onUserChangeVisibleValues = (0, react_2.useMemo)(function () { return wrapWithAutoApply(onChangeVisibleValues); }, [wrapWithAutoApply]);
316
+ var onUserChangeCondition2Type = (0, react_2.useMemo)(function () { return wrapWithAutoApply(onChangeCondition2Type); }, [wrapWithAutoApply]);
317
+ var onUserChangeCondition2From = (0, react_2.useMemo)(function () { return wrapWithAutoApply(onChangeCondition2From); }, [wrapWithAutoApply]);
318
+ var onUserChangeCondition2To = (0, react_2.useMemo)(function () { return wrapWithAutoApply(onChangeCondition2To); }, [wrapWithAutoApply]);
319
+ var onUserChangeConditionJoin = (0, react_2.useMemo)(function () { return wrapWithAutoApply(onChangeConditionJoin); }, [wrapWithAutoApply]);
253
320
  // Apply
254
321
  var onSubmit = (0, react_2.useCallback)(function (event) {
255
322
  event.preventDefault();
@@ -309,8 +376,32 @@ exports.FilterBoxWrapper = (0, react_2.memo)(function (_a) {
309
376
  react_1.default.createElement(ui_1.DropdownLeftSlot, { className: "text-base leading-4" },
310
377
  react_1.default.createElement(icons_1.SortDownIcon, null)),
311
378
  "Custom sort\u2026"),
379
+ react_1.default.createElement(ui_1.PopoverMenuItem, { type: "button", disabled: !hasSortColors, "aria-expanded": showSortByColor, onClick: function () { return setShowSortByColor(function (open) { return !open; }); } },
380
+ react_1.default.createElement(ui_1.DropdownLeftSlot, { className: "text-base leading-4" }, showSortByColor ? react_1.default.createElement(icons_1.ChevronDownIcon, null) : react_1.default.createElement(icons_1.ChevronRightIcon, null)),
381
+ "Sort by Color"),
382
+ showSortByColor && hasSortColors ? (react_1.default.createElement("div", { className: "flex flex-col pl-6 pb-1", role: "group", "aria-label": "Sort by Color" }, availableCellColors === null || availableCellColors === void 0 ? void 0 :
383
+ availableCellColors.map(function (color) { return (react_1.default.createElement(ui_1.Button, { key: "cell-".concat(color), type: "button", "aria-label": "Sort by cell color ".concat(color), title: "Sort by cell color ".concat(color), onClick: function () { return onSortByColor({ sortBy: "cellColor", sortColor: color }); }, className: "justify-start px-2 py-0 gap-2 text-sm text-left w-full h-6" },
384
+ react_1.default.createElement("span", { className: "inline-block h-4 w-4 rounded border border-gray-300 shrink-0", style: { backgroundColor: color } }),
385
+ "Cell color ",
386
+ color)); }), availableFontColors === null || availableFontColors === void 0 ? void 0 :
387
+ availableFontColors.map(function (color) { return (react_1.default.createElement(ui_1.Button, { key: "font-".concat(color), type: "button", "aria-label": "Sort by font color ".concat(color), title: "Sort by font color ".concat(color), onClick: function () { return onSortByColor({ sortBy: "fontColor", sortColor: color }); }, className: "justify-start px-2 py-0 gap-2 text-sm text-left w-full h-6" },
388
+ react_1.default.createElement("span", { className: "inline-block h-4 w-4 rounded border border-gray-300 shrink-0", style: { backgroundColor: color } }),
389
+ "Font color ",
390
+ color)); }), availableIcons === null || availableIcons === void 0 ? void 0 :
391
+ availableIcons.map(function (icon) { return (react_1.default.createElement(ui_1.Button, { key: "icon-".concat(icon.iconSet, "-").concat(icon.iconId), type: "button", "aria-label": "Sort by ".concat(icon.iconSet, " icon ").concat(icon.iconId), title: "Sort by ".concat(icon.iconSet, " icon ").concat(icon.iconId), onClick: function () {
392
+ return onSortByColor({
393
+ sortBy: "icon",
394
+ sortIcon: { iconSet: icon.iconSet, iconId: icon.iconId },
395
+ });
396
+ }, className: "justify-start px-2 py-0 gap-2 text-sm text-left w-full h-6" },
397
+ react_1.default.createElement("span", { className: "inline-block h-4 w-4 leading-none text-center text-sm shrink-0", style: icon.color ? { color: icon.color } : undefined }, icon.glyph),
398
+ "Icon")); }))) : null,
399
+ react_1.default.createElement(ui_1.PopoverMenuItem, { type: "button", disabled: !canClearColumn, onClick: onClearColumnFilter },
400
+ react_1.default.createElement(ui_1.DropdownLeftSlot, { className: "text-base leading-4" },
401
+ react_1.default.createElement(icons_1.Cross2Icon, null)),
402
+ clearLabel),
312
403
  react_1.default.createElement("div", { className: "py-2 px-2" },
313
- react_1.default.createElement(filter_by_condition_1.FilterByCondition, { conditionType: conditionType, fromValue: fromValue, toValue: toValue, onChangeConditionType: onUserChangeConditionType, onChangeFromValue: onUserChangeFromValue, onChangeToValue: onUserChangeToValue }),
404
+ react_1.default.createElement(filter_by_condition_1.FilterByCondition, { conditionType: conditionType, fromValue: fromValue, toValue: toValue, onChangeConditionType: onUserChangeConditionType, onChangeFromValue: onUserChangeFromValue, onChangeToValue: onUserChangeToValue, condition2Type: condition2Type, condition2From: condition2From, condition2To: condition2To, conditionJoin: conditionJoin, onChangeCondition2Type: onUserChangeCondition2Type, onChangeCondition2From: onUserChangeCondition2From, onChangeCondition2To: onUserChangeCondition2To, onChangeConditionJoin: onUserChangeConditionJoin }),
314
405
  react_1.default.createElement(ui_1.Separator, { className: "mt-2 mb-2" }),
315
406
  react_1.default.createElement(filter_by_color_1.FilterByColor, { colorFilter: colorFilter === undefined
316
407
  ? filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.colorFilter
@@ -0,0 +1,34 @@
1
+ import React from "react";
2
+ import type { EmbeddedChart, MoveChartTarget, Sheet } from "../../types";
3
+ export type MoveChartDialogProps = {
4
+ /** Controls visibility. */
5
+ open: boolean;
6
+ onOpenChange(open: boolean): void;
7
+ /** The chart being moved; its `position.sheetId` is the source sheet. */
8
+ chart: EmbeddedChart;
9
+ /** Every sheet of the workbook (chartsheets are not offered as "Object in" targets). */
10
+ sheets: Sheet[];
11
+ onSubmit(target: MoveChartTarget): void;
12
+ };
13
+ /**
14
+ * Excel's "Move Chart…" dialog: "New sheet: [Chart1]" creates a chartsheet
15
+ * (a tab that is the chart, no cells) or "Object in: [Sheet]" moves the chart
16
+ * onto another worksheet. UI-only — the host turns the target into the move.
17
+ */
18
+ export declare const MoveChartDialog: React.MemoExoticComponent<({ open, onOpenChange, chart, sheets, onSubmit }: MoveChartDialogProps) => React.JSX.Element>;
19
+ export type MoveChartDialogHostProps = {
20
+ sheets: Sheet[];
21
+ /** `useCharts().onMoveChartToSheet` / the engine hook's `onMoveChartToSheet`. */
22
+ onMoveChartToSheet(chart: EmbeddedChart, target: MoveChartTarget): unknown;
23
+ };
24
+ /**
25
+ * Host-mounted, atom-driven wrapper around {@link MoveChartDialog}. Mount it
26
+ * once alongside the other editor dialogs; the chart context menu and the
27
+ * chart editor open it. Remounted per request so each opening starts from the
28
+ * chart's current sheet.
29
+ */
30
+ export declare const MoveChartDialogHost: {
31
+ ({ sheets, onMoveChartToSheet, }: MoveChartDialogHostProps): React.JSX.Element | null;
32
+ displayName: string;
33
+ };
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/move-chart-dialog/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAO3D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,MAAM,oBAAoB,GAAG;IACjC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,yEAAyE;IACzE,KAAK,EAAE,aAAa,CAAC;IACrB,wFAAwF;IACxF,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,8EACwB,oBAAoB,uBAgIvE,CAAC;AAIF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,iFAAiF;IACjF,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;CAC5E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;sCAG7B,wBAAwB;;CAiB1B,CAAC"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MoveChartDialogHost = exports.MoveChartDialog = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var ui_1 = require("@rowsncolumns/ui");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var chart_sheet_1 = require("../../api/chart-sheet");
8
+ var move_chart_dialog_atom_1 = require("../../atoms/move-chart-dialog.atom");
9
+ /**
10
+ * Excel's "Move Chart…" dialog: "New sheet: [Chart1]" creates a chartsheet
11
+ * (a tab that is the chart, no cells) or "Object in: [Sheet]" moves the chart
12
+ * onto another worksheet. UI-only — the host turns the target into the move.
13
+ */
14
+ exports.MoveChartDialog = (0, react_1.memo)(function (_a) {
15
+ var _b;
16
+ var open = _a.open, onOpenChange = _a.onOpenChange, chart = _a.chart, sheets = _a.sheets, onSubmit = _a.onSubmit;
17
+ var sourceSheetId = chart.position.sheetId;
18
+ var sourceSheet = sheets.find(function (sheet) { return sheet.sheetId === sourceSheetId; });
19
+ var sourceIsChartSheet = (sourceSheet === null || sourceSheet === void 0 ? void 0 : sourceSheet.type) === "chartsheet";
20
+ var worksheets = sheets.filter(function (sheet) { return sheet.type !== "chartsheet" && !sheet.hidden; });
21
+ // Excel pre-selects where the chart currently is: "New sheet" (with the
22
+ // chartsheet's own name) for a chartsheet chart, "Object in" otherwise.
23
+ var _c = tslib_1.__read((0, react_1.useState)(sourceIsChartSheet ? "newSheet" : "sheet"), 2), mode = _c[0], setMode = _c[1];
24
+ var _d = tslib_1.__read((0, react_1.useState)(sourceIsChartSheet && sourceSheet
25
+ ? sourceSheet.title
26
+ : (0, chart_sheet_1.getNextChartSheetTitle)(sheets)), 2), title = _d[0], setTitle = _d[1];
27
+ var _e = tslib_1.__read((0, react_1.useState)(worksheets.some(function (sheet) { return sheet.sheetId === sourceSheetId; })
28
+ ? sourceSheetId
29
+ : (_b = worksheets[0]) === null || _b === void 0 ? void 0 : _b.sheetId), 2), targetSheetId = _e[0], setTargetSheetId = _e[1];
30
+ var commit = (0, react_1.useCallback)(function () {
31
+ if (mode === "newSheet") {
32
+ var trimmed = title.trim();
33
+ // Keeping a chartsheet's own name is not a move.
34
+ if (!(sourceIsChartSheet && trimmed === (sourceSheet === null || sourceSheet === void 0 ? void 0 : sourceSheet.title))) {
35
+ onSubmit({ kind: "newSheet", title: trimmed || undefined });
36
+ }
37
+ }
38
+ else if (targetSheetId !== undefined && targetSheetId !== sourceSheetId) {
39
+ onSubmit({ kind: "sheet", sheetId: targetSheetId });
40
+ }
41
+ onOpenChange(false);
42
+ }, [
43
+ mode,
44
+ title,
45
+ targetSheetId,
46
+ sourceSheetId,
47
+ sourceIsChartSheet,
48
+ sourceSheet,
49
+ onSubmit,
50
+ onOpenChange,
51
+ ]);
52
+ return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange, modal: true },
53
+ react_1.default.createElement(ui_1.DialogContent, { className: "w-[360px] max-w-[92vw] pointer-events-auto" },
54
+ react_1.default.createElement(ui_1.DialogTitle, null, "Move Chart"),
55
+ react_1.default.createElement(ui_1.DialogCloseButton, null),
56
+ react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-4" },
57
+ react_1.default.createElement("form", { className: "flex flex-col gap-4", onSubmit: function (e) {
58
+ e.preventDefault();
59
+ commit();
60
+ } },
61
+ react_1.default.createElement("fieldset", { className: "flex flex-col gap-2 min-w-0 border-0 p-0 m-0" },
62
+ react_1.default.createElement("legend", { className: "text-xs font-medium mb-1" }, "Choose where you want the chart to be placed:"),
63
+ react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs py-0.5 cursor-pointer" },
64
+ react_1.default.createElement("input", { type: "radio", name: "move-chart-target", value: "newSheet", checked: mode === "newSheet", onChange: function () { return setMode("newSheet"); } }),
65
+ react_1.default.createElement("span", { className: "w-20 shrink-0" }, "New sheet:"),
66
+ react_1.default.createElement("input", { type: "text", "aria-label": "New sheet name", className: "flex-1 min-w-0 rounded border border-rnc-border bg-transparent px-2 py-1 text-xs", value: title, disabled: mode !== "newSheet", onChange: function (e) { return setTitle(e.target.value); }, onFocus: function () { return setMode("newSheet"); } })),
67
+ react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs py-0.5 cursor-pointer" },
68
+ react_1.default.createElement("input", { type: "radio", name: "move-chart-target", value: "sheet", checked: mode === "sheet", disabled: worksheets.length === 0, onChange: function () { return setMode("sheet"); } }),
69
+ react_1.default.createElement("span", { className: "w-20 shrink-0" }, "Object in:"),
70
+ react_1.default.createElement("select", { "aria-label": "Object in sheet", className: "flex-1 min-w-0 rounded border border-rnc-border bg-transparent px-2 py-1 text-xs", value: targetSheetId !== null && targetSheetId !== void 0 ? targetSheetId : "", disabled: mode !== "sheet" || worksheets.length === 0, onChange: function (e) { return setTargetSheetId(Number(e.target.value)); } }, worksheets.map(function (sheet) { return (react_1.default.createElement("option", { key: sheet.sheetId, value: sheet.sheetId }, sheet.title)); })))),
71
+ react_1.default.createElement(ui_1.Separator, null),
72
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
73
+ react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
74
+ react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm", autoFocus: true }, "OK")))))));
75
+ });
76
+ exports.MoveChartDialog.displayName = "MoveChartDialog";
77
+ /**
78
+ * Host-mounted, atom-driven wrapper around {@link MoveChartDialog}. Mount it
79
+ * once alongside the other editor dialogs; the chart context menu and the
80
+ * chart editor open it. Remounted per request so each opening starts from the
81
+ * chart's current sheet.
82
+ */
83
+ var MoveChartDialogHost = function (_a) {
84
+ var sheets = _a.sheets, onMoveChartToSheet = _a.onMoveChartToSheet;
85
+ (0, move_chart_dialog_atom_1.useRegisterMoveChartDialogHost)();
86
+ var _b = tslib_1.__read((0, move_chart_dialog_atom_1.useMoveChartDialogState)(), 2), request = _b[0], setRequest = _b[1];
87
+ var close = (0, react_1.useCallback)(function () { return setRequest(null); }, [setRequest]);
88
+ if (!request)
89
+ return null;
90
+ return (react_1.default.createElement(exports.MoveChartDialog, { key: String(request.chart.chartId), open: true, onOpenChange: function (open) {
91
+ if (!open)
92
+ close();
93
+ }, chart: request.chart, sheets: sheets, onSubmit: function (target) { return onMoveChartToSheet(request.chart, target); } }));
94
+ };
95
+ exports.MoveChartDialogHost = MoveChartDialogHost;
96
+ exports.MoveChartDialogHost.displayName = "MoveChartDialogHost";
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import type { CellFormat, GridRange } from "@rowsncolumns/common-types";
3
- import type { PageBlock as PageBlockType } from "./use-page-layout";
3
+ import type { PageBlock as PageBlockType, PrintedChart } from "./use-page-layout";
4
4
  import { type HeaderFooterFields, type Margins, type PrintAlignment, type PrintVerticalAlignment } from "./settings";
5
5
  export type CellAccess = {
6
6
  sheetId: number;
@@ -57,6 +57,14 @@ export type PageBlockProps = CellAccess & {
57
57
  * is dropped so the iframe-side rendering doesn't waste ink on it.
58
58
  */
59
59
  screen?: boolean;
60
+ /**
61
+ * Charts whose anchor cell lands on this page (`placeChartsOnPages`),
62
+ * drawn over the cells at their sheet position. `imageUrl` is the
63
+ * renderer's PNG capture; without one a titled frame stands in.
64
+ */
65
+ charts?: Array<PrintedChart & {
66
+ imageUrl?: string;
67
+ }>;
60
68
  };
61
69
  export declare const PageBlock: React.FC<PageBlockProps>;
62
70
  //# sourceMappingURL=page-block.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-block.d.ts","sourceRoot":"","sources":["../../../../components/print-preview/page-block.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACV,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG;IACxC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,EAAE,cAAc,CAAC;IACpC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,kBAAkB,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,IAAI,CAAC;KACX,CAAC;IACF;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA+HF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA6Q9C,CAAC"}
1
+ {"version":3,"file":"page-block.d.ts","sourceRoot":"","sources":["../../../../components/print-preview/page-block.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACV,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EACV,SAAS,IAAI,aAAa,EAC1B,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG;IACxC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,EAAE,cAAc,CAAC;IACpC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,kBAAkB,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,IAAI,CAAC;KACX,CAAC;IACF;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC;AA+HF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2T9C,CAAC"}
@@ -128,7 +128,7 @@ var HeaderFooterStrip = function (_a) {
128
128
  react_1.default.createElement("div", { style: tslib_1.__assign(tslib_1.__assign({}, cellBase), { justifyContent: "flex-end" }) }, right)));
129
129
  };
130
130
  var PageBlock = function (_a) {
131
- var block = _a.block, pageWidth = _a.pageWidth, pageHeight = _a.pageHeight, margins = _a.margins, scale = _a.scale, showGridlines = _a.showGridlines, showNotes = _a.showNotes, horizontalAlignment = _a.horizontalAlignment, verticalAlignment = _a.verticalAlignment, sheetId = _a.sheetId, getFormattedValue = _a.getFormattedValue, getEffectiveFormat = _a.getEffectiveFormat, getColumnWidth = _a.getColumnWidth, getRowHeight = _a.getRowHeight, merges = _a.merges, hasNote = _a.hasNote, frozenRowStart = _a.frozenRowStart, frozenRowEnd = _a.frozenRowEnd, frozenColumnStart = _a.frozenColumnStart, frozenColumnEnd = _a.frozenColumnEnd, headerFooter = _a.headerFooter, _b = _a.screen, screen = _b === void 0 ? true : _b;
131
+ var block = _a.block, pageWidth = _a.pageWidth, pageHeight = _a.pageHeight, margins = _a.margins, scale = _a.scale, showGridlines = _a.showGridlines, showNotes = _a.showNotes, horizontalAlignment = _a.horizontalAlignment, verticalAlignment = _a.verticalAlignment, sheetId = _a.sheetId, getFormattedValue = _a.getFormattedValue, getEffectiveFormat = _a.getEffectiveFormat, getColumnWidth = _a.getColumnWidth, getRowHeight = _a.getRowHeight, merges = _a.merges, hasNote = _a.hasNote, frozenRowStart = _a.frozenRowStart, frozenRowEnd = _a.frozenRowEnd, frozenColumnStart = _a.frozenColumnStart, frozenColumnEnd = _a.frozenColumnEnd, headerFooter = _a.headerFooter, _b = _a.screen, screen = _b === void 0 ? true : _b, charts = _a.charts;
132
132
  var showFrozenRows = frozenRowStart !== undefined &&
133
133
  frozenRowEnd !== undefined &&
134
134
  frozenRowEnd >= frozenRowStart;
@@ -190,6 +190,9 @@ var PageBlock = function (_a) {
190
190
  alignItems: VALIGN_TO_FLEX[verticalAlignment],
191
191
  };
192
192
  var tableWrap = {
193
+ // Charts are absolutely positioned over the table in unscaled px, so
194
+ // the same transform scales them with the cells they anchor to.
195
+ position: "relative",
193
196
  // The content box is the printable area; the table is the actual
194
197
  // sheet slice scaled by the user-selected scale factor. Using a
195
198
  // CSS `transform: scale(...)` instead of resizing each cell keeps
@@ -316,7 +319,30 @@ var PageBlock = function (_a) {
316
319
  } }, value)),
317
320
  noted ? react_1.default.createElement("span", { style: noteMarkerStyle }) : null));
318
321
  })));
319
- }))))),
322
+ }))), charts === null || charts === void 0 ? void 0 :
323
+ charts.map(function (chart) {
324
+ var _a, _b;
325
+ var frame = {
326
+ position: "absolute",
327
+ left: chart.left,
328
+ top: chart.top,
329
+ width: chart.width,
330
+ height: chart.height,
331
+ overflow: "hidden",
332
+ backgroundColor: "white",
333
+ };
334
+ return (react_1.default.createElement("div", { key: chart.chartId, "data-print-chart": chart.chartId, style: frame }, chart.imageUrl ? (react_1.default.createElement("img", { src: chart.imageUrl, alt: (_a = chart.title) !== null && _a !== void 0 ? _a : "Chart", style: { width: "100%", height: "100%", display: "block" } })) : (react_1.default.createElement("div", { style: {
335
+ width: "100%",
336
+ height: "100%",
337
+ boxSizing: "border-box",
338
+ border: "1px solid #d1d5db",
339
+ display: "flex",
340
+ alignItems: "center",
341
+ justifyContent: "center",
342
+ fontSize: 12,
343
+ color: "#6b7280",
344
+ } }, (_b = chart.title) !== null && _b !== void 0 ? _b : "Chart"))));
345
+ }))),
320
346
  headerFooter ? (react_1.default.createElement(HeaderFooterStrip, { position: "footer", data: headerFooter })) : null));
321
347
  };
322
348
  exports.PageBlock = PageBlock;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import type { CellData, CellFormat } from "@rowsncolumns/common-types";
3
3
  import type { SelectionArea } from "@rowsncolumns/grid";
4
- import type { Sheet } from "../../types";
4
+ import type { EmbeddedChart, Sheet } from "../../types";
5
5
  export type PrintPreviewDialogProps = {
6
6
  isOpen: boolean;
7
7
  onClose: () => void;
@@ -44,6 +44,13 @@ export type PrintPreviewDialogProps = {
44
44
  * marker.
45
45
  */
46
46
  getCellData?: (sheetId: number, rowIndex: number, columnIndex: number) => CellData | null | undefined;
47
+ /**
48
+ * The workbook's charts — same array the grid renders. Each prints on
49
+ * the page its anchor cell lands on, as the PNG the mounted renderer
50
+ * captures (`exportPng`); a chart on a sheet that is not on screen has
51
+ * no renderer to capture and prints as a titled frame.
52
+ */
53
+ charts?: EmbeddedChart[];
47
54
  };
48
55
  export declare const PrintPreviewDialog: React.FC<PrintPreviewDialogProps>;
49
56
  //# sourceMappingURL=print-preview-dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"print-preview-dialog.d.ts","sourceRoot":"","sources":["../../../../components/print-preview/print-preview-dialog.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAatE,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEX,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA0BzC,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7D;;;;OAIG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CAClC,CAAC;AAsDF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAonBhE,CAAC"}
1
+ {"version":3,"file":"print-preview-dialog.d.ts","sourceRoot":"","sources":["../../../../components/print-preview/print-preview-dialog.tsx"],"names":[],"mappings":"AAYA,OAAO,KAMN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEX,MAAM,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA4BxD,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7D;;;;OAIG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC;AAgEF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAusBhE,CAAC"}