@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
@@ -0,0 +1,238 @@
1
+ import { CheckIcon, ChevronRightIcon, MdOutlineArrowDropDown } from "@rowsncolumns/icons";
2
+ import { ColorPicker, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuItemIndicator, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownRightSlot, IconButton, Stack, } from "@rowsncolumns/ui";
3
+ import { iterateCellsInRange } from "@rowsncolumns/utils";
4
+ import React, { useCallback, useMemo, useRef } from "react";
5
+ import { getUserSelections } from "../../api/selections";
6
+ import { useFocusSheet } from "../../atoms";
7
+ import { useOpenSparklineDialog } from "../../atoms/sparkline-dialog.atom";
8
+ import { STANDARD_COLORS } from "../../themes";
9
+ export const SPARKLINE_TYPES = [
10
+ { value: "line", label: "Line" },
11
+ { value: "column", label: "Column" },
12
+ { value: "winloss", label: "Win/Loss" },
13
+ ];
14
+ /** Excel's Show group: each point toggle and the colour option it highlights with. */
15
+ const POINT_TOGGLES = [
16
+ { key: "high", colorKey: "colorHigh", label: "High Point" },
17
+ { key: "low", colorKey: "colorLow", label: "Low Point" },
18
+ { key: "negative", colorKey: "colorNegative", label: "Negative Points" },
19
+ { key: "first", colorKey: "colorFirst", label: "First Point" },
20
+ { key: "last", colorKey: "colorLast", label: "Last Point" },
21
+ { key: "markers", colorKey: "colorMarkers", label: "Markers" },
22
+ ];
23
+ const EMPTY_CELLS = [
24
+ { value: undefined, label: "Gaps" },
25
+ { value: "zero", label: "Zero" },
26
+ { value: "span", label: "Connect data points with line" },
27
+ ];
28
+ const AXIS_TYPES = [
29
+ { value: "individual", label: "Automatic for Each Sparkline" },
30
+ { value: "group", label: "Same for All Sparklines" },
31
+ ];
32
+ const SparklineIcon = () => (React.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" },
33
+ React.createElement("polyline", { points: "1,12 4,7 7,9 10,3 13,8 15,5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })));
34
+ const Check = () => (React.createElement(DropdownMenuItemIndicator, null,
35
+ React.createElement(CheckIcon, null)));
36
+ /**
37
+ * Excel's Sparklines ribbon: Insert → Sparklines (Line / Column / Win-Loss → the Create
38
+ * Sparklines dialog) and, when the active cell is in a sparkline group, the Sparkline Design tab —
39
+ * Edit Data & Location, Type, Show (points + markers), Sparkline / marker colours, Axis (show
40
+ * axis, right-to-left, hidden data, empty cells, vertical min/max) and Group / Clear.
41
+ */
42
+ export const SparklineActions = ({ sheetId, activeCell, selections, getSparklineGroup, onUpdateSparklineGroup, onDeleteSparklineGroup, onClearSparklines, onGroupSparklines, readonly, }) => {
43
+ const focusSheet = useFocusSheet();
44
+ const openDialog = useOpenSparklineDialog();
45
+ const shouldFocusSheetRef = useRef(true);
46
+ const group = useMemo(() => getSparklineGroup?.(sheetId, activeCell), [getSparklineGroup, sheetId, activeCell]);
47
+ const selectedCells = useMemo(() => {
48
+ const cells = [];
49
+ for (const selection of getUserSelections(activeCell, selections)) {
50
+ for (const [rowIndex, columnIndex] of iterateCellsInRange(selection.range)) {
51
+ cells.push({ rowIndex, columnIndex });
52
+ }
53
+ }
54
+ return cells;
55
+ }, [activeCell, selections]);
56
+ const update = useCallback((patch) => {
57
+ if (group)
58
+ onUpdateSparklineGroup?.(group, patch);
59
+ }, [group, onUpdateSparklineGroup]);
60
+ const setOption = useCallback((key, value) => {
61
+ if (!group)
62
+ return;
63
+ const options = { ...group.options };
64
+ if (value === undefined || value === false) {
65
+ delete options[key];
66
+ }
67
+ else {
68
+ options[key] = value;
69
+ }
70
+ update({ options });
71
+ }, [group, update]);
72
+ const colorSubmenu = (label, key) => (React.createElement(DropdownMenuSub, null,
73
+ React.createElement(DropdownMenuSubTrigger, { disabled: readonly },
74
+ label,
75
+ React.createElement(DropdownRightSlot, null,
76
+ React.createElement(ChevronRightIcon, null))),
77
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
78
+ React.createElement("div", { className: "p-2 flex flex-col gap-2" },
79
+ React.createElement(ColorPicker, { colors: STANDARD_COLORS, value: group?.options[key], onChange: (color) => setOption(key, color) }),
80
+ React.createElement(DropdownMenuItem, { onSelect: () => setOption(key, undefined) }, "Automatic")))));
81
+ const axisBoundSubmenu = (label, typeKey, valueKey) => {
82
+ const current = group?.options[typeKey] ??
83
+ (group?.options[valueKey] != null ? "custom" : "individual");
84
+ return (React.createElement(DropdownMenuSub, null,
85
+ React.createElement(DropdownMenuSubTrigger, { disabled: readonly },
86
+ label,
87
+ React.createElement(DropdownRightSlot, null,
88
+ React.createElement(ChevronRightIcon, null))),
89
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
90
+ AXIS_TYPES.map((entry) => (React.createElement(DropdownMenuCheckboxItem, { key: entry.value, checked: current === entry.value, onSelect: () => {
91
+ if (!group)
92
+ return;
93
+ const options = { ...group.options };
94
+ delete options[valueKey];
95
+ if (entry.value === "individual")
96
+ delete options[typeKey];
97
+ else
98
+ options[typeKey] = entry.value;
99
+ update({ options });
100
+ } },
101
+ React.createElement(Check, null),
102
+ entry.label))),
103
+ React.createElement(DropdownMenuSeparator, null),
104
+ React.createElement(DropdownMenuItem, { onSelect: (event) => event.preventDefault(), className: "flex items-center gap-2" },
105
+ current === "custom" ? React.createElement(Check, null) : null,
106
+ React.createElement("span", null, "Custom Value"),
107
+ React.createElement("input", { type: "number", "aria-label": `${label} custom value`, className: "w-[70px] text-xs border border-rnc-border rounded px-1 bg-transparent", defaultValue: group?.options[valueKey] ?? "", onKeyDown: (event) => {
108
+ event.stopPropagation();
109
+ if (event.key !== "Enter" || !group)
110
+ return;
111
+ const value = Number(event.target.value);
112
+ if (!Number.isFinite(value))
113
+ return;
114
+ update({
115
+ options: { ...group.options, [typeKey]: "custom", [valueKey]: value },
116
+ });
117
+ } })))));
118
+ };
119
+ const hasGroup = !!group;
120
+ const sparklineCellsSelected = hasGroup &&
121
+ selectedCells.filter((cell) => getSparklineGroup?.(sheetId, cell)).length > 1;
122
+ return (React.createElement(DropdownMenu, { modal: false },
123
+ React.createElement(Stack, { className: "shrink-0" },
124
+ React.createElement(DropdownMenuTrigger, { asChild: true },
125
+ React.createElement(IconButton, { size: "lg", tooltip: hasGroup ? "Sparkline Design" : "Insert sparklines", className: "gap-1", disabled: readonly },
126
+ React.createElement(SparklineIcon, null),
127
+ React.createElement("span", { className: "text-xs" }, "Sparklines"),
128
+ React.createElement(MdOutlineArrowDropDown, null))),
129
+ React.createElement(DropdownMenuPortal, null,
130
+ React.createElement(DropdownMenuContent, { align: "start", onCloseAutoFocus: (event) => {
131
+ event.preventDefault();
132
+ if (shouldFocusSheetRef.current)
133
+ focusSheet?.();
134
+ shouldFocusSheetRef.current = true;
135
+ } },
136
+ React.createElement(DropdownMenuSub, null,
137
+ React.createElement(DropdownMenuSubTrigger, { disabled: readonly },
138
+ "Insert",
139
+ React.createElement(DropdownRightSlot, null,
140
+ React.createElement(ChevronRightIcon, null))),
141
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, SPARKLINE_TYPES.map((entry) => (React.createElement(DropdownMenuItem, { key: entry.value, onSelect: () => {
142
+ shouldFocusSheetRef.current = false;
143
+ openDialog({
144
+ mode: "create",
145
+ sheetId,
146
+ type: entry.value,
147
+ activeCell,
148
+ selections,
149
+ });
150
+ } }, entry.label))))),
151
+ React.createElement(DropdownMenuSeparator, null),
152
+ React.createElement(DropdownMenuItem, { disabled: !hasGroup || readonly, onSelect: () => {
153
+ if (!group)
154
+ return;
155
+ shouldFocusSheetRef.current = false;
156
+ openDialog({ mode: "edit", group });
157
+ } }, "Edit Group Location & Data\u2026"),
158
+ React.createElement(DropdownMenuSub, null,
159
+ React.createElement(DropdownMenuSubTrigger, { disabled: !hasGroup || readonly },
160
+ "Type",
161
+ React.createElement(DropdownRightSlot, null,
162
+ React.createElement(ChevronRightIcon, null))),
163
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, SPARKLINE_TYPES.map((entry) => (React.createElement(DropdownMenuCheckboxItem, { key: entry.value, checked: group?.type === entry.value, onSelect: () => update({ type: entry.value }) },
164
+ React.createElement(Check, null),
165
+ entry.label))))),
166
+ React.createElement(DropdownMenuSub, null,
167
+ React.createElement(DropdownMenuSubTrigger, { disabled: !hasGroup || readonly },
168
+ "Show",
169
+ React.createElement(DropdownRightSlot, null,
170
+ React.createElement(ChevronRightIcon, null))),
171
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, POINT_TOGGLES.map((entry) => (React.createElement(DropdownMenuCheckboxItem, { key: entry.key, checked: !!group?.options[entry.key], onSelect: () => setOption(entry.key, !group?.options[entry.key]) },
172
+ React.createElement(Check, null),
173
+ entry.label))))),
174
+ React.createElement(DropdownMenuSub, null,
175
+ React.createElement(DropdownMenuSubTrigger, { disabled: !hasGroup || readonly },
176
+ "Style",
177
+ React.createElement(DropdownRightSlot, null,
178
+ React.createElement(ChevronRightIcon, null))),
179
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
180
+ colorSubmenu("Sparkline Color", "color"),
181
+ React.createElement(DropdownMenuSub, null,
182
+ React.createElement(DropdownMenuSubTrigger, { disabled: readonly },
183
+ "Marker Color",
184
+ React.createElement(DropdownRightSlot, null,
185
+ React.createElement(ChevronRightIcon, null))),
186
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, POINT_TOGGLES.map((entry) => colorSubmenu(entry.label, entry.colorKey)))),
187
+ React.createElement(DropdownMenuSub, null,
188
+ React.createElement(DropdownMenuSubTrigger, { disabled: readonly },
189
+ "Weight",
190
+ React.createElement(DropdownRightSlot, null,
191
+ React.createElement(ChevronRightIcon, null))),
192
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, [0.25, 0.5, 0.75, 1, 1.5, 2.25, 3, 4.5, 6].map((weight) => (React.createElement(DropdownMenuCheckboxItem, { key: weight, checked: (group?.options.lineweight ?? 1) === weight, onSelect: () => setOption("lineweight", weight === 1 ? undefined : weight) },
193
+ React.createElement(Check, null),
194
+ weight,
195
+ " pt"))))))),
196
+ React.createElement(DropdownMenuSub, null,
197
+ React.createElement(DropdownMenuSubTrigger, { disabled: !hasGroup || readonly },
198
+ "Axis",
199
+ React.createElement(DropdownRightSlot, null,
200
+ React.createElement(ChevronRightIcon, null))),
201
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
202
+ React.createElement(DropdownMenuCheckboxItem, { checked: !!group?.options.axis, onSelect: () => setOption("axis", !group?.options.axis) },
203
+ React.createElement(Check, null),
204
+ "Show Axis"),
205
+ React.createElement(DropdownMenuCheckboxItem, { checked: !!group?.options.rtl, onSelect: () => setOption("rtl", !group?.options.rtl) },
206
+ React.createElement(Check, null),
207
+ "Plot Data Right-to-Left"),
208
+ React.createElement(DropdownMenuCheckboxItem, { checked: !!group?.options.displayhidden, onSelect: () => setOption("displayhidden", !group?.options.displayhidden) },
209
+ React.createElement(Check, null),
210
+ "Show Data in Hidden Rows and Columns"),
211
+ React.createElement(DropdownMenuSeparator, null),
212
+ React.createElement(DropdownMenuSub, null,
213
+ React.createElement(DropdownMenuSubTrigger, { disabled: readonly },
214
+ "Show Empty Cells As",
215
+ React.createElement(DropdownRightSlot, null,
216
+ React.createElement(ChevronRightIcon, null))),
217
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, EMPTY_CELLS.map((entry) => (React.createElement(DropdownMenuCheckboxItem, { key: entry.label, checked: entry.value === undefined
218
+ ? group?.options.emptycells === undefined ||
219
+ group?.options.emptycells === "gap"
220
+ : group?.options.emptycells === entry.value, onSelect: () => setOption("emptycells", entry.value) },
221
+ React.createElement(Check, null),
222
+ entry.label))))),
223
+ axisBoundSubmenu("Vertical Axis Minimum", "minaxistype", "min"),
224
+ axisBoundSubmenu("Vertical Axis Maximum", "maxaxistype", "max"))),
225
+ React.createElement(DropdownMenuSeparator, null),
226
+ React.createElement(DropdownMenuItem, { disabled: !sparklineCellsSelected || readonly, onSelect: () => onGroupSparklines?.(sheetId, activeCell, selectedCells) }, "Group"),
227
+ React.createElement(DropdownMenuSub, null,
228
+ React.createElement(DropdownMenuSubTrigger, { disabled: !hasGroup || readonly },
229
+ "Clear",
230
+ React.createElement(DropdownRightSlot, null,
231
+ React.createElement(ChevronRightIcon, null))),
232
+ React.createElement(DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
233
+ React.createElement(DropdownMenuItem, { onSelect: () => onClearSparklines?.(sheetId, selectedCells) }, "Clear Selected Sparklines"),
234
+ React.createElement(DropdownMenuItem, { onSelect: () => {
235
+ if (group)
236
+ onDeleteSparklineGroup?.(group);
237
+ } }, "Clear Selected Sparkline Groups"))))))));
238
+ };
@@ -9,7 +9,15 @@ type TableActionsProps = {
9
9
  activeCell: CellInterface;
10
10
  onRequestEditTable?(table: TableView): void;
11
11
  onCreateTable?(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[], tableProperties?: Partial<TableView>): void;
12
+ /** Opens the Create Table dialog; when absent, "Insert table" calls `onCreateTable` directly. */
13
+ onRequestCreateTable?(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]): void;
14
+ /** "Convert to range" — same path as the context menu's item. */
15
+ onRemoveTable?(table: TableView): void;
16
+ /** "Resize table" — opens Excel's Resize Table dialog for the active table. */
17
+ onRequestResizeTable?(table: TableView): void;
18
+ /** "Insert slicer" — opens Excel's Insert Slicers dialog for the active table. */
19
+ onRequestInsertSlicer?(table: TableView): void;
12
20
  };
