@glideappsfinal/glide-data-grid 6.0.9

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 (745) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc +68 -0
  3. package/API.md +1466 -0
  4. package/CHANGELOG.md +895 -0
  5. package/LICENSE +21 -0
  6. package/README.md +190 -0
  7. package/build.sh +21 -0
  8. package/dist/cjs/cells/boolean-cell.js +87 -0
  9. package/dist/cjs/cells/boolean-cell.js.map +1 -0
  10. package/dist/cjs/cells/bubble-cell.js +53 -0
  11. package/dist/cjs/cells/bubble-cell.js.map +1 -0
  12. package/dist/cjs/cells/cell-types.js +2 -0
  13. package/dist/cjs/cells/cell-types.js.map +1 -0
  14. package/dist/cjs/cells/drilldown-cell.js +171 -0
  15. package/dist/cjs/cells/drilldown-cell.js.map +1 -0
  16. package/dist/cjs/cells/image-cell.js +94 -0
  17. package/dist/cjs/cells/image-cell.js.map +1 -0
  18. package/dist/cjs/cells/index.js +29 -0
  19. package/dist/cjs/cells/index.js.map +1 -0
  20. package/dist/cjs/cells/loading-cell.js +41 -0
  21. package/dist/cjs/cells/loading-cell.js.map +1 -0
  22. package/dist/cjs/cells/markdown-cell.js +30 -0
  23. package/dist/cjs/cells/markdown-cell.js.map +1 -0
  24. package/dist/cjs/cells/marker-cell.js +80 -0
  25. package/dist/cjs/cells/marker-cell.js.map +1 -0
  26. package/dist/cjs/cells/new-row-cell.js +53 -0
  27. package/dist/cjs/cells/new-row-cell.js.map +1 -0
  28. package/dist/cjs/cells/number-cell.js +44 -0
  29. package/dist/cjs/cells/number-cell.js.map +1 -0
  30. package/dist/cjs/cells/protected-cell.js +35 -0
  31. package/dist/cjs/cells/protected-cell.js.map +1 -0
  32. package/dist/cjs/cells/row-id-cell.js +23 -0
  33. package/dist/cjs/cells/row-id-cell.js.map +1 -0
  34. package/dist/cjs/cells/text-cell.js +48 -0
  35. package/dist/cjs/cells/text-cell.js.map +1 -0
  36. package/dist/cjs/cells/uri-cell.js +104 -0
  37. package/dist/cjs/cells/uri-cell.js.map +1 -0
  38. package/dist/cjs/common/browser-detect.js +20 -0
  39. package/dist/cjs/common/browser-detect.js.map +1 -0
  40. package/dist/cjs/common/image-window-loader.js +98 -0
  41. package/dist/cjs/common/image-window-loader.js.map +1 -0
  42. package/dist/cjs/common/is-hotkey.js +76 -0
  43. package/dist/cjs/common/is-hotkey.js.map +1 -0
  44. package/dist/cjs/common/math.js +297 -0
  45. package/dist/cjs/common/math.js.map +1 -0
  46. package/dist/cjs/common/render-state-provider.js +70 -0
  47. package/dist/cjs/common/render-state-provider.js.map +1 -0
  48. package/dist/cjs/common/resize-detector.js +27 -0
  49. package/dist/cjs/common/resize-detector.js.map +1 -0
  50. package/dist/cjs/common/styles.js +135 -0
  51. package/dist/cjs/common/styles.js.map +1 -0
  52. package/dist/cjs/common/support.js +60 -0
  53. package/dist/cjs/common/support.js.map +1 -0
  54. package/dist/cjs/common/utils.js +193 -0
  55. package/dist/cjs/common/utils.js.map +1 -0
  56. package/dist/cjs/data-editor/copy-paste.js +269 -0
  57. package/dist/cjs/data-editor/copy-paste.js.map +1 -0
  58. package/dist/cjs/data-editor/data-editor-fns.js +190 -0
  59. package/dist/cjs/data-editor/data-editor-fns.js.map +1 -0
  60. package/dist/cjs/data-editor/data-editor-keybindings.js +126 -0
  61. package/dist/cjs/data-editor/data-editor-keybindings.js.map +1 -0
  62. package/dist/cjs/data-editor/data-editor.js +2892 -0
  63. package/dist/cjs/data-editor/data-editor.js.map +1 -0
  64. package/dist/cjs/data-editor/group-rename.css +2 -0
  65. package/dist/cjs/data-editor/group-rename.js +49 -0
  66. package/dist/cjs/data-editor/group-rename.js.map +1 -0
  67. package/dist/cjs/data-editor/row-grouping-api.js +34 -0
  68. package/dist/cjs/data-editor/row-grouping-api.js.map +1 -0
  69. package/dist/cjs/data-editor/row-grouping.js +189 -0
  70. package/dist/cjs/data-editor/row-grouping.js.map +1 -0
  71. package/dist/cjs/data-editor/use-autoscroll.js +36 -0
  72. package/dist/cjs/data-editor/use-autoscroll.js.map +1 -0
  73. package/dist/cjs/data-editor/use-cells-for-selection.js +53 -0
  74. package/dist/cjs/data-editor/use-cells-for-selection.js.map +1 -0
  75. package/dist/cjs/data-editor/use-column-sizer.js +189 -0
  76. package/dist/cjs/data-editor/use-column-sizer.js.map +1 -0
  77. package/dist/cjs/data-editor/use-initial-scroll-offset.js +81 -0
  78. package/dist/cjs/data-editor/use-initial-scroll-offset.js.map +1 -0
  79. package/dist/cjs/data-editor/use-rem-adjuster.js +29 -0
  80. package/dist/cjs/data-editor/use-rem-adjuster.js.map +1 -0
  81. package/dist/cjs/data-editor/visible-region.js +2 -0
  82. package/dist/cjs/data-editor/visible-region.js.map +1 -0
  83. package/dist/cjs/data-editor-all.js +19 -0
  84. package/dist/cjs/data-editor-all.js.map +1 -0
  85. package/dist/cjs/index.js +36 -0
  86. package/dist/cjs/index.js.map +1 -0
  87. package/dist/cjs/internal/click-outside-container/click-outside-container.js +34 -0
  88. package/dist/cjs/internal/click-outside-container/click-outside-container.js.map +1 -0
  89. package/dist/cjs/internal/data-editor-container/data-grid-container.js +36 -0
  90. package/dist/cjs/internal/data-editor-container/data-grid-container.js.map +1 -0
  91. package/dist/cjs/internal/data-grid/animation-manager.js +95 -0
  92. package/dist/cjs/internal/data-grid/animation-manager.js.map +1 -0
  93. package/dist/cjs/internal/data-grid/cell-set.js +56 -0
  94. package/dist/cjs/internal/data-grid/cell-set.js.map +1 -0
  95. package/dist/cjs/internal/data-grid/color-parser.js +122 -0
  96. package/dist/cjs/internal/data-grid/color-parser.js.map +1 -0
  97. package/dist/cjs/internal/data-grid/data-grid-sprites.js +64 -0
  98. package/dist/cjs/internal/data-grid/data-grid-sprites.js.map +1 -0
  99. package/dist/cjs/internal/data-grid/data-grid-types.js +299 -0
  100. package/dist/cjs/internal/data-grid/data-grid-types.js.map +1 -0
  101. package/dist/cjs/internal/data-grid/data-grid.js +1208 -0
  102. package/dist/cjs/internal/data-grid/data-grid.js.map +1 -0
  103. package/dist/cjs/internal/data-grid/event-args.js +30 -0
  104. package/dist/cjs/internal/data-grid/event-args.js.map +1 -0
  105. package/dist/cjs/internal/data-grid/image-window-loader-interface.js +2 -0
  106. package/dist/cjs/internal/data-grid/image-window-loader-interface.js.map +1 -0
  107. package/dist/cjs/internal/data-grid/render/data-grid-lib.js +652 -0
  108. package/dist/cjs/internal/data-grid/render/data-grid-lib.js.map +1 -0
  109. package/dist/cjs/internal/data-grid/render/data-grid-render.blit.js +218 -0
  110. package/dist/cjs/internal/data-grid/render/data-grid-render.blit.js.map +1 -0
  111. package/dist/cjs/internal/data-grid/render/data-grid-render.cells.js +369 -0
  112. package/dist/cjs/internal/data-grid/render/data-grid-render.cells.js.map +1 -0
  113. package/dist/cjs/internal/data-grid/render/data-grid-render.header.js +440 -0
  114. package/dist/cjs/internal/data-grid/render/data-grid-render.header.js.map +1 -0
  115. package/dist/cjs/internal/data-grid/render/data-grid-render.js +316 -0
  116. package/dist/cjs/internal/data-grid/render/data-grid-render.js.map +1 -0
  117. package/dist/cjs/internal/data-grid/render/data-grid-render.lines.js +256 -0
  118. package/dist/cjs/internal/data-grid/render/data-grid-render.lines.js.map +1 -0
  119. package/dist/cjs/internal/data-grid/render/data-grid-render.walk.js +157 -0
  120. package/dist/cjs/internal/data-grid/render/data-grid-render.walk.js.map +1 -0
  121. package/dist/cjs/internal/data-grid/render/data-grid.render.rings.js +203 -0
  122. package/dist/cjs/internal/data-grid/render/data-grid.render.rings.js.map +1 -0
  123. package/dist/cjs/internal/data-grid/render/draw-checkbox.js +65 -0
  124. package/dist/cjs/internal/data-grid/render/draw-checkbox.js.map +1 -0
  125. package/dist/cjs/internal/data-grid/render/draw-edit-hover-indicator.js +38 -0
  126. package/dist/cjs/internal/data-grid/render/draw-edit-hover-indicator.js.map +1 -0
  127. package/dist/cjs/internal/data-grid/render/draw-grid-arg.js +2 -0
  128. package/dist/cjs/internal/data-grid/render/draw-grid-arg.js.map +1 -0
  129. package/dist/cjs/internal/data-grid/sprites.js +288 -0
  130. package/dist/cjs/internal/data-grid/sprites.js.map +1 -0
  131. package/dist/cjs/internal/data-grid/use-animation-queue.js +33 -0
  132. package/dist/cjs/internal/data-grid/use-animation-queue.js.map +1 -0
  133. package/dist/cjs/internal/data-grid/use-selection-behavior.js +112 -0
  134. package/dist/cjs/internal/data-grid/use-selection-behavior.js.map +1 -0
  135. package/dist/cjs/internal/data-grid-dnd/data-grid-dnd.js +239 -0
  136. package/dist/cjs/internal/data-grid-dnd/data-grid-dnd.js.map +1 -0
  137. package/dist/cjs/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js +77 -0
  138. package/dist/cjs/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js.map +1 -0
  139. package/dist/cjs/internal/data-grid-overlay-editor/data-grid-overlay-editor.js +124 -0
  140. package/dist/cjs/internal/data-grid-overlay-editor/data-grid-overlay-editor.js.map +1 -0
  141. package/dist/cjs/internal/data-grid-overlay-editor/private/bubbles-overlay-editor-style.js +34 -0
  142. package/dist/cjs/internal/data-grid-overlay-editor/private/bubbles-overlay-editor-style.js.map +1 -0
  143. package/dist/cjs/internal/data-grid-overlay-editor/private/bubbles-overlay-editor.js +10 -0
  144. package/dist/cjs/internal/data-grid-overlay-editor/private/bubbles-overlay-editor.js.map +1 -0
  145. package/dist/cjs/internal/data-grid-overlay-editor/private/drilldown-overlay-editor.js +50 -0
  146. package/dist/cjs/internal/data-grid-overlay-editor/private/drilldown-overlay-editor.js.map +1 -0
  147. package/dist/cjs/internal/data-grid-overlay-editor/private/image-overlay-editor-style.js +56 -0
  148. package/dist/cjs/internal/data-grid-overlay-editor/private/image-overlay-editor-style.js.map +1 -0
  149. package/dist/cjs/internal/data-grid-overlay-editor/private/image-overlay-editor.js +21 -0
  150. package/dist/cjs/internal/data-grid-overlay-editor/private/image-overlay-editor.js.map +1 -0
  151. package/dist/cjs/internal/data-grid-overlay-editor/private/markdown-overlay-editor-style.js +76 -0
  152. package/dist/cjs/internal/data-grid-overlay-editor/private/markdown-overlay-editor-style.js.map +1 -0
  153. package/dist/cjs/internal/data-grid-overlay-editor/private/markdown-overlay-editor.js +32 -0
  154. package/dist/cjs/internal/data-grid-overlay-editor/private/markdown-overlay-editor.js.map +1 -0
  155. package/dist/cjs/internal/data-grid-overlay-editor/private/number-overlay-editor-style.js +15 -0
  156. package/dist/cjs/internal/data-grid-overlay-editor/private/number-overlay-editor-style.js.map +1 -0
  157. package/dist/cjs/internal/data-grid-overlay-editor/private/number-overlay-editor.js +30 -0
  158. package/dist/cjs/internal/data-grid-overlay-editor/private/number-overlay-editor.js.map +1 -0
  159. package/dist/cjs/internal/data-grid-overlay-editor/private/uri-overlay-editor-style.js +53 -0
  160. package/dist/cjs/internal/data-grid-overlay-editor/private/uri-overlay-editor-style.js.map +1 -0
  161. package/dist/cjs/internal/data-grid-overlay-editor/private/uri-overlay-editor.js +21 -0
  162. package/dist/cjs/internal/data-grid-overlay-editor/private/uri-overlay-editor.js.map +1 -0
  163. package/dist/cjs/internal/data-grid-overlay-editor/use-stay-on-screen.js +47 -0
  164. package/dist/cjs/internal/data-grid-overlay-editor/use-stay-on-screen.js.map +1 -0
  165. package/dist/cjs/internal/data-grid-search/data-grid-search-style.js +96 -0
  166. package/dist/cjs/internal/data-grid-search/data-grid-search-style.js.map +1 -0
  167. package/dist/cjs/internal/data-grid-search/data-grid-search.js +297 -0
  168. package/dist/cjs/internal/data-grid-search/data-grid-search.js.map +1 -0
  169. package/dist/cjs/internal/growing-entry/growing-entry-style.js +60 -0
  170. package/dist/cjs/internal/growing-entry/growing-entry-style.js.map +1 -0
  171. package/dist/cjs/internal/growing-entry/growing-entry.js +41 -0
  172. package/dist/cjs/internal/growing-entry/growing-entry.js.map +1 -0
  173. package/dist/cjs/internal/markdown-div/markdown-div.js +41 -0
  174. package/dist/cjs/internal/markdown-div/markdown-div.js.map +1 -0
  175. package/dist/cjs/internal/markdown-div/private/markdown-container.js +19 -0
  176. package/dist/cjs/internal/markdown-div/private/markdown-container.js.map +1 -0
  177. package/dist/cjs/internal/scrolling-data-grid/infinite-scroller.js +265 -0
  178. package/dist/cjs/internal/scrolling-data-grid/infinite-scroller.js.map +1 -0
  179. package/dist/cjs/internal/scrolling-data-grid/scrolling-data-grid.js +155 -0
  180. package/dist/cjs/internal/scrolling-data-grid/scrolling-data-grid.js.map +1 -0
  181. package/dist/cjs/internal/scrolling-data-grid/use-kinetic-scroll.js +65 -0
  182. package/dist/cjs/internal/scrolling-data-grid/use-kinetic-scroll.js.map +1 -0
  183. package/dist/dts/cells/boolean-cell.d.ts +4 -0
  184. package/dist/dts/cells/boolean-cell.d.ts.map +1 -0
  185. package/dist/dts/cells/bubble-cell.d.ts +4 -0
  186. package/dist/dts/cells/bubble-cell.d.ts.map +1 -0
  187. package/dist/dts/cells/cell-types.d.ts +89 -0
  188. package/dist/dts/cells/cell-types.d.ts.map +1 -0
  189. package/dist/dts/cells/drilldown-cell.d.ts +4 -0
  190. package/dist/dts/cells/drilldown-cell.d.ts.map +1 -0
  191. package/dist/dts/cells/image-cell.d.ts +5 -0
  192. package/dist/dts/cells/image-cell.d.ts.map +1 -0
  193. package/dist/dts/cells/index.d.ts +4 -0
  194. package/dist/dts/cells/index.d.ts.map +1 -0
  195. package/dist/dts/cells/loading-cell.d.ts +4 -0
  196. package/dist/dts/cells/loading-cell.d.ts.map +1 -0
  197. package/dist/dts/cells/markdown-cell.d.ts +4 -0
  198. package/dist/dts/cells/markdown-cell.d.ts.map +1 -0
  199. package/dist/dts/cells/marker-cell.d.ts +4 -0
  200. package/dist/dts/cells/marker-cell.d.ts.map +1 -0
  201. package/dist/dts/cells/new-row-cell.d.ts +4 -0
  202. package/dist/dts/cells/new-row-cell.d.ts.map +1 -0
  203. package/dist/dts/cells/number-cell.d.ts +4 -0
  204. package/dist/dts/cells/number-cell.d.ts.map +1 -0
  205. package/dist/dts/cells/protected-cell.d.ts +4 -0
  206. package/dist/dts/cells/protected-cell.d.ts.map +1 -0
  207. package/dist/dts/cells/row-id-cell.d.ts +4 -0
  208. package/dist/dts/cells/row-id-cell.d.ts.map +1 -0
  209. package/dist/dts/cells/text-cell.d.ts +4 -0
  210. package/dist/dts/cells/text-cell.d.ts.map +1 -0
  211. package/dist/dts/cells/uri-cell.d.ts +4 -0
  212. package/dist/dts/cells/uri-cell.d.ts.map +1 -0
  213. package/dist/dts/common/browser-detect.d.ts +11 -0
  214. package/dist/dts/common/browser-detect.d.ts.map +1 -0
  215. package/dist/dts/common/image-window-loader.d.ts +15 -0
  216. package/dist/dts/common/image-window-loader.d.ts.map +1 -0
  217. package/dist/dts/common/is-hotkey.d.ts +7 -0
  218. package/dist/dts/common/is-hotkey.d.ts.map +1 -0
  219. package/dist/dts/common/math.d.ts +20 -0
  220. package/dist/dts/common/math.d.ts.map +1 -0
  221. package/dist/dts/common/render-state-provider.d.ts +20 -0
  222. package/dist/dts/common/render-state-provider.d.ts.map +1 -0
  223. package/dist/dts/common/resize-detector.d.ts +11 -0
  224. package/dist/dts/common/resize-detector.d.ts.map +1 -0
  225. package/dist/dts/common/styles.d.ts +61 -0
  226. package/dist/dts/common/styles.d.ts.map +1 -0
  227. package/dist/dts/common/support.d.ts +13 -0
  228. package/dist/dts/common/support.d.ts.map +1 -0
  229. package/dist/dts/common/utils.d.ts +38 -0
  230. package/dist/dts/common/utils.d.ts.map +1 -0
  231. package/dist/dts/data-editor/copy-paste.d.ts +22 -0
  232. package/dist/dts/data-editor/copy-paste.d.ts.map +1 -0
  233. package/dist/dts/data-editor/data-editor-fns.d.ts +16 -0
  234. package/dist/dts/data-editor/data-editor-fns.d.ts.map +1 -0
  235. package/dist/dts/data-editor/data-editor-keybindings.d.ts +62 -0
  236. package/dist/dts/data-editor/data-editor-keybindings.d.ts.map +1 -0
  237. package/dist/dts/data-editor/data-editor.d.ts +532 -0
  238. package/dist/dts/data-editor/data-editor.d.ts.map +1 -0
  239. package/dist/dts/data-editor/group-rename.d.ts +12 -0
  240. package/dist/dts/data-editor/group-rename.d.ts.map +1 -0
  241. package/dist/dts/data-editor/row-grouping-api.d.ts +21 -0
  242. package/dist/dts/data-editor/row-grouping-api.d.ts.map +1 -0
  243. package/dist/dts/data-editor/row-grouping.d.ts +82 -0
  244. package/dist/dts/data-editor/row-grouping.d.ts.map +1 -0
  245. package/dist/dts/data-editor/use-autoscroll.d.ts +4 -0
  246. package/dist/dts/data-editor/use-autoscroll.d.ts.map +1 -0
  247. package/dist/dts/data-editor/use-cells-for-selection.d.ts +7 -0
  248. package/dist/dts/data-editor/use-cells-for-selection.d.ts.map +1 -0
  249. package/dist/dts/data-editor/use-column-sizer.d.ts +11 -0
  250. package/dist/dts/data-editor/use-column-sizer.d.ts.map +1 -0
  251. package/dist/dts/data-editor/use-initial-scroll-offset.d.ts +9 -0
  252. package/dist/dts/data-editor/use-initial-scroll-offset.d.ts.map +1 -0
  253. package/dist/dts/data-editor/use-rem-adjuster.d.ts +22 -0
  254. package/dist/dts/data-editor/use-rem-adjuster.d.ts.map +1 -0
  255. package/dist/dts/data-editor/visible-region.d.ts +19 -0
  256. package/dist/dts/data-editor/visible-region.d.ts.map +1 -0
  257. package/dist/dts/data-editor-all.d.ts +8 -0
  258. package/dist/dts/data-editor-all.d.ts.map +1 -0
  259. package/dist/dts/index.d.ts +52 -0
  260. package/dist/dts/index.d.ts.map +1 -0
  261. package/dist/dts/internal/click-outside-container/click-outside-container.d.ts +15 -0
  262. package/dist/dts/internal/click-outside-container/click-outside-container.d.ts.map +1 -0
  263. package/dist/dts/internal/data-editor-container/data-grid-container.d.ts +10 -0
  264. package/dist/dts/internal/data-editor-container/data-grid-container.d.ts.map +1 -0
  265. package/dist/dts/internal/data-grid/animation-manager.d.ts +26 -0
  266. package/dist/dts/internal/data-grid/animation-manager.d.ts.map +1 -0
  267. package/dist/dts/internal/data-grid/cell-set.d.ts +17 -0
  268. package/dist/dts/internal/data-grid/cell-set.d.ts.map +1 -0
  269. package/dist/dts/internal/data-grid/color-parser.d.ts +16 -0
  270. package/dist/dts/internal/data-grid/color-parser.d.ts.map +1 -0
  271. package/dist/dts/internal/data-grid/data-grid-sprites.d.ts +35 -0
  272. package/dist/dts/internal/data-grid/data-grid-sprites.d.ts.map +1 -0
  273. package/dist/dts/internal/data-grid/data-grid-types.d.ts +443 -0
  274. package/dist/dts/internal/data-grid/data-grid-types.d.ts.map +1 -0
  275. package/dist/dts/internal/data-grid/data-grid.d.ts +244 -0
  276. package/dist/dts/internal/data-grid/data-grid.d.ts.map +1 -0
  277. package/dist/dts/internal/data-grid/event-args.d.ts +117 -0
  278. package/dist/dts/internal/data-grid/event-args.d.ts.map +1 -0
  279. package/dist/dts/internal/data-grid/image-window-loader-interface.d.ts +9 -0
  280. package/dist/dts/internal/data-grid/image-window-loader-interface.d.ts.map +1 -0
  281. package/dist/dts/internal/data-grid/render/data-grid-lib.d.ts +60 -0
  282. package/dist/dts/internal/data-grid/render/data-grid-lib.d.ts.map +1 -0
  283. package/dist/dts/internal/data-grid/render/data-grid-render.blit.d.ts +20 -0
  284. package/dist/dts/internal/data-grid/render/data-grid-render.blit.d.ts.map +1 -0
  285. package/dist/dts/internal/data-grid/render/data-grid-render.cells.d.ts +32 -0
  286. package/dist/dts/internal/data-grid/render/data-grid-render.cells.d.ts.map +1 -0
  287. package/dist/dts/internal/data-grid/render/data-grid-render.d.ts +3 -0
  288. package/dist/dts/internal/data-grid/render/data-grid-render.d.ts.map +1 -0
  289. package/dist/dts/internal/data-grid/render/data-grid-render.header.d.ts +22 -0
  290. package/dist/dts/internal/data-grid/render/data-grid-render.header.d.ts.map +1 -0
  291. package/dist/dts/internal/data-grid/render/data-grid-render.lines.d.ts +10 -0
  292. package/dist/dts/internal/data-grid/render/data-grid-render.lines.d.ts.map +1 -0
  293. package/dist/dts/internal/data-grid/render/data-grid-render.walk.d.ts +14 -0
  294. package/dist/dts/internal/data-grid/render/data-grid-render.walk.d.ts.map +1 -0
  295. package/dist/dts/internal/data-grid/render/data-grid.render.rings.d.ts +8 -0
  296. package/dist/dts/internal/data-grid/render/data-grid.render.rings.d.ts.map +1 -0
  297. package/dist/dts/internal/data-grid/render/draw-checkbox.d.ts +4 -0
  298. package/dist/dts/internal/data-grid/render/draw-checkbox.d.ts.map +1 -0
  299. package/dist/dts/internal/data-grid/render/draw-edit-hover-indicator.d.ts +4 -0
  300. package/dist/dts/internal/data-grid/render/draw-edit-hover-indicator.d.ts.map +1 -0
  301. package/dist/dts/internal/data-grid/render/draw-grid-arg.d.ts +73 -0
  302. package/dist/dts/internal/data-grid/render/draw-grid-arg.d.ts.map +1 -0
  303. package/dist/dts/internal/data-grid/sprites.d.ts +34 -0
  304. package/dist/dts/internal/data-grid/sprites.d.ts.map +1 -0
  305. package/dist/dts/internal/data-grid/use-animation-queue.d.ts +5 -0
  306. package/dist/dts/internal/data-grid/use-animation-queue.d.ts.map +1 -0
  307. package/dist/dts/internal/data-grid/use-selection-behavior.d.ts +13 -0
  308. package/dist/dts/internal/data-grid/use-selection-behavior.d.ts.map +1 -0
  309. package/dist/dts/internal/data-grid-dnd/data-grid-dnd.d.ts +63 -0
  310. package/dist/dts/internal/data-grid-dnd/data-grid-dnd.d.ts.map +1 -0
  311. package/dist/dts/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.d.ts +9 -0
  312. package/dist/dts/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.d.ts.map +1 -0
  313. package/dist/dts/internal/data-grid-overlay-editor/data-grid-overlay-editor.d.ts +32 -0
  314. package/dist/dts/internal/data-grid-overlay-editor/data-grid-overlay-editor.d.ts.map +1 -0
  315. package/dist/dts/internal/data-grid-overlay-editor/private/bubbles-overlay-editor-style.d.ts +2 -0
  316. package/dist/dts/internal/data-grid-overlay-editor/private/bubbles-overlay-editor-style.d.ts.map +1 -0
  317. package/dist/dts/internal/data-grid-overlay-editor/private/bubbles-overlay-editor.d.ts +7 -0
  318. package/dist/dts/internal/data-grid-overlay-editor/private/bubbles-overlay-editor.d.ts.map +1 -0
  319. package/dist/dts/internal/data-grid-overlay-editor/private/drilldown-overlay-editor.d.ts +8 -0
  320. package/dist/dts/internal/data-grid-overlay-editor/private/drilldown-overlay-editor.d.ts.map +1 -0
  321. package/dist/dts/internal/data-grid-overlay-editor/private/image-overlay-editor-style.d.ts +2 -0
  322. package/dist/dts/internal/data-grid-overlay-editor/private/image-overlay-editor-style.d.ts.map +1 -0
  323. package/dist/dts/internal/data-grid-overlay-editor/private/image-overlay-editor.d.ts +13 -0
  324. package/dist/dts/internal/data-grid-overlay-editor/private/image-overlay-editor.d.ts.map +1 -0
  325. package/dist/dts/internal/data-grid-overlay-editor/private/markdown-overlay-editor-style.d.ts +6 -0
  326. package/dist/dts/internal/data-grid-overlay-editor/private/markdown-overlay-editor-style.d.ts.map +1 -0
  327. package/dist/dts/internal/data-grid-overlay-editor/private/markdown-overlay-editor.d.ts +14 -0
  328. package/dist/dts/internal/data-grid-overlay-editor/private/markdown-overlay-editor.d.ts.map +1 -0
  329. package/dist/dts/internal/data-grid-overlay-editor/private/number-overlay-editor-style.d.ts +2 -0
  330. package/dist/dts/internal/data-grid-overlay-editor/private/number-overlay-editor-style.d.ts.map +1 -0
  331. package/dist/dts/internal/data-grid-overlay-editor/private/number-overlay-editor.d.ts +17 -0
  332. package/dist/dts/internal/data-grid-overlay-editor/private/number-overlay-editor.d.ts.map +1 -0
  333. package/dist/dts/internal/data-grid-overlay-editor/private/uri-overlay-editor-style.d.ts +2 -0
  334. package/dist/dts/internal/data-grid-overlay-editor/private/uri-overlay-editor-style.d.ts.map +1 -0
  335. package/dist/dts/internal/data-grid-overlay-editor/private/uri-overlay-editor.d.ts +13 -0
  336. package/dist/dts/internal/data-grid-overlay-editor/private/uri-overlay-editor.d.ts.map +1 -0
  337. package/dist/dts/internal/data-grid-overlay-editor/use-stay-on-screen.d.ts +8 -0
  338. package/dist/dts/internal/data-grid-overlay-editor/use-stay-on-screen.d.ts.map +1 -0
  339. package/dist/dts/internal/data-grid-search/data-grid-search-style.d.ts +2 -0
  340. package/dist/dts/internal/data-grid-search/data-grid-search-style.d.ts.map +1 -0
  341. package/dist/dts/internal/data-grid-search/data-grid-search.d.ts +41 -0
  342. package/dist/dts/internal/data-grid-search/data-grid-search.d.ts.map +1 -0
  343. package/dist/dts/internal/growing-entry/growing-entry-style.d.ts +4 -0
  344. package/dist/dts/internal/growing-entry/growing-entry-style.d.ts.map +1 -0
  345. package/dist/dts/internal/growing-entry/growing-entry.d.ts +12 -0
  346. package/dist/dts/internal/growing-entry/growing-entry.d.ts.map +1 -0
  347. package/dist/dts/internal/markdown-div/markdown-div.d.ts +14 -0
  348. package/dist/dts/internal/markdown-div/markdown-div.d.ts.map +1 -0
  349. package/dist/dts/internal/markdown-div/private/markdown-container.d.ts +2 -0
  350. package/dist/dts/internal/markdown-div/private/markdown-container.d.ts.map +1 -0
  351. package/dist/dts/internal/scrolling-data-grid/infinite-scroller.d.ts +38 -0
  352. package/dist/dts/internal/scrolling-data-grid/infinite-scroller.d.ts.map +1 -0
  353. package/dist/dts/internal/scrolling-data-grid/scrolling-data-grid.d.ts +57 -0
  354. package/dist/dts/internal/scrolling-data-grid/scrolling-data-grid.d.ts.map +1 -0
  355. package/dist/dts/internal/scrolling-data-grid/use-kinetic-scroll.d.ts +3 -0
  356. package/dist/dts/internal/scrolling-data-grid/use-kinetic-scroll.d.ts.map +1 -0
  357. package/dist/esm/cells/boolean-cell.js +87 -0
  358. package/dist/esm/cells/boolean-cell.js.map +1 -0
  359. package/dist/esm/cells/bubble-cell.js +53 -0
  360. package/dist/esm/cells/bubble-cell.js.map +1 -0
  361. package/dist/esm/cells/cell-types.js +2 -0
  362. package/dist/esm/cells/cell-types.js.map +1 -0
  363. package/dist/esm/cells/drilldown-cell.js +171 -0
  364. package/dist/esm/cells/drilldown-cell.js.map +1 -0
  365. package/dist/esm/cells/image-cell.js +94 -0
  366. package/dist/esm/cells/image-cell.js.map +1 -0
  367. package/dist/esm/cells/index.js +30 -0
  368. package/dist/esm/cells/index.js.map +1 -0
  369. package/dist/esm/cells/loading-cell.js +41 -0
  370. package/dist/esm/cells/loading-cell.js.map +1 -0
  371. package/dist/esm/cells/markdown-cell.js +30 -0
  372. package/dist/esm/cells/markdown-cell.js.map +1 -0
  373. package/dist/esm/cells/marker-cell.js +80 -0
  374. package/dist/esm/cells/marker-cell.js.map +1 -0
  375. package/dist/esm/cells/new-row-cell.js +53 -0
  376. package/dist/esm/cells/new-row-cell.js.map +1 -0
  377. package/dist/esm/cells/number-cell.js +44 -0
  378. package/dist/esm/cells/number-cell.js.map +1 -0
  379. package/dist/esm/cells/protected-cell.js +35 -0
  380. package/dist/esm/cells/protected-cell.js.map +1 -0
  381. package/dist/esm/cells/row-id-cell.js +23 -0
  382. package/dist/esm/cells/row-id-cell.js.map +1 -0
  383. package/dist/esm/cells/text-cell.js +48 -0
  384. package/dist/esm/cells/text-cell.js.map +1 -0
  385. package/dist/esm/cells/uri-cell.js +104 -0
  386. package/dist/esm/cells/uri-cell.js.map +1 -0
  387. package/dist/esm/common/browser-detect.js +20 -0
  388. package/dist/esm/common/browser-detect.js.map +1 -0
  389. package/dist/esm/common/image-window-loader.js +98 -0
  390. package/dist/esm/common/image-window-loader.js.map +1 -0
  391. package/dist/esm/common/is-hotkey.js +76 -0
  392. package/dist/esm/common/is-hotkey.js.map +1 -0
  393. package/dist/esm/common/math.js +297 -0
  394. package/dist/esm/common/math.js.map +1 -0
  395. package/dist/esm/common/render-state-provider.js +70 -0
  396. package/dist/esm/common/render-state-provider.js.map +1 -0
  397. package/dist/esm/common/resize-detector.js +27 -0
  398. package/dist/esm/common/resize-detector.js.map +1 -0
  399. package/dist/esm/common/styles.js +135 -0
  400. package/dist/esm/common/styles.js.map +1 -0
  401. package/dist/esm/common/support.js +60 -0
  402. package/dist/esm/common/support.js.map +1 -0
  403. package/dist/esm/common/utils.js +193 -0
  404. package/dist/esm/common/utils.js.map +1 -0
  405. package/dist/esm/data-editor/copy-paste.js +269 -0
  406. package/dist/esm/data-editor/copy-paste.js.map +1 -0
  407. package/dist/esm/data-editor/data-editor-fns.js +197 -0
  408. package/dist/esm/data-editor/data-editor-fns.js.map +1 -0
  409. package/dist/esm/data-editor/data-editor-keybindings.js +126 -0
  410. package/dist/esm/data-editor/data-editor-keybindings.js.map +1 -0
  411. package/dist/esm/data-editor/data-editor.js +2892 -0
  412. package/dist/esm/data-editor/data-editor.js.map +1 -0
  413. package/dist/esm/data-editor/group-rename.css +2 -0
  414. package/dist/esm/data-editor/group-rename.js +49 -0
  415. package/dist/esm/data-editor/group-rename.js.map +1 -0
  416. package/dist/esm/data-editor/row-grouping-api.js +34 -0
  417. package/dist/esm/data-editor/row-grouping-api.js.map +1 -0
  418. package/dist/esm/data-editor/row-grouping.js +189 -0
  419. package/dist/esm/data-editor/row-grouping.js.map +1 -0
  420. package/dist/esm/data-editor/use-autoscroll.js +36 -0
  421. package/dist/esm/data-editor/use-autoscroll.js.map +1 -0
  422. package/dist/esm/data-editor/use-cells-for-selection.js +53 -0
  423. package/dist/esm/data-editor/use-cells-for-selection.js.map +1 -0
  424. package/dist/esm/data-editor/use-column-sizer.js +189 -0
  425. package/dist/esm/data-editor/use-column-sizer.js.map +1 -0
  426. package/dist/esm/data-editor/use-initial-scroll-offset.js +81 -0
  427. package/dist/esm/data-editor/use-initial-scroll-offset.js.map +1 -0
  428. package/dist/esm/data-editor/use-rem-adjuster.js +29 -0
  429. package/dist/esm/data-editor/use-rem-adjuster.js.map +1 -0
  430. package/dist/esm/data-editor/visible-region.js +2 -0
  431. package/dist/esm/data-editor/visible-region.js.map +1 -0
  432. package/dist/esm/data-editor-all.js +19 -0
  433. package/dist/esm/data-editor-all.js.map +1 -0
  434. package/dist/esm/index.js +36 -0
  435. package/dist/esm/index.js.map +1 -0
  436. package/dist/esm/internal/click-outside-container/click-outside-container.js +34 -0
  437. package/dist/esm/internal/click-outside-container/click-outside-container.js.map +1 -0
  438. package/dist/esm/internal/data-editor-container/data-grid-container.js +36 -0
  439. package/dist/esm/internal/data-editor-container/data-grid-container.js.map +1 -0
  440. package/dist/esm/internal/data-grid/animation-manager.js +95 -0
  441. package/dist/esm/internal/data-grid/animation-manager.js.map +1 -0
  442. package/dist/esm/internal/data-grid/cell-set.js +56 -0
  443. package/dist/esm/internal/data-grid/cell-set.js.map +1 -0
  444. package/dist/esm/internal/data-grid/color-parser.js +122 -0
  445. package/dist/esm/internal/data-grid/color-parser.js.map +1 -0
  446. package/dist/esm/internal/data-grid/data-grid-sprites.js +65 -0
  447. package/dist/esm/internal/data-grid/data-grid-sprites.js.map +1 -0
  448. package/dist/esm/internal/data-grid/data-grid-types.js +299 -0
  449. package/dist/esm/internal/data-grid/data-grid-types.js.map +1 -0
  450. package/dist/esm/internal/data-grid/data-grid.js +1209 -0
  451. package/dist/esm/internal/data-grid/data-grid.js.map +1 -0
  452. package/dist/esm/internal/data-grid/event-args.js +30 -0
  453. package/dist/esm/internal/data-grid/event-args.js.map +1 -0
  454. package/dist/esm/internal/data-grid/image-window-loader-interface.js +2 -0
  455. package/dist/esm/internal/data-grid/image-window-loader-interface.js.map +1 -0
  456. package/dist/esm/internal/data-grid/render/data-grid-lib.js +653 -0
  457. package/dist/esm/internal/data-grid/render/data-grid-lib.js.map +1 -0
  458. package/dist/esm/internal/data-grid/render/data-grid-render.blit.js +219 -0
  459. package/dist/esm/internal/data-grid/render/data-grid-render.blit.js.map +1 -0
  460. package/dist/esm/internal/data-grid/render/data-grid-render.cells.js +370 -0
  461. package/dist/esm/internal/data-grid/render/data-grid-render.cells.js.map +1 -0
  462. package/dist/esm/internal/data-grid/render/data-grid-render.header.js +440 -0
  463. package/dist/esm/internal/data-grid/render/data-grid-render.header.js.map +1 -0
  464. package/dist/esm/internal/data-grid/render/data-grid-render.js +320 -0
  465. package/dist/esm/internal/data-grid/render/data-grid-render.js.map +1 -0
  466. package/dist/esm/internal/data-grid/render/data-grid-render.lines.js +261 -0
  467. package/dist/esm/internal/data-grid/render/data-grid-render.lines.js.map +1 -0
  468. package/dist/esm/internal/data-grid/render/data-grid-render.walk.js +158 -0
  469. package/dist/esm/internal/data-grid/render/data-grid-render.walk.js.map +1 -0
  470. package/dist/esm/internal/data-grid/render/data-grid.render.rings.js +205 -0
  471. package/dist/esm/internal/data-grid/render/data-grid.render.rings.js.map +1 -0
  472. package/dist/esm/internal/data-grid/render/draw-checkbox.js +65 -0
  473. package/dist/esm/internal/data-grid/render/draw-checkbox.js.map +1 -0
  474. package/dist/esm/internal/data-grid/render/draw-edit-hover-indicator.js +38 -0
  475. package/dist/esm/internal/data-grid/render/draw-edit-hover-indicator.js.map +1 -0
  476. package/dist/esm/internal/data-grid/render/draw-grid-arg.js +2 -0
  477. package/dist/esm/internal/data-grid/render/draw-grid-arg.js.map +1 -0
  478. package/dist/esm/internal/data-grid/sprites.js +288 -0
  479. package/dist/esm/internal/data-grid/sprites.js.map +1 -0
  480. package/dist/esm/internal/data-grid/use-animation-queue.js +34 -0
  481. package/dist/esm/internal/data-grid/use-animation-queue.js.map +1 -0
  482. package/dist/esm/internal/data-grid/use-selection-behavior.js +112 -0
  483. package/dist/esm/internal/data-grid/use-selection-behavior.js.map +1 -0
  484. package/dist/esm/internal/data-grid-dnd/data-grid-dnd.js +239 -0
  485. package/dist/esm/internal/data-grid-dnd/data-grid-dnd.js.map +1 -0
  486. package/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js +77 -0
  487. package/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js.map +1 -0
  488. package/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor.js +124 -0
  489. package/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor.js.map +1 -0
  490. package/dist/esm/internal/data-grid-overlay-editor/private/bubbles-overlay-editor-style.js +34 -0
  491. package/dist/esm/internal/data-grid-overlay-editor/private/bubbles-overlay-editor-style.js.map +1 -0
  492. package/dist/esm/internal/data-grid-overlay-editor/private/bubbles-overlay-editor.js +10 -0
  493. package/dist/esm/internal/data-grid-overlay-editor/private/bubbles-overlay-editor.js.map +1 -0
  494. package/dist/esm/internal/data-grid-overlay-editor/private/drilldown-overlay-editor.js +50 -0
  495. package/dist/esm/internal/data-grid-overlay-editor/private/drilldown-overlay-editor.js.map +1 -0
  496. package/dist/esm/internal/data-grid-overlay-editor/private/image-overlay-editor-style.js +56 -0
  497. package/dist/esm/internal/data-grid-overlay-editor/private/image-overlay-editor-style.js.map +1 -0
  498. package/dist/esm/internal/data-grid-overlay-editor/private/image-overlay-editor.js +21 -0
  499. package/dist/esm/internal/data-grid-overlay-editor/private/image-overlay-editor.js.map +1 -0
  500. package/dist/esm/internal/data-grid-overlay-editor/private/markdown-overlay-editor-style.js +76 -0
  501. package/dist/esm/internal/data-grid-overlay-editor/private/markdown-overlay-editor-style.js.map +1 -0
  502. package/dist/esm/internal/data-grid-overlay-editor/private/markdown-overlay-editor.js +32 -0
  503. package/dist/esm/internal/data-grid-overlay-editor/private/markdown-overlay-editor.js.map +1 -0
  504. package/dist/esm/internal/data-grid-overlay-editor/private/number-overlay-editor-style.js +15 -0
  505. package/dist/esm/internal/data-grid-overlay-editor/private/number-overlay-editor-style.js.map +1 -0
  506. package/dist/esm/internal/data-grid-overlay-editor/private/number-overlay-editor.js +30 -0
  507. package/dist/esm/internal/data-grid-overlay-editor/private/number-overlay-editor.js.map +1 -0
  508. package/dist/esm/internal/data-grid-overlay-editor/private/uri-overlay-editor-style.js +53 -0
  509. package/dist/esm/internal/data-grid-overlay-editor/private/uri-overlay-editor-style.js.map +1 -0
  510. package/dist/esm/internal/data-grid-overlay-editor/private/uri-overlay-editor.js +21 -0
  511. package/dist/esm/internal/data-grid-overlay-editor/private/uri-overlay-editor.js.map +1 -0
  512. package/dist/esm/internal/data-grid-overlay-editor/use-stay-on-screen.js +47 -0
  513. package/dist/esm/internal/data-grid-overlay-editor/use-stay-on-screen.js.map +1 -0
  514. package/dist/esm/internal/data-grid-search/data-grid-search-style.js +96 -0
  515. package/dist/esm/internal/data-grid-search/data-grid-search-style.js.map +1 -0
  516. package/dist/esm/internal/data-grid-search/data-grid-search.js +297 -0
  517. package/dist/esm/internal/data-grid-search/data-grid-search.js.map +1 -0
  518. package/dist/esm/internal/growing-entry/growing-entry-style.js +60 -0
  519. package/dist/esm/internal/growing-entry/growing-entry-style.js.map +1 -0
  520. package/dist/esm/internal/growing-entry/growing-entry.js +41 -0
  521. package/dist/esm/internal/growing-entry/growing-entry.js.map +1 -0
  522. package/dist/esm/internal/markdown-div/markdown-div.js +41 -0
  523. package/dist/esm/internal/markdown-div/markdown-div.js.map +1 -0
  524. package/dist/esm/internal/markdown-div/private/markdown-container.js +19 -0
  525. package/dist/esm/internal/markdown-div/private/markdown-container.js.map +1 -0
  526. package/dist/esm/internal/scrolling-data-grid/infinite-scroller.js +265 -0
  527. package/dist/esm/internal/scrolling-data-grid/infinite-scroller.js.map +1 -0
  528. package/dist/esm/internal/scrolling-data-grid/scrolling-data-grid.js +155 -0
  529. package/dist/esm/internal/scrolling-data-grid/scrolling-data-grid.js.map +1 -0
  530. package/dist/esm/internal/scrolling-data-grid/use-kinetic-scroll.js +65 -0
  531. package/dist/esm/internal/scrolling-data-grid/use-kinetic-scroll.js.map +1 -0
  532. package/dist/index.css +2 -0
  533. package/package.json +81 -0
  534. package/src/cells/boolean-cell.tsx +135 -0
  535. package/src/cells/bubble-cell.tsx +68 -0
  536. package/src/cells/cell-types.ts +124 -0
  537. package/src/cells/drilldown-cell.tsx +244 -0
  538. package/src/cells/image-cell.tsx +117 -0
  539. package/src/cells/index.ts +31 -0
  540. package/src/cells/loading-cell.tsx +56 -0
  541. package/src/cells/markdown-cell.tsx +44 -0
  542. package/src/cells/marker-cell.tsx +110 -0
  543. package/src/cells/new-row-cell.tsx +60 -0
  544. package/src/cells/number-cell.tsx +64 -0
  545. package/src/cells/protected-cell.tsx +42 -0
  546. package/src/cells/row-id-cell.tsx +35 -0
  547. package/src/cells/text-cell.tsx +63 -0
  548. package/src/cells/uri-cell.tsx +155 -0
  549. package/src/common/browser-detect.ts +25 -0
  550. package/src/common/image-window-loader.ts +114 -0
  551. package/src/common/is-hotkey.ts +86 -0
  552. package/src/common/math.ts +357 -0
  553. package/src/common/render-state-provider.ts +87 -0
  554. package/src/common/resize-detector.ts +43 -0
  555. package/src/common/styles.ts +214 -0
  556. package/src/common/support.ts +67 -0
  557. package/src/common/utils.tsx +284 -0
  558. package/src/data-editor/copy-paste.ts +320 -0
  559. package/src/data-editor/data-editor-fns.ts +227 -0
  560. package/src/data-editor/data-editor-keybindings.ts +198 -0
  561. package/src/data-editor/data-editor.tsx +4382 -0
  562. package/src/data-editor/group-rename.tsx +67 -0
  563. package/src/data-editor/row-grouping-api.ts +72 -0
  564. package/src/data-editor/row-grouping.ts +326 -0
  565. package/src/data-editor/stories/data-editor-repros.stories.tsx +107 -0
  566. package/src/data-editor/stories/data-editor.stories.tsx +796 -0
  567. package/src/data-editor/stories/utils.tsx +827 -0
  568. package/src/data-editor/use-autoscroll.ts +41 -0
  569. package/src/data-editor/use-cells-for-selection.ts +72 -0
  570. package/src/data-editor/use-column-sizer.ts +253 -0
  571. package/src/data-editor/use-initial-scroll-offset.ts +102 -0
  572. package/src/data-editor/use-rem-adjuster.ts +59 -0
  573. package/src/data-editor/visible-region.ts +20 -0
  574. package/src/data-editor-all.tsx +36 -0
  575. package/src/docs/00-faq.stories.tsx +63 -0
  576. package/src/docs/01-getting-started.stories.tsx +299 -0
  577. package/src/docs/02-editing-data.stories.tsx +365 -0
  578. package/src/docs/03-grid-column.stories.tsx +146 -0
  579. package/src/docs/04-streaming-data.stories.tsx +434 -0
  580. package/src/docs/05-copy-paste.stories.tsx.tsx +279 -0
  581. package/src/docs/06-search.stories.tsx +219 -0
  582. package/src/docs/07-column-grouping.stories.tsx +212 -0
  583. package/src/docs/08-theming.stories.tsx +409 -0
  584. package/src/docs/09-menus.stories.tsx +344 -0
  585. package/src/docs/doc-wrapper.tsx +512 -0
  586. package/src/docs/examples/add-column.stories.tsx +62 -0
  587. package/src/docs/examples/add-data-to-middle.stories.tsx +93 -0
  588. package/src/docs/examples/add-data-to-top.stories.tsx +70 -0
  589. package/src/docs/examples/add-data.stories.tsx +74 -0
  590. package/src/docs/examples/all-cell-kinds.stories.tsx +61 -0
  591. package/src/docs/examples/append-row-handle.stories.tsx +79 -0
  592. package/src/docs/examples/automatic-row-markers.stories.tsx +57 -0
  593. package/src/docs/examples/built-in-search.stories.tsx +83 -0
  594. package/src/docs/examples/cell-activated-event.stories.tsx +92 -0
  595. package/src/docs/examples/column-group-collapse.stories.tsx +105 -0
  596. package/src/docs/examples/column-groups.stories.tsx +51 -0
  597. package/src/docs/examples/content-alignment.stories.tsx +64 -0
  598. package/src/docs/examples/controlled-search.stories.tsx +93 -0
  599. package/src/docs/examples/controlled-selection.stories.tsx +98 -0
  600. package/src/docs/examples/copy-support.stories.tsx +63 -0
  601. package/src/docs/examples/custom-editors.stories.tsx +90 -0
  602. package/src/docs/examples/custom-event-target.stories.tsx +157 -0
  603. package/src/docs/examples/custom-group-header.stories.tsx +423 -0
  604. package/src/docs/examples/custom-header-icons.stories.tsx +76 -0
  605. package/src/docs/examples/custom-header.stories.tsx +67 -0
  606. package/src/docs/examples/custom-renderers.stories.tsx +72 -0
  607. package/src/docs/examples/drag-source.stories.tsx +63 -0
  608. package/src/docs/examples/drop-events.stories.tsx +155 -0
  609. package/src/docs/examples/fill-handle.stories.tsx +118 -0
  610. package/src/docs/examples/freeze-columns.stories.tsx +59 -0
  611. package/src/docs/examples/freeze-rows.stories.tsx +71 -0
  612. package/src/docs/examples/get-mouse-args.stories.tsx +61 -0
  613. package/src/docs/examples/header-menus.stories.tsx +162 -0
  614. package/src/docs/examples/highlight-cells.stories.tsx +84 -0
  615. package/src/docs/examples/imperative-scroll.stories.tsx +96 -0
  616. package/src/docs/examples/input-blending.stories.tsx +116 -0
  617. package/src/docs/examples/keybindings.stories.tsx +90 -0
  618. package/src/docs/examples/layout-integration.stories.tsx +48 -0
  619. package/src/docs/examples/multi-level-column-groups.stories.tsx +119 -0
  620. package/src/docs/examples/multi-select-columns.stories.tsx +47 -0
  621. package/src/docs/examples/new-column-button.stories.tsx +56 -0
  622. package/src/docs/examples/obscured-grid.stories.tsx +70 -0
  623. package/src/docs/examples/observe-visible-region.stories.tsx +56 -0
  624. package/src/docs/examples/one-hundred-thousand-columns.stories.tsx +31 -0
  625. package/src/docs/examples/one-million-rows.stories.tsx +37 -0
  626. package/src/docs/examples/overscroll.stories.tsx +74 -0
  627. package/src/docs/examples/padding.stories.tsx +74 -0
  628. package/src/docs/examples/paste-support.stories.tsx +73 -0
  629. package/src/docs/examples/prevent-diagonal-scroll.stories.tsx +47 -0
  630. package/src/docs/examples/rapid-updates.stories.tsx +108 -0
  631. package/src/docs/examples/rearrange-columns.stories.tsx +76 -0
  632. package/src/docs/examples/reorder-rows.stories.tsx +83 -0
  633. package/src/docs/examples/resizable-columns.stories.tsx +67 -0
  634. package/src/docs/examples/right-element.stories.tsx +87 -0
  635. package/src/docs/examples/right-to-left.stories.tsx +73 -0
  636. package/src/docs/examples/row-and-header-sizes.stories.tsx +75 -0
  637. package/src/docs/examples/row-grouping.stories.tsx +142 -0
  638. package/src/docs/examples/row-hover.stories.tsx +67 -0
  639. package/src/docs/examples/row-markers.stories.tsx +74 -0
  640. package/src/docs/examples/row-selections.stories.tsx +84 -0
  641. package/src/docs/examples/scaled-view.stories.tsx +36 -0
  642. package/src/docs/examples/scroll-offset.stories.tsx +49 -0
  643. package/src/docs/examples/scroll-shadows.stories.tsx +83 -0
  644. package/src/docs/examples/search-as-filter.stories.tsx +76 -0
  645. package/src/docs/examples/selection-serialization.stories.tsx +208 -0
  646. package/src/docs/examples/server-side-data.stories.tsx +219 -0
  647. package/src/docs/examples/shadow-dom.stories.tsx +107 -0
  648. package/src/docs/examples/silly-numbers.stories.tsx +40 -0
  649. package/src/docs/examples/small-editable-grid.stories.tsx +39 -0
  650. package/src/docs/examples/smooth-scrolling-grid.stories.tsx +56 -0
  651. package/src/docs/examples/span-cell.stories.tsx +99 -0
  652. package/src/docs/examples/stretch-column-size.stories.tsx +55 -0
  653. package/src/docs/examples/ten-million-cells.stories.tsx +34 -0
  654. package/src/docs/examples/theme-per-column.stories.tsx +88 -0
  655. package/src/docs/examples/theme-per-row.stories.tsx +73 -0
  656. package/src/docs/examples/theme-support.stories.tsx +150 -0
  657. package/src/docs/examples/tooltips.stories.tsx +119 -0
  658. package/src/docs/examples/trailing-row-options.stories.tsx +106 -0
  659. package/src/docs/examples/uneven-rows.stories.tsx +44 -0
  660. package/src/docs/examples/validate-data.stories.tsx +63 -0
  661. package/src/docs/examples/wrapping-text.stories.tsx +97 -0
  662. package/src/docs/template.tsx +69 -0
  663. package/src/index.ts +87 -0
  664. package/src/internal/click-outside-container/click-outside-container.tsx +50 -0
  665. package/src/internal/data-editor-container/data-grid-container.tsx +48 -0
  666. package/src/internal/data-grid/animation-manager.ts +119 -0
  667. package/src/internal/data-grid/cell-set.ts +65 -0
  668. package/src/internal/data-grid/color-parser.ts +141 -0
  669. package/src/internal/data-grid/data-grid-sprites.ts +107 -0
  670. package/src/internal/data-grid/data-grid-types.ts +742 -0
  671. package/src/internal/data-grid/data-grid.stories.tsx +410 -0
  672. package/src/internal/data-grid/data-grid.tsx +1978 -0
  673. package/src/internal/data-grid/event-args.ts +157 -0
  674. package/src/internal/data-grid/image-window-loader-interface.ts +9 -0
  675. package/src/internal/data-grid/render/data-grid-lib.ts +906 -0
  676. package/src/internal/data-grid/render/data-grid-render.blit.ts +291 -0
  677. package/src/internal/data-grid/render/data-grid-render.cells.ts +564 -0
  678. package/src/internal/data-grid/render/data-grid-render.header.ts +842 -0
  679. package/src/internal/data-grid/render/data-grid-render.lines.ts +379 -0
  680. package/src/internal/data-grid/render/data-grid-render.ts +825 -0
  681. package/src/internal/data-grid/render/data-grid-render.walk.ts +243 -0
  682. package/src/internal/data-grid/render/data-grid.render.rings.ts +348 -0
  683. package/src/internal/data-grid/render/draw-checkbox.ts +122 -0
  684. package/src/internal/data-grid/render/draw-edit-hover-indicator.ts +61 -0
  685. package/src/internal/data-grid/render/draw-grid-arg.ts +85 -0
  686. package/src/internal/data-grid/sprites.ts +321 -0
  687. package/src/internal/data-grid/use-animation-queue.ts +41 -0
  688. package/src/internal/data-grid/use-selection-behavior.ts +152 -0
  689. package/src/internal/data-grid-dnd/data-grid-dnd.tsx +450 -0
  690. package/src/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.tsx +83 -0
  691. package/src/internal/data-grid-overlay-editor/data-grid-overlay-editor.tsx +262 -0
  692. package/src/internal/data-grid-overlay-editor/private/bubbles-overlay-editor-style.tsx +34 -0
  693. package/src/internal/data-grid-overlay-editor/private/bubbles-overlay-editor.tsx +21 -0
  694. package/src/internal/data-grid-overlay-editor/private/drilldown-overlay-editor.tsx +63 -0
  695. package/src/internal/data-grid-overlay-editor/private/image-overlay-editor-style.tsx +56 -0
  696. package/src/internal/data-grid-overlay-editor/private/image-overlay-editor.tsx +51 -0
  697. package/src/internal/data-grid-overlay-editor/private/markdown-overlay-editor-style.tsx +80 -0
  698. package/src/internal/data-grid-overlay-editor/private/markdown-overlay-editor.tsx +65 -0
  699. package/src/internal/data-grid-overlay-editor/private/number-overlay-editor-style.tsx +15 -0
  700. package/src/internal/data-grid-overlay-editor/private/number-overlay-editor.tsx +77 -0
  701. package/src/internal/data-grid-overlay-editor/private/uri-overlay-editor-style.tsx +53 -0
  702. package/src/internal/data-grid-overlay-editor/private/uri-overlay-editor.tsx +52 -0
  703. package/src/internal/data-grid-overlay-editor/use-stay-on-screen.ts +61 -0
  704. package/src/internal/data-grid-search/data-grid-search-style.tsx +96 -0
  705. package/src/internal/data-grid-search/data-grid-search.tsx +578 -0
  706. package/src/internal/growing-entry/growing-entry-style.tsx +62 -0
  707. package/src/internal/growing-entry/growing-entry.tsx +74 -0
  708. package/src/internal/markdown-div/markdown-div.tsx +55 -0
  709. package/src/internal/markdown-div/private/markdown-container.tsx +19 -0
  710. package/src/internal/scrolling-data-grid/infinite-scroller.tsx +379 -0
  711. package/src/internal/scrolling-data-grid/scrolling-data-grid.stories.tsx +164 -0
  712. package/src/internal/scrolling-data-grid/scrolling-data-grid.tsx +353 -0
  713. package/src/internal/scrolling-data-grid/use-kinetic-scroll.ts +78 -0
  714. package/src/stories/story-utils.tsx +72 -0
  715. package/test/animation-manager.test.ts +147 -0
  716. package/test/cells.test.tsx +122 -0
  717. package/test/click-outside-container.test.tsx +62 -0
  718. package/test/color-parser.test.ts +68 -0
  719. package/test/common.test.ts +74 -0
  720. package/test/compact-selection.test.ts +221 -0
  721. package/test/copy-paste.test.ts +485 -0
  722. package/test/data-editor-fns.test.ts +153 -0
  723. package/test/data-editor-input.test.tsx +683 -0
  724. package/test/data-editor-resize.test.tsx +271 -0
  725. package/test/data-editor.test.tsx +4945 -0
  726. package/test/data-grid-lib.test.ts +457 -0
  727. package/test/data-grid-overlay.test.tsx +67 -0
  728. package/test/data-grid-types.test.ts +52 -0
  729. package/test/data-grid.test.tsx +399 -0
  730. package/test/image-window-loader.test.ts +211 -0
  731. package/test/math.test.ts +201 -0
  732. package/test/render-state-provider.test.ts +86 -0
  733. package/test/row-grouping-api.test.ts +77 -0
  734. package/test/row-grouping.test.ts +586 -0
  735. package/test/test-utils.tsx +365 -0
  736. package/test/uri-cell.test.ts +124 -0
  737. package/test/use-animation-queue.test.ts +53 -0
  738. package/test/use-autoscroll.test.tsx +108 -0
  739. package/test/use-column-sizer.test.tsx +414 -0
  740. package/test/use-deep-memo.test.ts +41 -0
  741. package/test/use-kinetic-scroll.test.ts +57 -0
  742. package/test/use-rem-adjuster.test.ts +69 -0
  743. package/test/utils.test.ts +127 -0
  744. package/vitest.config.ts +40 -0
  745. package/vitest.setup.ts +13 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,895 @@
