@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-grid-lib.js","sourceRoot":"","sources":["../../../../../src/internal/data-grid/render/data-grid-lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ /* eslint-disable sonarjs/no-duplicate-string */
2
+ /* eslint-disable unicorn/no-for-loop */
3
+ import { deepEqual } from "../../../common/support.js";
4
+ import {} from "../data-grid-types.js";
5
+ import { getStickyWidth, getFreezeTrailingHeight } from "./data-grid-lib.js";
6
+ import { walkColumns } from "./data-grid-render.walk.js";
7
+ export function blitLastFrame(ctx, blitSource, blitSourceScroll, targetScroll, last, cellXOffset, cellYOffset, translateX, translateY, freezeTrailingRows, width, height, rows, totalHeaderHeight, dpr, mappedColumns, effectiveCols, getRowHeight, doubleBuffer) {
8
+ const drawRegions = [];
9
+ ctx.imageSmoothingEnabled = false;
10
+ const minY = Math.min(last.cellYOffset, cellYOffset);
11
+ const maxY = Math.max(last.cellYOffset, cellYOffset);
12
+ let deltaY = 0;
13
+ if (typeof getRowHeight === "number") {
14
+ deltaY += (maxY - minY) * getRowHeight;
15
+ }
16
+ else {
17
+ for (let i = minY; i < maxY; i++) {
18
+ deltaY += getRowHeight(i);
19
+ }
20
+ }
21
+ if (cellYOffset > last.cellYOffset) {
22
+ deltaY = -deltaY;
23
+ }
24
+ deltaY += translateY - last.translateY;
25
+ const minX = Math.min(last.cellXOffset, cellXOffset);
26
+ const maxX = Math.max(last.cellXOffset, cellXOffset);
27
+ let deltaX = 0;
28
+ for (let i = minX; i < maxX; i++) {
29
+ deltaX += mappedColumns[i].width;
30
+ }
31
+ if (cellXOffset > last.cellXOffset) {
32
+ deltaX = -deltaX;
33
+ }
34
+ deltaX += translateX - last.translateX;
35
+ const stickyWidth = getStickyWidth(effectiveCols);
36
+ if (deltaX !== 0 && deltaY !== 0) {
37
+ return {
38
+ regions: [],
39
+ };
40
+ }
41
+ const freezeTrailingRowsHeight = freezeTrailingRows > 0 ? getFreezeTrailingHeight(rows, freezeTrailingRows, getRowHeight) : 0;
42
+ const blitWidth = width - stickyWidth - Math.abs(deltaX);
43
+ const blitHeight = height - totalHeaderHeight - freezeTrailingRowsHeight - Math.abs(deltaY) - 1;
44
+ if (blitWidth > 150 && blitHeight > 150) {
45
+ const args = {
46
+ sx: 0,
47
+ sy: 0,
48
+ sw: width * dpr,
49
+ sh: height * dpr,
50
+ dx: 0,
51
+ dy: 0,
52
+ dw: width * dpr,
53
+ dh: height * dpr,
54
+ };
55
+ // blit Y
56
+ if (deltaY > 0) {
57
+ // scrolling up
58
+ args.sy = (totalHeaderHeight + 1) * dpr;
59
+ args.sh = blitHeight * dpr;
60
+ args.dy = (deltaY + totalHeaderHeight + 1) * dpr;
61
+ args.dh = blitHeight * dpr;
62
+ drawRegions.push({
63
+ x: 0,
64
+ y: totalHeaderHeight,
65
+ width: width,
66
+ height: deltaY + 1,
67
+ });
68
+ }
69
+ else if (deltaY < 0) {
70
+ // scrolling down
71
+ args.sy = (-deltaY + totalHeaderHeight + 1) * dpr;
72
+ args.sh = blitHeight * dpr;
73
+ args.dy = (totalHeaderHeight + 1) * dpr;
74
+ args.dh = blitHeight * dpr;
75
+ drawRegions.push({
76
+ x: 0,
77
+ y: height + deltaY - freezeTrailingRowsHeight,
78
+ width: width,
79
+ height: -deltaY + freezeTrailingRowsHeight,
80
+ });
81
+ }
82
+ // blit X
83
+ if (deltaX > 0) {
84
+ // pixels moving right
85
+ args.sx = stickyWidth * dpr;
86
+ args.sw = blitWidth * dpr;
87
+ args.dx = (deltaX + stickyWidth) * dpr;
88
+ args.dw = blitWidth * dpr;
89
+ drawRegions.push({
90
+ x: stickyWidth - 1,
91
+ y: 0,
92
+ width: deltaX + 2, // extra width to account for first col not drawing a left side border
93
+ height: height,
94
+ });
95
+ }
96
+ else if (deltaX < 0) {
97
+ // pixels moving left
98
+ args.sx = (stickyWidth - deltaX) * dpr;
99
+ args.sw = blitWidth * dpr;
100
+ args.dx = stickyWidth * dpr;
101
+ args.dw = blitWidth * dpr;
102
+ drawRegions.push({
103
+ x: width + deltaX,
104
+ y: 0,
105
+ width: -deltaX,
106
+ height: height,
107
+ });
108
+ }
109
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
110
+ if (doubleBuffer) {
111
+ if (stickyWidth > 0 &&
112
+ deltaX !== 0 &&
113
+ deltaY === 0 &&
114
+ (targetScroll === undefined || blitSourceScroll?.[1] !== false)) {
115
+ // When double buffering the freeze columns can be offset by a couple pixels vertically between the two
116
+ // buffers. We don't want to redraw them so we need to make sure to copy them between the buffers.
117
+ const w = stickyWidth * dpr;
118
+ const h = height * dpr;
119
+ ctx.drawImage(blitSource, 0, 0, w, h, 0, 0, w, h);
120
+ }
121
+ if (freezeTrailingRowsHeight > 0 &&
122
+ deltaX === 0 &&
123
+ deltaY !== 0 &&
124
+ (targetScroll === undefined || blitSourceScroll?.[0] !== false)) {
125
+ const y = (height - freezeTrailingRowsHeight) * dpr;
126
+ const w = width * dpr;
127
+ const h = freezeTrailingRowsHeight * dpr;
128
+ ctx.drawImage(blitSource, 0, y, w, h, 0, y, w, h);
129
+ }
130
+ }
131
+ ctx.drawImage(blitSource, args.sx, args.sy, args.sw, args.sh, args.dx, args.dy, args.dw, args.dh);
132
+ ctx.scale(dpr, dpr);
133
+ }
134
+ ctx.imageSmoothingEnabled = true;
135
+ return {
136
+ regions: drawRegions,
137
+ };
138
+ }
139
+ export function blitResizedCol(last, cellXOffset, cellYOffset, translateX, translateY, width, height, totalHeaderHeight, effectiveCols, resizedIndex) {
140
+ const drawRegions = [];
141
+ // ctx.imageSmoothingEnabled = false;
142
+ if (cellXOffset !== last.cellXOffset ||
143
+ cellYOffset !== last.cellYOffset ||
144
+ translateX !== last.translateX ||
145
+ translateY !== last.translateY) {
146
+ return drawRegions;
147
+ }
148
+ walkColumns(effectiveCols, cellYOffset, translateX, translateY, totalHeaderHeight, (c, drawX, _drawY, clipX) => {
149
+ if (c.sourceIndex === resizedIndex) {
150
+ const x = Math.max(drawX, clipX) + 1;
151
+ drawRegions.push({
152
+ x,
153
+ y: 0,
154
+ width: width - x,
155
+ height,
156
+ });
157
+ return true;
158
+ }
159
+ });
160
+ return drawRegions;
161
+ }
162
+ export function computeCanBlit(current, last) {
163
+ if (last === undefined)
164
+ return false;
165
+ if (current.width !== last.width ||
166
+ current.height !== last.height ||
167
+ current.theme !== last.theme ||
168
+ current.headerHeight !== last.headerHeight ||
169
+ current.rowHeight !== last.rowHeight ||
170
+ current.rows !== last.rows ||
171
+ current.freezeColumns !== last.freezeColumns ||
172
+ current.getRowThemeOverride !== last.getRowThemeOverride ||
173
+ current.isFocused !== last.isFocused ||
174
+ current.isResizing !== last.isResizing ||
175
+ current.verticalBorder !== last.verticalBorder ||
176
+ current.getCellContent !== last.getCellContent ||
177
+ current.highlightRegions !== last.highlightRegions ||
178
+ current.selection !== last.selection ||
179
+ current.dragAndDropState !== last.dragAndDropState ||
180
+ current.prelightCells !== last.prelightCells ||
181
+ current.touchMode !== last.touchMode ||
182
+ current.maxScaleFactor !== last.maxScaleFactor) {
183
+ return false;
184
+ }
185
+ if (current.mappedColumns !== last.mappedColumns) {
186
+ if (current.mappedColumns.length > 100 || current.mappedColumns.length !== last.mappedColumns.length) {
187
+ // The array is big, let's just redraw the damned thing rather than check these all. Or the number of cols
188
+ // changed in which case I dont want to figure out what happened.
189
+ return false;
190
+ }
191
+ // We want to know if only one column has resized. If this is the case we can do a special left/right sliding
192
+ // blit. Or just not redraw shit on the left.
193
+ let resized;
194
+ for (let i = 0; i < current.mappedColumns.length; i++) {
195
+ const curCol = current.mappedColumns[i];
196
+ const lastCol = last.mappedColumns[i];
197
+ if (deepEqual(curCol, lastCol))
198
+ continue;
199
+ // two columns changed, abort
200
+ if (resized !== undefined)
201
+ return false;
202
+ if (curCol.width === lastCol.width)
203
+ return false;
204
+ const { width, ...curRest } = curCol;
205
+ const { width: lastWidth, ...lastRest } = lastCol;
206
+ // more than width changed, abort
207
+ if (!deepEqual(curRest, lastRest))
208
+ return false;
209
+ resized = i;
210
+ }
211
+ if (resized === undefined) {
212
+ // we never found a changed column, cool, we can blit
213
+ return true;
214
+ }
215
+ return resized;
216
+ }
217
+ return true;
218
+ }
219
+ //# sourceMappingURL=data-grid-render.blit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-grid-render.blit.js","sourceRoot":"","sources":["../../../../../src/internal/data-grid/render/data-grid-render.blit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,370 @@
1
+ /* eslint-disable sonarjs/no-duplicate-string */
2
+ /* eslint-disable unicorn/no-for-loop */
3
+ import { CompactSelection, GridColumnIcon, GridCellKind, isInnerOnlyCell, } from "../data-grid-types.js";
4
+ import { CellSet } from "../cell-set.js";
5
+ import { cellIsSelected, cellIsInRange, getFreezeTrailingHeight, drawLastUpdateUnderlay, } from "./data-grid-lib.js";
6
+ import { mergeAndRealizeTheme } from "../../../common/styles.js";
7
+ import { blend } from "../color-parser.js";
8
+ import { intersectRect } from "../../../common/math.js";
9
+ import { getSkipPoint, getSpanBounds, walkColumns, walkRowsInCol } from "./data-grid-render.walk.js";
10
+ const loadingCell = {
11
+ kind: GridCellKind.Loading,
12
+ allowOverlay: false,
13
+ };
14
+ // preppable items:
15
+ // - font
16
+ // - fillStyle
17
+ // Column draw loop prep cycle
18
+ // - Prep item
19
+ // - Prep sets props
20
+ // - Prep returns list of cared about props
21
+ // - Draw item
22
+ // - Loop may set some items, if present in args list, set undefined
23
+ // - Prep next item, giving previous result
24
+ // - If next item type is different, de-prep
25
+ // - Result per column
26
+ export function drawCells(ctx, effectiveColumns, allColumns, height, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, getCellContent, getGroupDetails, getRowThemeOverride, disabledRows, isFocused, drawFocus, freezeTrailingRows, hasAppendRow, drawRegions, damage, selection, prelightCells, highlightRegions, imageLoader, spriteManager, hoverValues, hoverInfo, drawCellCallback, hyperWrapping, outerTheme, enqueue, renderStateProvider, getCellRenderer, overrideCursor, minimumCellWidth) {
27
+ let toDraw = damage?.size ?? Number.MAX_SAFE_INTEGER;
28
+ const frameTime = performance.now();
29
+ let font = outerTheme.baseFontFull;
30
+ ctx.font = font;
31
+ const deprepArg = { ctx };
32
+ const cellIndex = [0, 0];
33
+ const freezeTrailingRowsHeight = freezeTrailingRows > 0 ? getFreezeTrailingHeight(rows, freezeTrailingRows, getRowHeight) : 0;
34
+ let result;
35
+ let handledSpans = undefined;
36
+ const skipPoint = getSkipPoint(drawRegions);
37
+ walkColumns(effectiveColumns, cellYOffset, translateX, translateY, totalHeaderHeight, (c, drawX, colDrawStartY, clipX, startRow) => {
38
+ const diff = Math.max(0, clipX - drawX);
39
+ const colDrawX = drawX + diff;
40
+ const colDrawY = totalHeaderHeight + 1;
41
+ const colWidth = c.width - diff;
42
+ const colHeight = height - totalHeaderHeight - 1;
43
+ if (drawRegions.length > 0) {
44
+ let found = false;
45
+ for (let i = 0; i < drawRegions.length; i++) {
46
+ const dr = drawRegions[i];
47
+ if (intersectRect(colDrawX, colDrawY, colWidth, colHeight, dr.x, dr.y, dr.width, dr.height)) {
48
+ found = true;
49
+ break;
50
+ }
51
+ }
52
+ if (!found)
53
+ return;
54
+ }
55
+ const reclip = () => {
56
+ ctx.save();
57
+ ctx.beginPath();
58
+ ctx.rect(colDrawX, colDrawY, colWidth, colHeight);
59
+ ctx.clip();
60
+ };
61
+ const colSelected = selection.columns.hasIndex(c.sourceIndex);
62
+ const groupName = Array.isArray(c.group) ? (c.group[0] ?? "") : (c.group ?? "");
63
+ const groupTheme = getGroupDetails(groupName).overrideTheme;
64
+ const colTheme = c.themeOverride === undefined && groupTheme === undefined
65
+ ? outerTheme
66
+ : mergeAndRealizeTheme(outerTheme, groupTheme, c.themeOverride);
67
+ const colFont = colTheme.baseFontFull;
68
+ if (colFont !== font) {
69
+ font = colFont;
70
+ ctx.font = colFont;
71
+ }
72
+ reclip();
73
+ let prepResult = undefined;
74
+ walkRowsInCol(startRow, colDrawStartY, height, rows, getRowHeight, freezeTrailingRows, hasAppendRow, skipPoint, (drawY, row, rh, isSticky, isTrailingRow) => {
75
+ if (row < 0)
76
+ return;
77
+ cellIndex[0] = c.sourceIndex;
78
+ cellIndex[1] = row;
79
+ // if (damage !== undefined && !damage.some(d => d[0] === c.sourceIndex && d[1] === row)) {
80
+ // return;
81
+ // }
82
+ // if (
83
+ // drawRegions.length > 0 &&
84
+ // !drawRegions.some(dr => intersectRect(drawX, drawY, c.width, rh, dr.x, dr.y, dr.width, dr.height))
85
+ // ) {
86
+ // return;
87
+ // }
88
+ // These are dumb versions of the above. I cannot for the life of believe that this matters but this is
89
+ // the tightest part of the draw loop and the allocations above actually has a very measurable impact
90
+ // on performance. For the love of all that is unholy please keep checking this again in the future.
91
+ // As soon as this doesn't have any impact of note go back to the saner looking code. The smoke test
92
+ // here is to scroll to the bottom of a test case first, then scroll back up while profiling and see
93
+ // how many major GC collections you get. These allocate a lot of objects.
94
+ if (damage !== undefined && !damage.has(cellIndex)) {
95
+ return;
96
+ }
97
+ if (drawRegions.length > 0) {
98
+ let found = false;
99
+ for (let i = 0; i < drawRegions.length; i++) {
100
+ const dr = drawRegions[i];
101
+ if (intersectRect(drawX, drawY, c.width, rh, dr.x, dr.y, dr.width, dr.height)) {
102
+ found = true;
103
+ break;
104
+ }
105
+ }
106
+ if (!found)
107
+ return;
108
+ }
109
+ const rowSelected = selection.rows.hasIndex(row);
110
+ const rowDisabled = disabledRows.hasIndex(row);
111
+ const cell = row < rows ? getCellContent(cellIndex) : loadingCell;
112
+ let cellX = drawX;
113
+ let cellWidth = c.width;
114
+ let drawingSpan = false;
115
+ let skipContents = false;
116
+ if (cell.span !== undefined) {
117
+ const [startCol, endCol] = cell.span;
118
+ const spanKey = `${row},${startCol},${endCol},${c.sticky}`; //alloc
119
+ if (handledSpans === undefined)
120
+ handledSpans = new Set();
121
+ if (!handledSpans.has(spanKey)) {
122
+ const areas = getSpanBounds(cell.span, drawX, drawY, c.width, rh, c, allColumns);
123
+ const area = c.sticky ? areas[0] : areas[1];
124
+ if (!c.sticky && areas[0] !== undefined) {
125
+ skipContents = true;
126
+ }
127
+ if (area !== undefined) {
128
+ cellX = area.x;
129
+ cellWidth = area.width;
130
+ handledSpans.add(spanKey);
131
+ ctx.restore();
132
+ prepResult = undefined;
133
+ ctx.save();
134
+ ctx.beginPath();
135
+ const d = Math.max(0, clipX - area.x);
136
+ ctx.rect(area.x + d, drawY, area.width - d, rh);
137
+ if (result === undefined) {
138
+ result = [];
139
+ }
140
+ result.push({
141
+ x: area.x + d,
142
+ y: drawY,
143
+ width: area.width - d,
144
+ height: rh,
145
+ });
146
+ ctx.clip();
147
+ drawingSpan = true;
148
+ }
149
+ }
150
+ else {
151
+ toDraw--;
152
+ return;
153
+ }
154
+ }
155
+ const rowTheme = getRowThemeOverride?.(row);
156
+ const trailingTheme = isTrailingRow && c.trailingRowOptions?.themeOverride !== undefined
157
+ ? c.trailingRowOptions?.themeOverride
158
+ : undefined;
159
+ const theme = cell.themeOverride === undefined && rowTheme === undefined && trailingTheme === undefined
160
+ ? colTheme
161
+ : mergeAndRealizeTheme(colTheme, rowTheme, trailingTheme, cell.themeOverride); //alloc
162
+ ctx.beginPath();
163
+ const isSelected = cellIsSelected(cellIndex, cell, selection);
164
+ let accentCount = cellIsInRange(cellIndex, cell, selection, drawFocus);
165
+ const spanIsHighlighted = cell.span !== undefined &&
166
+ selection.columns.some(index => cell.span !== undefined && index >= cell.span[0] && index <= cell.span[1] //alloc
167
+ );
168
+ if (isSelected && !isFocused && drawFocus) {
169
+ accentCount = 0;
170
+ }
171
+ else if (isSelected && drawFocus) {
172
+ accentCount = Math.max(accentCount, 1);
173
+ }
174
+ if (spanIsHighlighted) {
175
+ accentCount++;
176
+ }
177
+ if (!isSelected) {
178
+ if (rowSelected)
179
+ accentCount++;
180
+ if (colSelected && !isTrailingRow)
181
+ accentCount++;
182
+ }
183
+ const bgCell = cell.kind === GridCellKind.Protected ? theme.bgCellMedium : theme.bgCell;
184
+ let fill;
185
+ if (isSticky || bgCell !== outerTheme.bgCell) {
186
+ fill = blend(bgCell, fill);
187
+ }
188
+ if (accentCount > 0 || rowDisabled) {
189
+ if (rowDisabled) {
190
+ fill = blend(theme.bgHeader, fill);
191
+ }
192
+ for (let i = 0; i < accentCount; i++) {
193
+ fill = blend(theme.accentLight, fill);
194
+ }
195
+ }
196
+ else if (prelightCells !== undefined) {
197
+ for (const pre of prelightCells) {
198
+ if (pre[0] === c.sourceIndex && pre[1] === row) {
199
+ fill = blend(theme.bgSearchResult, fill);
200
+ break;
201
+ }
202
+ }
203
+ }
204
+ if (highlightRegions !== undefined) {
205
+ for (let i = 0; i < highlightRegions.length; i++) {
206
+ const region = highlightRegions[i];
207
+ const r = region.range;
208
+ if (region.style !== "solid-outline" &&
209
+ r.x <= c.sourceIndex &&
210
+ c.sourceIndex < r.x + r.width &&
211
+ r.y <= row &&
212
+ row < r.y + r.height) {
213
+ fill = blend(region.color, fill);
214
+ }
215
+ }
216
+ }
217
+ let didDamageClip = false;
218
+ if (damage !== undefined) {
219
+ // we want to clip each cell individually rather than form a super clip region. The reason for
220
+ // this is passing too many clip regions to the GPU at once can cause a performance hit. This
221
+ // allows us to damage a large number of cells at once without issue.
222
+ const top = drawY + 1;
223
+ const bottom = isSticky
224
+ ? top + rh - 1
225
+ : Math.min(top + rh - 1, height - freezeTrailingRowsHeight);
226
+ const h = bottom - top;
227
+ // however, not clipping at all is even better. We want to clip if we are the left most col
228
+ // or overlapping the bottom clip area.
229
+ if (h !== rh - 1 || cellX + 1 <= clipX) {
230
+ didDamageClip = true;
231
+ ctx.save();
232
+ ctx.beginPath();
233
+ ctx.rect(cellX + 1, top, cellWidth - 1, h);
234
+ ctx.clip();
235
+ }
236
+ // we also need to make sure to wipe the contents. Since the fill can do that lets repurpose
237
+ // that call to avoid an extra draw call.
238
+ fill = fill === undefined ? theme.bgCell : blend(fill, theme.bgCell);
239
+ }
240
+ const isLastColumn = c.sourceIndex === allColumns.length - 1;
241
+ const isLastRow = row === rows - 1;
242
+ if (fill !== undefined) {
243
+ ctx.fillStyle = fill;
244
+ if (prepResult !== undefined) {
245
+ prepResult.fillStyle = fill;
246
+ }
247
+ if (damage !== undefined) {
248
+ // this accounts for the fill handle outline being drawn inset on these cells. We do this
249
+ // because technically the bottom right corner of the outline are on other cells.
250
+ ctx.fillRect(cellX + 1, drawY + 1, cellWidth - (isLastColumn ? 2 : 1), rh - (isLastRow ? 2 : 1));
251
+ }
252
+ else {
253
+ ctx.fillRect(cellX, drawY, cellWidth, rh);
254
+ }
255
+ }
256
+ if (cell.style === "faded") {
257
+ ctx.globalAlpha = 0.6;
258
+ }
259
+ let hoverValue;
260
+ for (let i = 0; i < hoverValues.length; i++) {
261
+ const hv = hoverValues[i];
262
+ if (hv.item[0] === c.sourceIndex && hv.item[1] === row) {
263
+ hoverValue = hv;
264
+ break;
265
+ }
266
+ }
267
+ if (cellWidth > minimumCellWidth && !skipContents) {
268
+ const cellFont = theme.baseFontFull;
269
+ if (cellFont !== font) {
270
+ ctx.font = cellFont;
271
+ font = cellFont;
272
+ }
273
+ prepResult = drawCell(ctx, cell, c.sourceIndex, row, isLastColumn, isLastRow, cellX, drawY, cellWidth, rh, accentCount > 0, theme, fill ?? theme.bgCell, imageLoader, spriteManager, hoverValue?.hoverAmount ?? 0, hoverInfo, hyperWrapping, frameTime, drawCellCallback, prepResult, enqueue, renderStateProvider, getCellRenderer, overrideCursor);
274
+ }
275
+ if (didDamageClip) {
276
+ ctx.restore();
277
+ }
278
+ if (cell.style === "faded") {
279
+ ctx.globalAlpha = 1;
280
+ }
281
+ toDraw--;
282
+ if (drawingSpan) {
283
+ ctx.restore();
284
+ prepResult?.deprep?.(deprepArg);
285
+ prepResult = undefined;
286
+ reclip();
287
+ font = colFont;
288
+ ctx.font = colFont;
289
+ }
290
+ return toDraw <= 0;
291
+ });
292
+ ctx.restore();
293
+ return toDraw <= 0;
294
+ });
295
+ return result;
296
+ }
297
+ const allocatedItem = [0, 0];
298
+ const reusableRect = { x: 0, y: 0, width: 0, height: 0 };
299
+ const drawState = [undefined, () => undefined];
300
+ let animationFrameRequested = false;
301
+ function animRequest() {
302
+ animationFrameRequested = true;
303
+ }
304
+ export function drawCell(ctx, cell, col, row, isLastCol, isLastRow, x, y, w, h, highlighted, theme, finalCellFillColor, imageLoader, spriteManager, hoverAmount, hoverInfo, hyperWrapping, frameTime, drawCellCallback, lastPrep, enqueue, renderStateProvider, getCellRenderer, overrideCursor) {
305
+ let hoverX;
306
+ let hoverY;
307
+ if (hoverInfo !== undefined && hoverInfo[0][0] === col && hoverInfo[0][1] === row) {
308
+ hoverX = hoverInfo[1][0];
309
+ hoverY = hoverInfo[1][1];
310
+ }
311
+ let result = undefined;
312
+ allocatedItem[0] = col;
313
+ allocatedItem[1] = row;
314
+ reusableRect.x = x;
315
+ reusableRect.y = y;
316
+ reusableRect.width = w;
317
+ reusableRect.height = h;
318
+ drawState[0] = renderStateProvider.getValue(allocatedItem);
319
+ drawState[1] = (val) => renderStateProvider.setValue(allocatedItem, val); //alloc
320
+ animationFrameRequested = false;
321
+ const args = {
322
+ //alloc
323
+ ctx,
324
+ theme,
325
+ col,
326
+ row,
327
+ cell,
328
+ rect: reusableRect,
329
+ highlighted,
330
+ cellFillColor: finalCellFillColor,
331
+ hoverAmount,
332
+ frameTime,
333
+ hoverX,
334
+ drawState,
335
+ hoverY,
336
+ imageLoader,
337
+ spriteManager,
338
+ hyperWrapping,
339
+ overrideCursor: hoverX !== undefined ? overrideCursor : undefined,
340
+ requestAnimationFrame: animRequest,
341
+ };
342
+ const needsAnim = drawLastUpdateUnderlay(args, cell.lastUpdated, frameTime, lastPrep, isLastCol, isLastRow);
343
+ const r = getCellRenderer(cell);
344
+ if (r !== undefined) {
345
+ if (lastPrep?.renderer !== r) {
346
+ lastPrep?.deprep?.(args);
347
+ lastPrep = undefined;
348
+ }
349
+ const partialPrepResult = r.drawPrep?.(args, lastPrep);
350
+ if (drawCellCallback !== undefined && !isInnerOnlyCell(args.cell)) {
351
+ drawCellCallback(args, () => r.draw(args, cell));
352
+ }
353
+ else {
354
+ r.draw(args, cell);
355
+ }
356
+ result =
357
+ partialPrepResult === undefined
358
+ ? undefined
359
+ : {
360
+ deprep: partialPrepResult?.deprep,
361
+ fillStyle: partialPrepResult?.fillStyle,
362
+ font: partialPrepResult?.font,
363
+ renderer: r,
364
+ };
365
+ }
366
+ if (needsAnim || animationFrameRequested)
367
+ enqueue?.(allocatedItem);
368
+ return result;
369
+ }
370
+ //# sourceMappingURL=data-grid-render.cells.js.map