13
- export declare const TableActions: ({ tables, sheetId, activeCell, selections, onRequestEditTable, onCreateTable, }: TableActionsProps) => React.JSX.Element;
21
+ export declare const TableActions: ({ tables, sheetId, activeCell, selections, onRequestEditTable, onCreateTable, onRequestCreateTable, onRemoveTable, onRequestResizeTable, onRequestInsertSlicer, }: TableActionsProps) => React.JSX.Element;
14
22
  export {};
15
23
  //# sourceMappingURL=table-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-actions.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/table-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYvE,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,aAAa,CAAC;IAC1B,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5C,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAChD,eAAe,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACnC,IAAI,CAAC;CACT,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,iFAO1B,iBAAiB,sBA6DnB,CAAC"}
1
+ {"version":3,"file":"table-actions.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/table-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYvE,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,aAAa,CAAC;IAC1B,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5C,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAChD,eAAe,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACnC,IAAI,CAAC;IACR,iGAAiG;IACjG,oBAAoB,CAAC,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAC/C,IAAI,CAAC;IACR,iEAAiE;IACjE,aAAa,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACvC,+EAA+E;IAC/E,oBAAoB,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9C,kFAAkF;IAClF,qBAAqB,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,mKAW1B,iBAAiB,sBAmFnB,CAAC"}
@@ -3,18 +3,16 @@ import { MdOutlineArrowDropDown, TableIcon } from "@rowsncolumns/icons";
3
3
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuTrigger, IconButton, Stack, } from "@rowsncolumns/ui";
4
4
  import React, { useMemo } from "react";