1
+ # 5.0.0 Release notes
2
+
3
+ ## 🚨🚨 Breaking changes and porting guide
4
+
5
+ Glide Data Grid 5.0 no longer depends on `styled-components`! This means the Theme for your data grid is no longer provided via the `ThemeProvider` API.
6
+
7
+ ### Mandatory CSS file
8
+
9
+ Because Glide Data Grid no longer uses a CSS-in-JS solution, the CSS must be imported by consumers. This is usually achieved by doing the following somewhere in your project source.
10
+
11
+ ```ts
12
+ import "@glideapps/glide-data-grid/dist/index.css";
13
+ ```
14
+
15
+ Your bundler will take care of packing this in with the rest of the CSS your project requires. This is tested working with both next-js and create-react-app. Examples can be found in the [test-projects](https://github.com/glideapps/glide-data-grid/tree/main/test-projects) folder.
16
+
17
+ ### Theme porting
18
+
19
+ If you are not providing a custom theme to your data grid there is nothing to do. If you are using a custom theme you should replace:
20
+
21
+ ```tsx
22
+ return (
23
+ <ThemeProvider theme={gridTheme}>
24
+ <DataEditor {...myEditorProps} />
25
+ </ThemeProvider>
26
+ );
27
+ ```
28
+
29
+ with:
30
+
31
+ ```tsx
32
+ return <DataEditor theme={gridTheme} {...myEditorProps} />;
33
+ ```
34
+
35
+ ### Porting custom editors
36
+
37
+ All theme variables can now be accessed as a CSS variable:
38
+
39
+ ```css
40
+ .my-editor {
41
+ background-color: var(--gdg-bg-cell);
42
+ color: var(--gdg-text-dark);
43
+ }
44
+ ```
45
+
46
+ All variables except `lineHeight` are available in this manner. The full list includes
47
+
48
+ ```
49
+ --gdg-accent-color
50
+ --gdg-accent-fg
51
+ --gdg-accent-light
52
+ --gdg-text-dark
53
+ --gdg-text-medium
54
+ --gdg-text-light
55
+ --gdg-text-bubble
56
+ --gdg-bg-icon-header
57
+ --gdg-fg-icon-header
58
+ --gdg-text-header
59
+ --gdg-text-group-header
60
+ --gdg-text-header-selected
61
+ --gdg-bg-cell
62
+ --gdg-bg-cell-medium
63
+ --gdg-bg-header
64
+ --gdg-bg-header-has
65
+ --gdg-bg-header-hovered
66
+ --gdg-bg-bubble
67
+ --gdg-bg-bubble-selected
68
+ --gdg-bg-search-result
69
+ --gdg-border-color
70
+ --gdg-horizontal-border-color
71
+ --gdg-drilldown-border
72
+ --gdg-link-color
73
+ --gdg-cell-horizontal-padding
74
+ --gdg-cell-vertical-padding
75
+ --gdg-header-font-style
76
+ --gdg-base-font-style
77
+ --gdg-font-family
78
+ --gdg-editor-font-size
79
+ ```
80
+
81
+ The theme can be accessed in JS by using the new `useTheme` hook:
82
+
83
+ ```tsx
84
+ import { useTheme } from "@glideapps/glide-data-grid";
85
+
86
+ const MyComponent: React.VFC = () => {
87
+ const dataGridTheme = useTheme();
88
+ alert(dataGridTheme.bgHeader);
89
+
90
+ // ...
91
+ };
92
+ ```
93
+
94
+ The theme object returned from `useTheme` may not be identical to the passed theme object if any theme overrides are in use or the passed theme object did not contain all required keys. The 4.2.0 series has also been updated to include CSS variables. This should allow any third party library of custom editors to support both 4.2 and 5.0 at the same time provided they don't need the theme in JS.
95
+
96
+ ### rightElementSticky replaced with rightElementProps
97
+
98
+ Previously the `rightElement` of a data editor could be made sticky by doing:
99
+
100
+ ```tsx
101
+ <DataEditor rightElement={el} rightElementSticky={true} />
102
+ ```
103
+
104
+ This is now done by providing a rightElementProps
105
+
106
+ ```tsx
107
+ <DataEditor
108
+ rightElement={el}
109
+ rightElementProps={{
110
+ sticky: true,
111
+ }}
112
+ />
113
+ ```
114
+
115
+ ## ⚠️ Removal of deprecated API
116
+
117
+ The following previously deprecated API's are no longer present
118
+
119
+ - `drawCustomCell` replaced by `drawCell`
120
+ - `onColumnResized` replaced by `onColumnResize`
121
+ - `BooleanCell.allowEdit` replaced by `BooleanCell.readonly`
122
+ - `BooleanCell.showUnchecked` no replacement has been defunct for a long time
123
+
124
+ ## 🥳 New features
125
+
126
+ - react-virtualized-autosizer no longer used as a dependency
127
+ - Vertical and horizontal scroll shadows now available and configurable
128
+ - Cursor now settable per cell
129
+ - `validateCell` now receives the previous cell to make validation easier.
130
+ - Row marker header column now draws a checkbox rather than silently accepting inputs
131
+ - `drawHeader` now receives the index of the drawn header
132
+ - Value coercion can now return the desired selected range post coercion.
133
+ - `rightElementProps` new API which allows for making the right element not only sticky but also grow to consume leftover space.
134
+ - `onCellsEdited` is now always called prior to calling `onCellEdited` allowing for implementing a single edit callback.
135
+ - `isDraggable` can now be set to `cell` or `header` to allow dragging on just one or the other
136
+
137
+ ## 🐞 Bug fixes
138
+
139
+ - Setting `gridSelection` externally will keep the newly selected selection in view.
140
+ - No longer crashes when calling `getBounds` with a cell that is not in the current range, and instead returns undefined.
141
+ - Drag scrolling now significantly smoother
142
+ - Headers now properly select with touch events
143
+ - Headers will not emit spurious click events when completing drag operations
144
+ - Copying in safari no longer beeps the browser
145
+ - Trailing row options theme now applies to the trailing row even if it is not sticky
146
+ - Many svg loading improvements
147
+ - `onCellsEdited` now correctly prevents `onCellEdited` from being emitted when requested
148
+ - Auto-sizing columns will no longer cause their headers to be truncated
149
+ - Context menus can now be correctly cancelled on all operating systems, not just Windows
150
+ - NextJS production builds no longer complain
151
+
152
+ # 4.2.0 Release Notes
153
+
154
+ ## 🥳 New Features
155
+
156
+ ### 🌯 Text Wrapping
157
+
158
+ ![image](https://user-images.githubusercontent.com/30443/175222777-6d39bff7-c4d5-41ef-96c0-389dcb75af17.png)
159
+
160
+ Just set `allowWrapping` to true on your `TextCell`
161
+
162
+ ### 🗓️ Date Picker Cell
163
+
164
+ ![image](https://user-images.githubusercontent.com/30443/175223015-822fb0e9-ad3c-476c-a8ba-0aebd78d0c6e.png)
165
+
166
+ Available in the `glide-data-grid-cells` package.
167
+
168
+ ### ✅ Data Validation
169
+
170
+ ![image](https://user-images.githubusercontent.com/30443/175223127-fdf278bf-ca67-4ba0-8f7a-a1a1f785609d.png)
171
+
172
+ Let your users know the value they entered will not be accepted. You can also coerce values as they type.
173
+
174
+ Just provide the `validateCell` callback
175
+
176
+ ```ts
177
+ readonly validateCell?: (cell: Item, newValue: EditableGridCell) => boolean | EditableGridCell;
178
+ ```
179
+
180
+ ### ➗ Percentage column sizing
181
+
182
+ https://user-images.githubusercontent.com/30443/175350434-740c017d-3897-486c-a3ef-476d714d3d61.mp4
183
+
184
+ If your columns do not fill the entire width of the allocated area you can now allocate the leftover space to whatever column you want by setting the `grow` property on your column.
185
+
186
+ ### 🖱️🖱️ Double click to size column
187
+
188
+ https://user-images.githubusercontent.com/30443/175350873-e8360b6c-b030-4977-96cd-19dcc115f03b.mp4
189
+
190
+ ## 🦾 Minor Improvements
191
+
192
+ - `DropdownCell` now attempts to follow theme.
193
+ - `highlightRegions` now can be set to have a solid color outline.
194
+ - Row Markers now display a handle when row drag and drop is enabled.
195
+ - `appendRow` now available in imperative handle, thank you @pzcfg
196
+ - `onColumnResize` now passes the index of the resized column as well as the column itself.
197
+ - Improve column resize performance.
198
+
199
+ ## 🐞 Bug Fixes
200
+
201
+ - Protected cell rendering now handles being in selection correctly.
202
+ - Dragging on non-resizeable columns no longer shows a resize indicator.
203
+ - Search keybinding now works when caps-lock is pressed.
204
+ - Improve NextJS compatibility
205
+ - Disabling vertical border on the freeze column edge works correctly now
206
+ - Not every browser supports `window.navigator.clipboard` and we no longer crash.
207
+ - Newly appended rows with default values no longer get overwritten.
208
+ - Measurement of many cells improved
209
+
210
+ # 4.1.0 Release Notes
211
+
212
+ ## 🚨 Deprecations
213
+
214
+ - `BooleanCell.showUnchecked` now deprecated and replaced with passing null as the BooleanCell value.
215
+ - `BooleanCell.allowEdit` now deprecated and replace with `BooleanCell.readonly`.
216
+
217
+ Both deprecated options continue to work as intended, but implementors should begin migrating to the new options.
218
+
219
+ ## 😲 New Features
220
+
221
+ ### 🚣‍♂️ Improved support for styling of trailing row
222
+
223
+ `trailingRowOptions` of a `GridColumn` may now include a `themeOverride` and a `disabled` boolean which do what they say.
224
+
225
+ ### ✅⁉️ Boolean cell supports indeterminate and empty states
226
+
227
+ ![image](https://user-images.githubusercontent.com/30443/170390114-67106193-e0ba-4d0b-af5a-e6e40fe5a752.png)
228
+
229
+ `BooleanCell` can now take `null` or `undefined` as its `data` to show empty or indeterminate states respectively. To make this easier to remember, named exports are included for `BooleanIndeterminate` and `BooleanEmpty`.
230
+
231
+ ### 👉👈 Support for overriding text alignment in cells
232
+
233
+ All `GridCell` types now support a `contentAlign` parameter which can be set to `"right" | "left" | "center"` and will cause the text in the cell to be aligned as requested. Thanks to @LukasMasuch
234
+
235
+ ### 🪥 Custom cells can now handle Paste with ease
236
+
237
+ Custom cell renders can now optionally provide an `onPaste` callback which receives the `CustomCells` data property and a paste string. Implementors should return back a new `data` value which will then be used to create a new cell to pass to `onCellEdited`. This allows `onPaste` for custom cells to work the same as it does for all built in cells.
238
+
239
+ All cells shipped in `glide-data-grid-cells` have been updated to support the new mechanism.
240
+
241
+ ### 🐳 Mass paste handling made easier
242
+
243
+ `onCellsEdited` will be invoked if multiple cells are to be pasted into. This receives a list of all cells which are about to receive an `onCellEdited` callback due to the paste or other mass edit event. This is intended to allow more efficient handling to implementors and minimize render cycles.
244
+
245
+ ### 🕺 Basic animation support for custom cells
246
+
247
+ During a draw event for a custom cell, the cell may now call `args.requestAnimationFrame()` out of the passed args to the draw event. This will trigger the cell to be drawn again in the near term future for doing animations. Draw rate automatically throttles to around 30FPS after a fixed time with no breaks in animation.
248
+
249
+ ## 🐜💪 Minor Improvements
250
+
251
+ - `CompactSelection.remove` now supports removing a slice instead of just an index. Thanks to @BrianHung
252
+ - Custom editors no longer automatically commit the tempValue when finished editing is called, allowing for editing to be properly cancelled by the custom editor.
253
+ - Text entry into a cell now more eagerly being edit mode. This makes things like entering a negative number much easier and improves foreign language support.
254
+ - Top and right edges of the grid will no longer draw a double border in some cases, thank you @LukasMasuch
255
+ - Visually center text with better algorithm which accounts for oddities from font to font
256
+ - Boolean cells now supported in paste.
257
+
258
+ ## 🪲 Bug Fixes
259
+
260
+ - Slight improvements to the newline handling for overlay editors.
261
+ - Custom cells are now properly included in search results via the `copyData` property.
262
+ - Values copied out of the grid now copy raw values into HTML and display values into text. This improves copy/paste interop inside of Glide Data Grid.
263
+ - Ideal height calculation for Grid now properly accounts for trailing row.
264
+ - Focus will no longer be lost when interacting with cells outside of the visual viewport, thank you @BrianHung
265
+ - Fix `isDraggable`
266
+
267
+ # 4.0.0 Release Notes
268
+
269
+ ## 🚨🚨 Breaking API Changes
270
+
271
+ ### 📦 DataEditorContainer gone
272
+
273
+ The `DataEditorContainer` wrapper is dead. Long live the now permanently infused `DataEditorContainer`. The `DataEditor` now has optional width/height properties which act exactly like how the container used to work, when not set the DataEditor will now attempt to reasonably self size.
274
+
275
+ Further a `className` can now be passed to have direct control over the container sizing. Warning, messing around too much with the container may cause very unexpected behavior.
276
+
277
+ ### ✅ Selection API changes
278
+
279
+ The selection of the Data Grid has been unified into a single object. This dramatically reduces the complexity of handling selection scenarios involving multiple types of selection, watching for clearing of selections, and responding to selection states.
280
+
281
+ ```ts
282
+ interface GridSelection {
283
+ readonly current?: {
284
+ readonly cell: readonly [number, number];
285
+ readonly range: Readonly<Rectangle>;
286
+ readonly rangeStack: readonly Readonly<Rectangle>[];
287
+ };
288
+ readonly columns: CompactSelection;
289
+ readonly rows: CompactSelection;
290
+ }
291
+ ```
292
+
293
+ This means that the `selectedColumns` and `selectedRows` properties are now a part of the `selection` property. The new `rangeStack` is used when selecting multiple cell ranges.
294
+
295
+ ### getCellsForSelection changes
296
+
297
+ `getCellsForSelection` has a different API in 4.0 due to the GridSelection changes. Instead of passing a GridSelection it simply passes a Rectangle.
298
+
299
+ To further improve the consistency of data access for developers, `getCellsForSelection` can be implemented by passing `true`. This causes the data grid to internally use `getCellContent` whenever `getCellsForSelection` would normally be needed.
300
+
301
+ ### onDelete replacing onDeleteRows
302
+
303
+ `onDeleteRows` is gone and replaced with `onDelete`.
304
+
305
+ ```ts
306
+ onDelete?: (selection: GridSelection) => boolean | GridSelection;
307
+ ```
308
+
309
+ The onDelete callback receives the current GridSelection and returns either a boolean indicating if the deletion event should continue or a new GridSelection which will be deleted instead. This is useful if, for example, you wish to delete rows entirely when they selected rather than simply clearing their contents.
310
+
311
+ ### 🔍 Search Changes
312
+
313
+ Now that `getCellsForSelection` can be trivially default implemented, search depends on a `getCellsForSelection` implementation being set, even if it's just the default `true` option.
314
+
315
+ ## 🥳💃 New Features
316
+
317
+ ### ⌨️ Keybinding Improvements
318
+
319
+ 4.0.0 introduces a lot of improvements to keybinding handling to be more in line with the suggested [aria keybindings](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/grid_role#keyboard_interactions),
320
+
321
+ Keybindings can be controlled with the newly introduced `keybinding` property which takes a list of flags to enable/disable certain key combos.
322
+
323
+ ```ts
324
+ const keybindingDefaults: Keybinds = {
325
+ selectAll: true,
326
+ selectRow: true,
327
+ selectColumn: true,
328
+ downFill: false,
329
+ rightFill: false,
330
+ pageUp: false,
331
+ pageDown: false,
332
+ clear: true,
333
+ copy: true,
334
+ paste: true,
335
+ search: false,
336
+ first: true,
337
+ last: true,
338
+ };
339
+ ```
340
+
341
+ | Key Combo | Default | Flag | Description |
342
+ | ---------------------------- | ------- | ------------------- | ---------------------------------------------------------------------------------------- |
343
+ | Arrow | ✔️ | N/A | Moves the currently selected cell and clears other selections |
344
+ | Shift + Arrow | ✔️ | N/A | Extends the current selection range in the direction pressed. |
345
+ | Alt + Arrow | ✔️ | N/A | Moves the currently selected cell and retains the current selection |
346
+ | Ctrl/Cmd + Arrow \| Home/End | ✔️ | N/A | Move the selection as far as possible in the direction pressed. |
347
+ | Ctrl/Cmd + Shift + Arrow | ✔️ | N/A | Extends the selection as far as possible in the direction pressed. |
348
+ | Shift + Home/End | ✔️ | N/A | Extends the selection as far as possible in the direction pressed. |
349
+ | Ctrl/Cmd + A | ✔️ | `selectAll` | Selects all cells. |
350
+ | Shift + Space | ✔️ | `selectRow` | Selecs the current row. |
351
+ | Ctrl/Cmd + Space | ✔️ | `selectCol` | Selects the current col. |
352
+ | PageUp/PageDown | ❌ | `pageUp`/`pageDown` | Moves the current selection up/down by one page. |
353
+ | Escape | ✔️ | `clear` | Clear the current selection. |
354
+ | Ctrl/Cmd + D | ❌ | `downFill` | Data from the first row of the range will be down filled into the rows below it |
355
+ | Ctrl/Cmd + R | ❌ | `rightFill` | Data from the first column of the range will be right filled into the columns next to it |
356
+ | Ctrl/Cmd + C | ✔️ | `copy` | Copies the current selection. |
357
+ | Ctrl/Cmd + V | ✔️ | `paste` | Pastes the current buffer into the grid. |
358
+ | Ctrl/Cmd + F | ❌ | `search` | Opens the search interface. |
359
+ | Ctrl/Cmd + Home/End | ✔️ | `first`/`last` | Move the selection to the first/last cell in the data grid. |
360
+ | Ctrl/Cmd + Shift + Home/End | ✔️ | `first`/`last` | Extend the selection to the first/last cell in the data grid. |
361
+
362
+ ### Multi-Range selections
363
+
364
+ The data grid now supports multiple selections. Click+Drag to make an initial selection, then Ctrl + Drag to add another.
365
+
366
+ ```ts
367
+ rangeSelect?: "none" | "cell" | "rect" | "multi-cell" | "multi-rect"; // default rect
368
+ columnSelect?: "none" | "single" | "multi"; // default multi
369
+ rowSelect?: "none" | "single" | "multi"; // default multi
370
+ ```
371
+
372
+ When multi-select is enable, more than one range, row, or column can be selected at a time.
373
+
374
+ ### Selection blending
375
+
376
+ ![image](https://user-images.githubusercontent.com/30443/159854710-957cfcf9-b0d7-4399-af71-634cff7816bb.png)
377
+
378
+ Prior to v4.0.0 the data grid did not allow for mixing of column, row, and range based selections. With 4.0.0 this is now possible to enable.
379
+
380
+ ```ts
381
+ type SelectionBlending = "exclusive" | "mixed";
382
+
383
+ rangeSelectionBlending?: SelectionBlending;
384
+ columnSelectionBlending?: SelectionBlending;
385
+ rowSelectionBlending?: SelectionBlending;
386
+ ```
387
+
388
+ When a column/range/row selection blending is set to "exclusive", any other types of selections will be cleared when a selection of that type is made. When a selection of a different type is made, exclusive selections will also be cleared. In "mixed" mode range, column, and row selections can be blended into a single selection.
389
+
390
+ ### ✨ Highlight Regions
391
+
392
+ ![image](https://user-images.githubusercontent.com/30443/159854920-ab5588ec-1987-48d5-907f-51af8144b08d.png)
393
+
394
+ ```ts
395
+ interface Highlight {
396
+ readonly color: string;
397
+ readonly range: Rectangle;
398
+ }
399
+
400
+ highlightRegions?: readonly Highlight[];
401
+ ```
402
+
403
+ Highlight regions can be provided to highlight specific ranges and show the user contextually important cells.
404
+
405
+ ### Custom editor improvements
406
+
407
+ Custom editors can now receive the initial input value when a user begins typing on a cell. Further they can define a `deletedValue` callback when is responsible for emptying the CustomCell on delete.
408
+
409
+ ## 🐞 Bug Fixes
410
+
411
+ - Prevent issue with vertical underscroll on mobile devices.
412
+ - Minor performance improvements when rendering lots of empty text cells
413
+ - `react-number-format` is now lazy loaded to improve initial load times.
414
+ - Shift+enter now correctly moves the focus to the cell above.
415
+ - Fix off by one error with screen-reader columns
416
+
417
+ # 3.4.0 Release Notes
418
+
419
+ ## **New Features**
420
+
421
+ ### 🌉 **Span Support**
422
+
423
+ Cells can now be spanned across multiple columns. Spans are defined by setting the `span` property on GridCells. Requests for GridCells which are part of the same span must return the same information or undefined behavior will occur.
424
+
425
+ ### 📦 **Sources package released**
426
+
427
+ `glide-data-grid-source` has been released alongside this release of `glide-data-grid`. The source package contains useful hooks which can be used to easily add collapsing column groups, sorting columns, and re-arrangeable columns onto existing data sources. You can try out all of these features on the new [project homepage](https://grid.glideapps.com) which exposes all of these features by using the source package.
428
+
429
+ ### 🎨 **getRowThemeOverride**
430
+
431
+ Prior to the introduction of `getRowThemeOverride` the only way to implement striped rows in the data grid was to set a theme override for each cell. No longer. Striped rows are as easy as a single callback with mod 2.
432
+
433
+ ### 🦣🐁 **Automatic column sizing**
434
+
435
+ The data grid is now capable of automatically sizing every column in the sheet. Simply leave out the previously required `width` parameter and instead replace it with the `id` parameter. The `id` must be stable and not simply the index of the column to avoid weird drag and drop behavior or performance issues.
436
+
437
+ Auto sized columns are sized be measuring the width of their first 10 cells. Fewer cells may be measured if the number of columns begins to exceed a 10 thousand columns.
438
+
439
+ ### 🦊🏁 **Firefox performance improvements**
440
+
441
+ Through the magic of banging our heads against a wall repeatedly we have managed to bring firefox performance more in line with that of chrome. Even very large grids should scroll at or very near to 60fps in 3.4.0. Due to this the `experimental.disableFirefoxRescaling` has been replaced with `experimental.enableFirefoxRescaling` to reflect that this performance enhancement is now disabled by default. The data grid now renders between 2 and 10 times faster on firefox with large grids, depending on workload and GPU.
442
+
443
+ ### 🔬 **Minor features**
444
+
445
+ - Support for insert to custom row index
446
+ - Add experimental flag for strict mode. In strict mode getCellContent never calls for cells outside the range of the last visible region sent to onVisibleRegionChanged
447
+ - Drilldown cells now render much faster
448
+
449
+ ## **Bug Fixes**
450
+
451
+ - Fix issue where drag scrolling may not stop when mouse click releases.
452
+ - Images in firefox will no longer flicker when recycling an image element
453
+ - Prevent header menu click events when resizing
454
+ - Fix issue where header could sometimes be blanked when rapidly moving the mouse
455
+ - Fix theming issues in some overlay editors and search interface
456
+ - Fix padding changes causing weird flickering artifacts
457
+ - Touch scrolling no longer selects cells as you scroll
458
+ - Boolean cells can again be checked/unchecked with the keyboard
459
+
460
+ # 3.3.0 Release Notes
461
+
462
+ ## 🎊 **New Features**
463
+
464
+ ### **OverscrollY now supported in addition to OverscrollX**
465
+
466
+ Want to add more vertical space to the vertical scrolling area? Simply set the desired number of pixels in the `overscrollY` property of `DataEditor`.
467
+
468
+ ### **Arbitrary insertion into Grid**
469
+
470
+ The `onRowAppended` callback has been augmented to allow returning the index of the blank row that has been inserted into the data model. This allows for more varied insertion stories. Shout out to @pzcfg!
471
+
472
+ ### **ScrollTo now supported**
473
+
474
+ The data grid can be scrolled to a cell programmatically by calling `scrollTo` on its handle.
475
+
476
+ ### **Add Right click Menus anywhere, anytime**
477
+
478
+ Easily implement right click menus for the data grid with these three new APIs:
479
+
480
+ - `readonly onHeaderContextMenu?: (colIndex: number, event: HeaderClickedEventArgs) => void;`
481
+ - `readonly onGroupHeaderContextMenu?: (colIndex: number, event: GroupHeaderClickedEventArgs) => void;`
482
+ - `readonly onCellContextMenu?: (cell: Item, event: CellClickedEventArgs) => void;`
483
+
484
+ ### **onFinishedEditing callback now available at root level**
485
+
486
+ `readonly onFinishedEditing?: (newValue: GridCell | undefined, movement: Item) => void;`
487
+
488
+ This event fires even if the cell value itself is not changed. Big thank you @krisolchova for your wonderful contribution (which included tests!).
489
+
490
+ ## 🐛 **Bug Fixes**
491
+
492
+ - PaddingX/Y are now properly accounted for in scrolling situations. | @pzcfg
493
+ - Multiple storybook fixes. | @pzcfg @ivoelbert
494
+ - Marked dependency has been updated to the latest version from a very old version.
495
+
496
+ # 3.2.1 Release Notes
497
+
498
+ Correctness fix to avoid calling for out of range cells.
499
+
500
+ # 3.2.0 Release Notes
501
+
502
+ ## 🥳 New Features / Improvements
503
+
504
+ #### 🚀💥 Unit Testing
505
+
506
+ Glide Data Grid now has a much better testing framework in place to ensure fewer behavioral regressions sneak in.
507
+
508
+ #### 👨‍👨‍👦‍👦➡👩‍👩‍👧‍👧 Rename groups
509
+
510
+ ![image](https://user-images.githubusercontent.com/30443/146289874-7c0da700-5754-4431-b4e2-58b876409371.png)
511
+
512
+ Using `onGroupHeaderRenamed` the data grid can now support quick renaming of groups. There is also experimental support for arbitrary actions in group headers.
513
+
514
+ #### 🤩 Better `onCellClicked`, `onHeaderClicked`, and `onGroupHeaderClicked` events
515
+
516
+ The `onCellClicked`, `onHeaderClicked`, and `onGroupHeaderClicked` event now pass along a second `event` parameter which includes information about what was clicked and where inside the item the click occurred.
517
+
518
+ #### 🤵 Fancy headers via `drawHeader`
519
+
520
+ ![image](https://user-images.githubusercontent.com/30443/146289109-43b3c0c3-e9dd-4827-b56a-05dcb8f2a4e2.png)
521
+
522
+ The `drawHeader` callback works just like the `drawCell` callback but allows for the customization of the drawing of headers.
523
+
524
+ #### 🐭 `onMouseMove` callback
525
+
526
+ If you've ever wanted to track every mouse interaction and see what cell and where in that cell that interaction was happening, this event is just for you.
527
+
528
+ #### 🚄 Choo Choo! Data Grid gets faster! 🏎
529
+
530
+ We've but in significant work to the Glide Data Grid to help CPU bound systems like low end mobile devices even more. CPU utilization is down another 20%, making the fastest Data Grid the VERY fastest data grid.
531
+
532
+ #### 🚯General reduction in trash generated during renders
533
+
534
+ 3.2.0 includes significant reductions to the number of junk JS objects created during render. Depending on your transpiler settings this can cut the number of GC pauses in half.
535
+
536
+ #### 🛳🛳 Ship CommonJS and ESModules
537
+
538
+ 3.2.0 is the first release to ship both CommonJS and ESModules in the package. No matter what you need we provide.
539
+
540
+ ## 🐞 Bug Fixes
541
+
542
+ - Freeze columns no longer cause the data grid to crash if there are fewer actual columns than freeze columns.
543
+ - Fixed a bug where image smoothing would sometimes be left disabled for a frame.
544
+ - Fixed an issue where certain props would totally disable blitting optimization by mistake.
545
+ - Pressing backspace on OSX to delete cell contents will now also prevent the browser from navigating to the preview page.
546
+ - Cell editors on firefox will now always display the cursor correctly.
547
+ - Enabling `lastUpdated` on some cells could result in cells rendering with blank content in rare situations.
548
+
549
+ # 3.1.2 Release Notes
550
+
551
+ This release fixes a packaging error that could cause build issues.
552
+
553
+ # 3.1.1 Release Notes
554
+
555
+ This is a patch release. The primary focus of this was minor bug fixes, improving rendering performance, and plugging a couple minor feature holes.
556
+
557
+ ## 🚼 Behavioral Changes
558
+
559
+ In 3.1.1 the default textBaseline for the rendering context has been shifted to be `middle`. This enables more efficient rendering of the grid with fewer state changes. This only impacts custom cells if they fail to set the baseline appropriately for themselves.
560
+
561
+ ## 🥂 New Features / Improvements
562
+
563
+ #### 🤏🗺 Minimap
564
+
565
+ ![image](https://user-images.githubusercontent.com/30443/143328399-dd7b84d0-ca09-4c14-9b80-e9675cf6080b.png)
566
+
567
+ While functional the minimap is very much a beta feature. It can be turned on by setting `minimap` to true. The minimap is fully interactive, showing but where the user is scrolled to and allowing the user to click around and drag their location. It serves as both a map and 2d scrolling interface.
568
+
569
+ #### 👆📅 Update animation
570
+
571
+ ![mYOQxaMgMA](https://user-images.githubusercontent.com/30443/143329891-86d8bc6f-40b0-484d-8687-2221fe3f46e9.gif)
572
+
573
+ By setting the cells `lastUpdated` time to `performance.now()` you can trigger an update fade out animation in 3.1.1.
574
+
575
+ #### 🖼⚡ More faster images
576
+
577
+ The Data Grid now handles images even faster. Improvements include considerably lowering memory allocations when loading/processing images, and pooling image tags to reduce GC pressure during scroll and prevent unneeded state changes.
578
+
579
+ #### 🖌 Group themes
580
+
581
+ Groups can now provide a theme override for all cells in their group. This is especially useful when implementing collapsing groups. The vertical height of groups can also be changed now by setting `groupHeaderSize`.
582
+
583
+ ## 🐞Bug Fixes
584
+
585
+ - Fix crash when columns had menus and were under 30px wide
586
+ - Fix bug where grid selection would be reported to the user with an off by one error in some cases
587
+ - Support 0 width columns better and prevent overdraw of borders
588
+ - Empty string and undefined groups are now correctly treated as the same group
589
+ - Frozen columns can now be dragged correctly
590
+ - Minor editing improvements
591
+ - Font overrides now correctly apply to cells
592
+ - Dragging columns will no longer get stuck if the mouse ends over a menu icon
593
+ - Selected columns now properly handle delete key
594
+
595
+ # 3.1.0 Release Notes
596
+
597
+ This is a minor release for the Glide Data Grid. It introduces some breaking changes to the type definitions, however all runtime compatibility is maintained.
598
+
599
+ ## ✂ Deprecations
600
+
601
+ `drawCustomCell` has been replaced with `drawCell`. The two APIs are functionally equivalent however `drawCell` gives more information and allows for greater extensibility in the future.
602
+
603
+ ```ts
604
+ drawCell?: (args: {
605
+ ctx: CanvasRenderingContext2D;
606
+ cell: GridCell;
607
+ theme: Theme;
608
+ rect: Rectangle;
609
+ hoverAmount: number;
610
+ hoverX: number | undefined;
611
+ hoverY: number | undefined;
612
+ highlighted: boolean;
613
+ imageLoader: ImageWindowLoader;
614
+ }) => boolean;
615
+ ```
616
+
617
+ ## 🎉New Features / Improvements
618
+
619
+ #### 🐤 Slimmer, Meaner, Faster Loading!
620
+
621
+ Data Grid 3.1.0 clocks in at nearly 20% lighter when gzipped, and 30% lighter when minified. Load times are down, smiles are up. We also dropped the dependency on `direction`, 1.0 was not in heavy use anymore and the 2.0 version was not compatible. We also removed the dep on `copy-to-clipboard` as it is no longer needed on the target browsers we support.
622
+
623
+ #### 🦊Firefox improvements
624
+
625
+ We ❤ Firefox even if Firefox canvas is not the fastest out there. With large canvases on HIDPI displays sometimes we found glide-data-grid wasn't actually the fastest data grid in the world - this upset us. So we fixed it. Firefox will now dynamically scale its resolution during scrolling to improve performance. Once scrolling stops, full fidelity HIDPI rendering will be restored. There is an experimental flag to turn this behavior off.
626
+
627
+ #### 🖋 Append to top
628
+
629
+ `onRowAppended` has been updated to allow a return value which specifies where the newly inserted row has been inserted (top or bottom). This allows for "Append to Top" support for apps which need it.
630
+
631
+ #### 📜 Better scrolling
632
+
633
+ When using `shift+Arrow` keys to select a range, the extremes of your selection will be kept in view so you don't lose track of what you are doing.
634
+
635
+ We've also added an `overscrollX` parameter which tells the data grid to permit overscalling by a set number of pixels. This can make it easier to resize the final column in a grid.
636
+
637
+ #### 🤡 Per-cell theme override
638
+
639
+ Dress up your cells however you want. Every cell now supports an `overrideTheme` parameter which will be blended with the parent themes to create a theme just for that cell. This makes it much easier to modify the existing cells without having to fall back to a custom renderer.
640
+
641
+ #### 👩‍👩‍👧‍👧 Group header icons
642
+
643
+ ![image](https://user-images.githubusercontent.com/30443/142516507-0dbf8a2d-0d51-4411-bc74-548dfb87189e.png)
644
+
645
+ Your groups can now have icons to make them visually easier to distinguish. You can specify these by providing:
646
+
647
+ ```ts
648
+ readonly getGroupDetails?: (groupName: string) => { name: string; icon?: string };
649
+ ```
650
+
651
+ ## 🐛 Major Bug Fixes
652
+
653
+ - Fixed a crash when dragging rows
654
+ - Clicking on the bottom scrollbar no longer clears the selection
655
+ - Fix spurious drag start events even though `isDraggable` is set to false.
656
+ - Clicks from non-primary buttons no longer trigger the canvas
657
+ - Delete key now deletes the entire selected range, not just the selected cell.
658
+ - Fonts now re-render when the browser finishes loading to make sure fallback fonts are replaced.
659
+ - Custom editors handle shift/esc/enter automatically now.
660
+
661
+ # 3.0.4 Release Notes
662
+
663
+ This is a minor release for the Glide Data Grid. It introduces some new features but is backwards compatible with the rest of the 3.0 series.
664
+
665
+ ## 🎉 New Feature / Improvements
666
+
667
+ #### 🏁 Performance Improvements
668
+
669
+ The Data Grid no longer incurs full frame redraws after completing animations or loading images. This means that scrolling performance is up and CPU usage is down in this release. The fastest DataGrid keeps getting faster.
670
+
671
+ #### ⌨ New Keybindings
672
+
673
+ `Ctrl + Arrow` keys now will jump to the edge of the grid. This improves compatibility for experiences spreadsheets users.
674
+ `Ctrl + D` copies the currently selected cell down to the selected range.
675
+
676
+ #### ❄ Freeze Columns
677
+
678
+ ![image](https://user-images.githubusercontent.com/30443/141211232-e266800d-d0b8-45f2-bc9f-d1f52c6b071e.png)
679
+
680
+ ```ts
681
+ freezeColumns?: number;
682
+ ```
683
+
684
+ Settings the freezeColumns on the `DataEditor` will cause a fixed number of columns to become sticky during scrolling.
685
+
686
+ #### 💈 Bar charts in sparklines
687
+
688
+ ![image](https://user-images.githubusercontent.com/30443/141211316-6bfb4c15-815e-471b-b686-debd591dcc1a.png)
689
+
690
+ Simply set your sparkline cell `graphKind` to "bar" and enjoy the bar chart rendering. All other API is the same. In order to maintain backwards compat the default value remains lines if `graphKind` is not provided.
691
+
692
+ #### 👩‍👩‍👧‍👧 Column Groups
693
+
694
+ ![image](https://user-images.githubusercontent.com/30443/141211567-a511a2d7-2efe-463c-885d-c59d56aeb4d0.png)
695
+
696
+ Content in the data grid may now be displayed under column groups by setting the `group` property on your `GridColumn`. All columns in a group may be selected by clicking on its header.
697
+
698
+ # 3.0.3 Release Notes
699
+
700
+ This is a minor release focused on fixing issues found in the 3.0.0 release.
701
+
702
+ ## 🐛 Bug Fixes
703
+
704
+ #### 📜 Data grid sometimes would not scroll to show selected cell
705
+
706
+ The data grid now scrolls to exactly the selected cells location to ensure a consistent keyboard experience.
707
+
708
+ #### 🖱 Multiple drag and drop bugs fixed
709
+
710
+ The data grid will no longer get stuck in drag and drop mode as easily. Nor will it accidentally trigger menus when dragging a column.
711
+
712
+ ## 🎉 New Features / Improvements
713
+
714
+ #### 🦄 Custom Cell
715
+
716
+ New API!
717
+
718
+ ```ts
719
+ interface CustomCell<T extends {} = {}> extends BaseGridCell {
720
+ readonly kind: GridCellKind.Custom;
721
+ readonly data: T;
722
+ readonly copyData: string;
723
+ }
724
+ ```
725
+
726
+ Custom cell can be used to create new cell types quickly and easily. We are already using it in our [glide-data-grid-cells](https://www.npmjs.com/package/@glideapps/glide-data-grid-cells) package in order to ship to you brand new cells. These cells can include custom input editors as well!
727
+
728
+ #### 🌽 Round image corners
729
+
730
+ All images rendered in the grid are rounded by default now to give a better visual appearance.
731
+
732
+ #### 📊 Sparklines and Stars
733
+
734
+ With the introduction of the new glide-data-grid-cells package we are also introducing Sparklines and Star cells to the glide-data-grid.
735
+
736
+ ![image](https://user-images.githubusercontent.com/30443/141184582-41c73509-5fbe-42e6-aff4-7f4c8fc2b4f2.png)
737
+
738
+ Both can be dynamically updated just like any other cell type. No strings attached.
739
+
740
+ # 3.0.2 Release Notes
741
+
742
+ This is a minor release focused on fixing issues found in the 3.0.0 release.
743
+
744
+ ## 🐛 Bug Fixes
745
+
746
+ - Cell click event does not fire reliably, fixes #81
747
+
748
+ # 3.0.1 Release Notes
749
+
750
+ This is a minor release focused on fixing issues found in the 3.0.0 release.
751
+
752
+ ## 🐛 Bug Fixes
753
+
754
+ #### ✂ Focus Ring no longer clips under the trailing row when it is sticky.
755
+
756
+ ![image](https://user-images.githubusercontent.com/30443/139356496-45b06f01-8850-4f5d-b52b-5bdb639356f8.png)
757
+
758
+ #### 📠 Copy improvements
759
+
760
+ Certain strings would not get properly escaped when copying out of the DataEditor. This resulted in paste failures when pasting to Excel or Google Sheets.
761
+
762
+ ## 🎉 New Features / Improvements
763
+
764
+ #### ♊ Multi-paste Support
765
+
766
+ New API!
767
+
768
+ ```ts
769
+ onPaste?: ((target: Item, values: readonly (readonly string[])[]) => boolean) | boolean;
770
+ ```
771
+
772
+ `onPaste` is called when data is pasted into the grid. If left undefined, the `DataEditor` will operate in a fallback mode and attempt to paste the text buffer into the current cell assuming the current cell is not readonly and can accept the data type. If `onPaste` is set to false or the function returns false, the grid will simply ignore paste. If `onPaste` evaluates to true the grid will attempt to split the data by tabs and newlines and paste into available cells.
773
+
774
+ The grid will not attempt to add additional rows if more data is pasted then can fit. In that case it is advisable to simply return false from onPaste and handle the paste manually.
775
+
776
+ #### ☑ DataEditor.rowSelectionMode
777
+
778
+ The DataEditor can now optionally act as if the Ctrl/Command key is depressed at all times when selecting rows. This can lead to a more intuitive experience for novice users. The two new modes are `auto` and `multi`. In `auto` mode selection acts as it does today, with single click clearing selection unless the Ctrl/Command key is pressed or touch events are used.
779
+
780
+ #### 🤡 Clowncar Scrolling
781
+
782
+ Data Grid now supports truly ridiculous numbers of rows, well north of 100 Million if your data source can handle it. This mandates a special scrolling mode which kicks in once the browsers scrolling precision is exhausted.
783
+
784
+ #### 🤏 CompactSelection.offset
785
+
786
+ CompactSelections now have an offset API for shifting the CompactSelection by a fixed amount.
787
+
788
+ #### ⚡ Faster animations
789
+
790
+ Default animation time has been shortened to 80ms from 120ms to improve the responsive feeling of the Data Grid.
791
+
792
+ # 3.0.0 Release Notes
793
+
794
+ This is a breaking release for the Glide Data Grid. Please be careful if you choose to upgrade.
795
+
796
+ ## New Features / Improvements
797
+
798
+ ### Uneven Rows
799
+
800
+ ![image](https://user-images.githubusercontent.com/30443/137536787-0a5907d7-dec2-4d04-803f-fdff57fe5b78.png)
801
+
802
+ Uneven rows can be created by passing a callback to the `rowHeight` property. This callback takes the row as an input and returns a number as the output. Currently uneven rows can negatively impact performance for very large lists as there is no internal caching mechanism for this.
803
+
804
+ ### Better row marker selection support
805
+
806
+ ![image](https://user-images.githubusercontent.com/30443/137536396-f99367b0-31a8-4bd7-810e-7d15a2374c12.png)
807
+
808
+ `rowMarkers` is no longer a boolean and now can be configured to be `none`, `checkbox`, `number`, or `both`. In addition Row Markers now have significantly improved handling for Ctrl/Command, Shift clicking, and Ctrl/Command+Shift clicking. It's behavior now closely resembles how most operating systems handle these operations.
809
+
810
+ ### Better image handling
811
+
812
+ Images will now cancel requests when they fall out of the rendering area. This means that when scrolling rapidly through grids with large numbers of images they will no longer form a long queue which must be processed prior to downloading the displayed images.
813
+
814
+ ### Trailing row options
815
+
816
+ ![image](https://user-images.githubusercontent.com/30443/137535998-d96e9738-5633-4165-a564-6632a753c665.png)
817
+
818
+ There is a new prop `trailingRowOptions` which can be used to theme the trailing row if `onRowAppended` is set.
819
+
820
+ ```ts
821
+ readonly trailingRowOptions?: {
822
+ readonly tint?: boolean;
823
+ readonly hint?: string;
824
+ readonly sticky?: boolean;
825
+ };
826
+ ```
827
+
828
+ ### Simple animations
829
+
830
+ Data Grid now supports some simple animations. These are used for the trailing row, row markers, and boolean cells. As we continue to develop the Data Grid we will add more animations where they make sense.
831
+
832
+ ### Speed improvements
833
+
834
+ Data Grid 3.0 supports much larger numbers of columns and rows without experiencing major slowdowns. Provided the `getCellContent` callback is sufficiently fast, Data Grid can easily support over 10 million cells, 100k columns, and 1 million rows. Currently the number of rows is largely constrained by the max scrollable region support by browsers, which tends to be 33,554,400 pixels. In the future we will be investigating ways to extend beyond this limit.
835
+
836
+ ## Breaking changes
837
+
838
+ ### Theme support reworked
839
+
840
+ The theme for `DataEditor` has been flattened to make creating custom themes simpler and more intuitive. The new base theme is:
841
+
842
+ ```js
843
+ const dataEditorBaseTheme = {
844
+ accentColor: "#4F5DFF",
845
+ accentMedium: "rgba(79,118,255,0.5)",
846
+ accentLight: "rgba(79, 93, 255, 0.1)",
847
+
848
+ textDark: "#313139",
849
+ textMedium: "#737383",
850
+ textLight: "#B2B2C0",
851
+ textHeader: "#737383",
852
+ textHeaderSelected: "#FFFFFF",
853
+ textBubble: "#313139",
854
+
855
+ bgCell: "#FFFFFF",
856
+ bgCellMedium: "#FAFAFB",
857
+ bgHeader: "#EDEDF3",
858
+ bgHeaderHasFocus: "#D8D8E3",
859
+
860
+ bgBubble: "#EDEDF3",
861
+ bgBubbleSelected: "#FFFFFF",
862
+
863
+ bgSearchResult: "#fff9e3",
864
+
865
+ borderColor: "rgba(45,45,45,0.16)",
866
+ borderDark: "rgba(0, 0, 0, 0)",
867
+
868
+ linkColor: "#4F5DFF",
869
+
870
+ headerFontStyle: "bold 14px",
871
+ baseFontStyle: "13px",
872
+ fontFamily:
873
+ "Inter, Roboto, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, noto, arial, sans-serif",
874
+ };
875
+ ```
876
+
877
+ ### Trailing row off by default
878
+
879
+ Trailing rows must be explicitly requested. Trailing rows are added automatically when `onRowAppended` is set. The `showTrailingBlankRow` prop has been removed.
880
+
881
+ ### Removed `allowResize` prop
882
+
883
+ Resizing is controlled by passing a callback to `onColumnResized` or not. This prop was redundant and its removal simplifies the API.
884
+
885
+ ### Removed `cellXOffset` and `cellYOffset` props
886
+
887
+ These never did anything positive if not set to the correct values. The Data Grid now always sets these to the correct values.
888
+
889
+ ### Trailing row handling
890
+
891
+ When clicking on the first column in a trailing row if the `trailingRowOptions.hint` is set a blank row will automatically be created and `onRowAppended` called.
892
+
893
+ ### onRowAppended no longer has props
894
+
895
+ The Data grid always assumes you wish to add a completely blank row and enters the edit state for the newly added cell.