5
5
  import { useFocusSheet } from "../../atoms";
6
- export const TableActions = ({ tables, sheetId, activeCell, selections, onRequestEditTable, onCreateTable, }) => {
6
+ export const TableActions = ({ tables, sheetId, activeCell, selections, onRequestEditTable, onCreateTable, onRequestCreateTable, onRemoveTable, onRequestResizeTable, onRequestInsertSlicer, }) => {
7
7
  const focusSheet = useFocusSheet();
8
8
  const table = useMemo(() => tables?.find((table) => table.sheetId === sheetId &&
9
9
  isCellWithinBounds(activeCell, table.range)), [tables, sheetId, activeCell]);
10
10
  const disableMenu = !table;
11
- const onConvertToRange = () => {
12
- // Calling this will remove the table if present
13
- onCreateTable?.(sheetId, activeCell, selections);
14
- };
15
11
  return (React.createElement(DropdownMenu, { modal: false },
16
12
  React.createElement(Stack, { className: "shrink-0" },
17
- React.createElement(IconButton, { size: "lg", tooltip: "Convert selection to a table", className: "gap-1", onClick: () => onCreateTable?.(sheetId, activeCell, selections) },
13
+ React.createElement(IconButton, { size: "lg", tooltip: "Convert selection to a table", className: "gap-1", onClick: () => onRequestCreateTable
14
+ ? onRequestCreateTable(sheetId, activeCell, selections)
15
+ : onCreateTable?.(sheetId, activeCell, selections) },
18
16
  React.createElement(TableIcon, null),
19
17
  React.createElement("span", { className: "text-xs" }, "Insert table")),
20
18
  React.createElement(DropdownMenuTrigger, { disabled: disableMenu, asChild: true },
@@ -28,9 +26,19 @@ export const TableActions = ({ tables, sheetId, activeCell, selections, onReques
28
26
  focusSheet?.();
29
27
  }
30
28
  } }, "Edit table"),
29
+ onRequestResizeTable ? (React.createElement(DropdownMenuItem, { onClick: () => {
30
+ if (table) {
31
+ onRequestResizeTable(table);
32
+ }
33
+ } }, "Resize table")) : null,
34
+ onRequestInsertSlicer ? (React.createElement(DropdownMenuItem, { onClick: () => {
35
+ if (table) {
36
+ onRequestInsertSlicer(table);
37
+ }
38
+ } }, "Insert slicer")) : null,
31
39
  React.createElement(DropdownMenuItem, { onClick: () => {
32
40
  if (table) {
33
- onConvertToRange();
41
+ onRemoveTable?.(table);
34
42
  focusSheet?.();
35
43
  }
36
44
  } }, "Convert to range"))))));
@@ -2,7 +2,7 @@ import type { CellInterface, SelectionArea } from "@rowsncolumns/grid";
2
2
  import { findMatchingBandProperty } from "@rowsncolumns/utils";
3
3
  import React from "react";
4
4
  export { findMatchingBandProperty };
5
- import type { BandedDefinition, TableTheme, TableView } from "../../types";
5
+ import type { BandedDefinition, CustomTableStyle, TableStylePreview, TableTheme, TableView } from "../../types";
6
6
  import type { CanvasGridProps, SelectionAttributes, SpreadsheetTheme } from "../canvas-grid/typings";
7
7
  export type TableStyleSelectorProps = {
8
8
  tables?: TableView[];
@@ -12,7 +12,39 @@ export type TableStyleSelectorProps = {
12
12
  activeCell: CellInterface;
13
13
  onUpdateTable?(sheetId: number, tableId: TableView["id"], updatedTable: Partial<TableView>): void;
14
14
  onCreateTable: CanvasGridProps["onCreateTable"];
15
+ /** Format as Table on a plain range opens the Create Table dialog with the picked style. */
16
+ onRequestCreateTable?: CanvasGridProps["onRequestCreateTable"];
17
+ /**
18
+ * Live preview: the hovered swatch's style is painted over the active table while the pointer
19
+ * rests on it (`null` reverts). UI-only — nothing is written to the table or its history.
20
+ */
21
+ onPreviewTableStyle?(preview: TableStylePreview | null): void;
22
+ /** Styles created with "New Table Style…", offered in the gallery's Custom section. */
23
+ customTableStyles?: CustomTableStyle[];
24
+ /**
25
+ * Called with the style "New Table Style…" creates so the host can keep it with the workbook;
26
+ * without it the selector keeps the styles it created for the session.
27
+ */
28
+ onCreateCustomTableStyle?(style: CustomTableStyle): void;
15
29
  };
30
+ /** Excel's Table Style Options (Table Design tab), in ribbon order. */
31
+ declare const STYLE_OPTIONS: Array<{
32
+ key: "headerRow" | "totalRow" | "showRowStripes" | "showColumnStripes" | "showFirstColumn" | "showLastColumn" | "filterButton";
33
+ label: string;
34
+ defaultValue: boolean;
35
+ }>;
36
+ /**
37
+ * The table update a Style Options toggle produces. Flipping Banded Rows / Banded Columns on a
38
+ * built-in style re-resolves the banding for the new stripe toggles (what the Edit Table dialog
39
+ * does); a custom style has no palette to re-resolve from and keeps its banding.
40
+ */
41
+ export declare const getStyleOptionUpdate: (table: TableView, key: (typeof STYLE_OPTIONS)[number]["key"], checked: boolean) => Partial<TableView>;
42
+ /** The banding a New Table Style paints from its three colours (unset elements stay unpainted). */
43
+ export declare const buildCustomTableStyle: (name: string, colors: {
44
+ header?: string;
45
+ firstBand?: string;
46
+ secondBand?: string;
47
+ }) => CustomTableStyle;
16
48
  type TableStyleList = [
17
49
  theme: TableTheme,
18
50
  firtBandStripeTint: number | undefined,
@@ -20,6 +52,10 @@ type TableStyleList = [
20
52
  bandDefinition: BandedDefinition | undefined,
21
53
  style?: React.CSSProperties
22
54
  ];
55
+ /**
56
+ * The gallery's table styles: the shared palette (`@rowsncolumns/utils` — the same banding the
57
+ * importers and both engines resolve a theme name into) plus a per-swatch preview style.
58
+ */
23
59
  export declare const getTableBorderStyles: (showRowStripes: boolean | undefined, showColumnStripes: boolean | undefined, theme?: SpreadsheetTheme) => Map<string, TableStyleList[]>;
24
- export declare const TableStyleSelector: React.MemoExoticComponent<({ tables, sheetId, theme, activeCell, selections, onUpdateTable, onCreateTable, }: TableStyleSelectorProps) => React.JSX.Element>;
60
+ export declare const TableStyleSelector: React.MemoExoticComponent<({ tables, sheetId, theme, activeCell, selections, onUpdateTable, onCreateTable, onRequestCreateTable, onPreviewTableStyle, customTableStyles, onCreateCustomTableStyle, }: TableStyleSelectorProps) => React.JSX.Element>;
25
61
  //# sourceMappingURL=table-style-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-style-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/table-style-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAavE,OAAO,EAEL,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAA6C,MAAM,OAAO,CAAC;AAGlE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAMpC,OAAO,KAAK,EACV,gBAAgB,EAGhB,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,aAAa,CAAC;IAC1B,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EACxB,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,GAC/B,IAAI,CAAC;IACR,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;CACjD,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,UAAU;IACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS;IACtC,cAAc,EAAE,MAAM,GAAG,SAAS;IAClC,cAAc,EAAE,gBAAgB,GAAG,SAAS;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;CAC5B,CAAC;AAIF,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,OAAO,GAAG,SAAS,EACnC,mBAAmB,OAAO,GAAG,SAAS,EACtC,QAAQ,gBAAgB,kCAiYzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,gHAS1B,uBAAuB,uBAsI3B,CAAC"}
1
+ {"version":3,"file":"table-style-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/table-style-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAkBvE,OAAO,EACL,wBAAwB,EAGzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAuD,MAAM,OAAO,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAKpC,OAAO,KAAK,EACV,gBAAgB,EAEhB,gBAAgB,EAEhB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,aAAa,CAAC;IAC1B,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EACxB,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,GAC/B,IAAI,CAAC;IACR,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC/D;;;OAGG;IACH,mBAAmB,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9D,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC;;;OAGG;IACH,wBAAwB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC1D,CAAC;AAEF,uEAAuE;AACvE,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC;IACzB,GAAG,EACC,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB,CAQA,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,EAChB,KAAK,CAAC,OAAO,aAAa,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAC1C,SAAS,OAAO,KACf,OAAO,CAAC,SAAS,CAqBnB,CAAC;AAsBF,mGAAmG;AACnG,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,QAAQ;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,KACnE,gBASD,CAAC;AAEH,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,UAAU;IACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS;IACtC,cAAc,EAAE,MAAM,GAAG,SAAS;IAClC,cAAc,EAAE,gBAAgB,GAAG,SAAS;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;CAC5B,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,OAAO,GAAG,SAAS,EACnC,mBAAmB,OAAO,GAAG,SAAS,EACtC,QAAQ,gBAAgB,kCAoBzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,wMAa1B,uBAAuB,uBAoS3B,CAAC"}