@infinite-table/infinite-react 0.4.12 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/API.md +0 -0
  3. package/build/buildPackageJson.js +43 -0
  4. package/build/scripts/test.js +37 -0
  5. package/bundler.config.js +25 -0
  6. package/globals.d.ts +7 -0
  7. package/package.json +95 -3
  8. package/rollup.config.js +15 -0
  9. package/run-build-deepmap.js +47 -0
  10. package/run-build.js +45 -0
  11. package/run-dts-concat.js +21 -0
  12. package/src/components/CSSVariableWatch.tsx +82 -0
  13. package/src/components/DataSource/BooleanCollectionState.ts +214 -0
  14. package/src/components/DataSource/BooleanDeepCollectionState.ts +208 -0
  15. package/src/components/DataSource/DataSourceContext.ts +20 -0
  16. package/src/components/DataSource/GroupRowsState.ts +74 -0
  17. package/src/components/DataSource/Indexer.ts +27 -0
  18. package/src/components/DataSource/RowSelectionState.ts +763 -0
  19. package/src/components/DataSource/defaultFilterTypes.ts +64 -0
  20. package/src/components/DataSource/index.tsx +108 -0
  21. package/src/components/DataSource/privateHooks/getChangeDetect.ts +7 -0
  22. package/src/components/DataSource/privateHooks/useLoadData.ts +783 -0
  23. package/src/components/DataSource/publicHooks/useDataSource.ts +19 -0
  24. package/src/components/DataSource/publicHooks/useDataSourceActions.ts +14 -0
  25. package/src/components/DataSource/state/getInitialState.ts +494 -0
  26. package/src/components/DataSource/state/normalizeSortInfo.ts +35 -0
  27. package/src/components/DataSource/state/reducer.ts +466 -0
  28. package/src/components/DataSource/state/rowInfoStatus.ts +27 -0
  29. package/src/components/DataSource/types.ts +548 -0
  30. package/src/components/HeadlessTable/HeadlessTableWithPinnedContainers.tsx +142 -0
  31. package/src/components/HeadlessTable/MappedCells.ts +251 -0
  32. package/src/components/HeadlessTable/RawTable.tsx +98 -0
  33. package/src/components/HeadlessTable/ReactHeadlessTableRenderer.tsx +1516 -0
  34. package/src/components/HeadlessTable/index.tsx +234 -0
  35. package/src/components/InfiniteTable/InfiniteCls.css.ts +164 -0
  36. package/src/components/InfiniteTable/InfiniteTableContext.ts +16 -0
  37. package/src/components/InfiniteTable/api/getImperativeApi.ts +391 -0
  38. package/src/components/InfiniteTable/api/getSelectionApi.ts +364 -0
  39. package/src/components/InfiniteTable/api/type.ts +11 -0
  40. package/src/components/InfiniteTable/components/ActiveCellIndicator.css.ts +51 -0
  41. package/src/components/InfiniteTable/components/ActiveCellIndicator.tsx +116 -0
  42. package/src/components/InfiniteTable/components/ActiveRowIndicator.css.ts +56 -0
  43. package/src/components/InfiniteTable/components/ActiveRowIndicator.tsx +94 -0
  44. package/src/components/InfiniteTable/components/CheckBox.css.ts +13 -0
  45. package/src/components/InfiniteTable/components/CheckBox.tsx +96 -0
  46. package/src/components/InfiniteTable/components/FilterEditors.tsx +52 -0
  47. package/src/components/InfiniteTable/components/InfiniteTableBody/InfiniteTableBody.tsx +27 -0
  48. package/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx +1 -0
  49. package/src/components/InfiniteTable/components/InfiniteTableFooter/InfiniteTableFooter.tsx +31 -0
  50. package/src/components/InfiniteTable/components/InfiniteTableFooter/index.tsx +1 -0
  51. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableColumnHeaderFilter.tsx +102 -0
  52. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx +163 -0
  53. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx +574 -0
  54. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx +79 -0
  55. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderTypes.tsx +25 -0
  56. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderWrapper.tsx +185 -0
  57. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/GroupResizeHandle.tsx +159 -0
  58. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/ResizeHandle.css.ts +124 -0
  59. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/columnResizer.ts +166 -0
  60. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/index.tsx +146 -0
  61. package/src/components/InfiniteTable/components/InfiniteTableHeader/buildColumnAndGroupTree.ts +240 -0
  62. package/src/components/InfiniteTable/components/InfiniteTableHeader/header.css.ts +358 -0
  63. package/src/components/InfiniteTable/components/InfiniteTableHeader/index.tsx +1 -0
  64. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnGroupResizeHandle.tsx +114 -0
  65. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnResizeHandle.tsx +146 -0
  66. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/footer.css.ts +7 -0
  67. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx +110 -0
  68. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCell.tsx +120 -0
  69. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCellTypes.ts +74 -0
  70. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx +457 -0
  71. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRow.tsx +107 -0
  72. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowClassName.ts +6 -0
  73. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowTypes.ts +32 -0
  74. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowUnvirtualized.tsx +75 -0
  75. package/src/components/InfiniteTable/components/InfiniteTableRow/columnRendering.tsx +263 -0
  76. package/src/components/InfiniteTable/components/InfiniteTableRow/index.tsx +1 -0
  77. package/src/components/InfiniteTable/components/InfiniteTableRow/row.css.ts +74 -0
  78. package/src/components/InfiniteTable/components/InfiniteTableRow/useRowDOMProps.ts +199 -0
  79. package/src/components/InfiniteTable/components/LoadMask.css.ts +34 -0
  80. package/src/components/InfiniteTable/components/LoadMask.tsx +27 -0
  81. package/src/components/InfiniteTable/components/ScrollbarPlaceholder.tsx +56 -0
  82. package/src/components/InfiniteTable/components/cell.css.ts +192 -0
  83. package/src/components/InfiniteTable/components/icons/ArrowDown.tsx +14 -0
  84. package/src/components/InfiniteTable/components/icons/ArrowUp.tsx +14 -0
  85. package/src/components/InfiniteTable/components/icons/ExpanderIcon.css.ts +31 -0
  86. package/src/components/InfiniteTable/components/icons/ExpanderIcon.tsx +63 -0
  87. package/src/components/InfiniteTable/components/icons/Icon.tsx +18 -0
  88. package/src/components/InfiniteTable/components/icons/InfiniteTableIconClassName.ts +1 -0
  89. package/src/components/InfiniteTable/components/icons/LoadingIcon.css.ts +8 -0
  90. package/src/components/InfiniteTable/components/icons/LoadingIcon.tsx +45 -0
  91. package/src/components/InfiniteTable/components/icons/MenuIcon.tsx +50 -0
  92. package/src/components/InfiniteTable/components/icons/SortIcon.tsx +113 -0
  93. package/src/components/InfiniteTable/eventHandlers/eventHandlerTypes.ts +57 -0
  94. package/src/components/InfiniteTable/eventHandlers/index.ts +95 -0
  95. package/src/components/InfiniteTable/eventHandlers/keyboardNavigation.ts +232 -0
  96. package/src/components/InfiniteTable/eventHandlers/keyboardSelection.ts +110 -0
  97. package/src/components/InfiniteTable/eventHandlers/onCellClick.ts +94 -0
  98. package/src/components/InfiniteTable/eventHandlers/onKeyDown.ts +25 -0
  99. package/src/components/InfiniteTable/hooks/adjustColumnOrderForAllColumns.ts +70 -0
  100. package/src/components/InfiniteTable/hooks/reorderColumnsOnDrag.ts +476 -0
  101. package/src/components/InfiniteTable/hooks/useAutoSizeColumns.ts +206 -0
  102. package/src/components/InfiniteTable/hooks/useCellClassName.ts +80 -0
  103. package/src/components/InfiniteTable/hooks/useCellRendering.tsx +217 -0
  104. package/src/components/InfiniteTable/hooks/useColumnGroups.ts +71 -0
  105. package/src/components/InfiniteTable/hooks/useColumnMenu.ts +72 -0
  106. package/src/components/InfiniteTable/hooks/useColumnPointerEvents.ts +258 -0
  107. package/src/components/InfiniteTable/hooks/useColumnRowspan.ts +43 -0
  108. package/src/components/InfiniteTable/hooks/useColumnSizeFn.ts +24 -0
  109. package/src/components/InfiniteTable/hooks/useColumnsWhen.ts +582 -0
  110. package/src/components/InfiniteTable/hooks/useComputed.ts +186 -0
  111. package/src/components/InfiniteTable/hooks/useComputedVisibleColumns.ts +219 -0
  112. package/src/components/InfiniteTable/hooks/useDOMProps.ts +306 -0
  113. package/src/components/InfiniteTable/hooks/useEffectWithRaf.ts +47 -0
  114. package/src/components/InfiniteTable/hooks/useInfiniteTable.ts +10 -0
  115. package/src/components/InfiniteTable/hooks/useInfiniteTableState.ts +11 -0
  116. package/src/components/InfiniteTable/hooks/useInternalProps.ts +8 -0
  117. package/src/components/InfiniteTable/hooks/useLicense/LicenseDetails.ts +13 -0
  118. package/src/components/InfiniteTable/hooks/useLicense/crc32.ts +56 -0
  119. package/src/components/InfiniteTable/hooks/useLicense/decode.ts +147 -0
  120. package/src/components/InfiniteTable/hooks/useLicense/useLicense.ts +39 -0
  121. package/src/components/InfiniteTable/hooks/useRerenderOnKeyChange.ts +21 -0
  122. package/src/components/InfiniteTable/hooks/useRowHover.ts +18 -0
  123. package/src/components/InfiniteTable/hooks/useScrollToActiveCell.ts +48 -0
  124. package/src/components/InfiniteTable/hooks/useScrollToActiveRow.ts +44 -0
  125. package/src/components/InfiniteTable/hooks/useScrollbars.ts +51 -0
  126. package/src/components/InfiniteTable/hooks/useToggleGroupRow.ts +56 -0
  127. package/src/components/InfiniteTable/hooks/useUnpinnedRendering.tsx +165 -0
  128. package/src/components/InfiniteTable/hooks/useYourBrain.ts +55 -0
  129. package/src/components/InfiniteTable/index.tsx +352 -0
  130. package/src/components/InfiniteTable/internalProps.ts +4 -0
  131. package/src/components/InfiniteTable/state/computeColumnGroupsDepths.ts +29 -0
  132. package/src/components/InfiniteTable/state/getColumnVisibilityForHideEmptyGroupColumns.ts +127 -0
  133. package/src/components/InfiniteTable/state/getInitialState.ts +375 -0
  134. package/src/components/InfiniteTable/theme.css.ts +556 -0
  135. package/src/components/InfiniteTable/types/InfiniteTableAction.ts +6 -0
  136. package/src/components/InfiniteTable/types/InfiniteTableActionType.ts +12 -0
  137. package/src/components/InfiniteTable/types/InfiniteTableColumn.ts +478 -0
  138. package/src/components/InfiniteTable/types/InfiniteTableComputedValues.ts +43 -0
  139. package/src/components/InfiniteTable/types/InfiniteTableContextValue.ts +12 -0
  140. package/src/components/InfiniteTable/types/InfiniteTableInternalProps.ts +3 -0
  141. package/src/components/InfiniteTable/types/InfiniteTableProps.ts +511 -0
  142. package/src/components/InfiniteTable/types/InfiniteTableState.ts +195 -0
  143. package/src/components/InfiniteTable/types/Utility.ts +35 -0
  144. package/src/components/InfiniteTable/types/index.ts +96 -0
  145. package/src/components/InfiniteTable/utilities.css.ts +179 -0
  146. package/src/components/InfiniteTable/utils/MultiRowSelector.ts +111 -0
  147. package/src/components/InfiniteTable/utils/RenderHookComponentForInfinite.tsx +52 -0
  148. package/src/components/InfiniteTable/utils/adjustColumnOrderForPinning.ts +33 -0
  149. package/src/components/InfiniteTable/utils/assignFiltered.ts +29 -0
  150. package/src/components/InfiniteTable/utils/defaultGetColumContextMenuItems.tsx +108 -0
  151. package/src/components/InfiniteTable/utils/getColumnComputedType.ts +33 -0
  152. package/src/components/InfiniteTable/utils/getColumnForGroupBy.tsx +313 -0
  153. package/src/components/InfiniteTable/utils/getComputedVisibleColumns.ts +773 -0
  154. package/src/components/InfiniteTable/utils/getContextMenuForColumn.tsx +72 -0
  155. package/src/components/InfiniteTable/utils/infiniteDOMUtils.ts +189 -0
  156. package/src/components/InfiniteTable/utils/mapToObject.ts +20 -0
  157. package/src/components/InfiniteTable/utils/moveXatY.ts +25 -0
  158. package/src/components/InfiniteTable/utils/objectValuesExcept.ts +9 -0
  159. package/src/components/InfiniteTable/utils/progressiveSpeedScroller.ts +158 -0
  160. package/src/components/InfiniteTable/utils/rafFn.ts +13 -0
  161. package/src/components/InfiniteTable/utils/toCSSVarName.ts +1 -0
  162. package/src/components/InfiniteTable/utils/toMap.ts +24 -0
  163. package/src/components/Menu/Menu.tsx +750 -0
  164. package/src/components/Menu/MenuCls.css.ts +139 -0
  165. package/src/components/Menu/MenuContext.ts +10 -0
  166. package/src/components/Menu/MenuContextValue.ts +15 -0
  167. package/src/components/Menu/MenuProps.ts +98 -0
  168. package/src/components/Menu/MenuState.ts +56 -0
  169. package/src/components/Menu/MenuTriangleContext.ts +352 -0
  170. package/src/components/Menu/childrenToRuntimeItems.tsx +103 -0
  171. package/src/components/Menu/getMenuState.tsx +119 -0
  172. package/src/components/Menu/index.tsx +88 -0
  173. package/src/components/Menu/propToIdentifyMenu.ts +1 -0
  174. package/src/components/RawList/AvoidReactDiff.tsx +48 -0
  175. package/src/components/RawList/MappedItems.ts +143 -0
  176. package/src/components/RawList/ReactVirtualRenderer.tsx +307 -0
  177. package/src/components/RawList/index.tsx +42 -0
  178. package/src/components/RawList/types.ts +23 -0
  179. package/src/components/RawList/useVirtualRenderer.ts +36 -0
  180. package/src/components/RenderHookComponent.tsx +10 -0
  181. package/src/components/ResizeObserver/index.tsx +170 -0
  182. package/src/components/VirtualBrain/MatrixBrain.ts +1621 -0
  183. package/src/components/VirtualBrain/ScrollListener.ts +39 -0
  184. package/src/components/VirtualBrain/index.ts +664 -0
  185. package/src/components/VirtualList/ColumnListWithExternalScrolling.tsx +78 -0
  186. package/src/components/VirtualList/InfiniteListRootClassName.ts +1 -0
  187. package/src/components/VirtualList/RowListWithExternalScrolling.tsx +120 -0
  188. package/src/components/VirtualList/SpacePlaceholder.tsx +32 -0
  189. package/src/components/VirtualList/VirtualList.css.ts +29 -0
  190. package/src/components/VirtualList/VirtualList.tsx +141 -0
  191. package/src/components/VirtualList/VirtualRowList.tsx +34 -0
  192. package/src/components/VirtualList/types.ts +56 -0
  193. package/src/components/VirtualList/useCorrectHeightForRowElements.ts +14 -0
  194. package/src/components/VirtualScrollContainer/VirtualScrollContainer.css.ts +51 -0
  195. package/src/components/VirtualScrollContainer/getScrollableClassName.ts +30 -0
  196. package/src/components/VirtualScrollContainer/index.tsx +63 -0
  197. package/src/components/flexbox/index.ts +562 -0
  198. package/src/components/hooks/useComponentState/index.tsx +562 -0
  199. package/src/components/hooks/useComponentState/types.ts +32 -0
  200. package/src/components/hooks/useEffectOnceWithProperUnmount.ts +33 -0
  201. package/src/components/hooks/useEffectWithChanges.ts +56 -0
  202. package/src/components/hooks/useImmutableRef.ts +7 -0
  203. package/src/components/hooks/useInterceptedMap.ts +71 -0
  204. package/src/components/hooks/useLatest.tsx +8 -0
  205. package/src/components/hooks/useLazyLatest.ts +23 -0
  206. package/src/components/hooks/useMemoShallowObjectMerge.ts +16 -0
  207. package/src/components/hooks/useMounted.ts +18 -0
  208. package/src/components/hooks/useOnMount.ts +21 -0
  209. package/src/components/hooks/useOnScroll.ts +34 -0
  210. package/src/components/hooks/useOnce.ts +10 -0
  211. package/src/components/hooks/useOverlay/index.tsx +418 -0
  212. package/src/components/hooks/usePrevious.ts +8 -0
  213. package/src/components/hooks/usePropertyOld.ts +168 -0
  214. package/src/components/hooks/useRerender.ts +12 -0
  215. package/src/components/hooks/xuseProperty.ts +165 -0
  216. package/src/components/types/CellPosition.ts +4 -0
  217. package/src/components/types/NonUndefined.ts +1 -0
  218. package/src/components/types/RemoveObject.ts +22 -0
  219. package/src/components/types/Renderable.ts +3 -0
  220. package/src/components/types/ScrollPosition.ts +7 -0
  221. package/src/components/types/Setter.ts +2 -0
  222. package/src/components/types/Size.ts +6 -0
  223. package/src/components/types/SubscriptionCallback.ts +10 -0
  224. package/src/components/types/VoidFn.ts +1 -0
  225. package/src/components/utils/buildSubscriptionCallback.tsx +60 -0
  226. package/src/components/utils/clamp.ts +3 -0
  227. package/src/components/utils/debounce.ts +16 -0
  228. package/src/components/utils/decamelize.ts +11 -0
  229. package/src/components/utils/discardCallsWithEqualArg.ts +42 -0
  230. package/src/components/utils/getRenderIndexes.ts +33 -0
  231. package/src/components/utils/getScrollbarWidth.ts +31 -0
  232. package/src/components/utils/getVirtualRenderCount.ts +21 -0
  233. package/src/components/utils/isControlled.ts +12 -0
  234. package/src/components/utils/isControlledValue.ts +5 -0
  235. package/src/index.tsx +34 -0
  236. package/src/test.tsx +18 -0
  237. package/src/utils/DeepMap/index.ts +588 -0
  238. package/src/utils/DeepMap/once.ts +16 -0
  239. package/src/utils/DeepMap/sortAscending.ts +1 -0
  240. package/src/utils/DeepMap/tsconfig.deepmap.json +17 -0
  241. package/src/utils/DeepMap/xpackage.json +26 -0
  242. package/src/utils/debug.ts +40 -0
  243. package/src/utils/deepClone.ts +38 -0
  244. package/src/utils/getGlobal.ts +3 -0
  245. package/src/utils/groupAndPivot/defaultToKey.ts +3 -0
  246. package/src/utils/groupAndPivot/getGroupKeysForDataItem.ts +19 -0
  247. package/src/utils/groupAndPivot/getPivotColumnsAndColumnGroups.ts +361 -0
  248. package/src/utils/groupAndPivot/index.ts +1229 -0
  249. package/src/utils/groupAndPivot/types.ts +10 -0
  250. package/src/utils/join.ts +4 -0
  251. package/src/utils/mathIntersection.ts +21 -0
  252. package/src/utils/minified.d.ts +2 -0
  253. package/src/utils/minified.js +6 -0
  254. package/src/utils/multisort/index.ts +151 -0
  255. package/src/utils/multisort/sortTypes.ts +25 -0
  256. package/src/utils/notes-status.md +92 -0
  257. package/src/utils/pageGeometry/ConvexPoly.ts +34 -0
  258. package/src/utils/pageGeometry/Point.ts +51 -0
  259. package/src/utils/pageGeometry/PolyWithPoints.ts +52 -0
  260. package/src/utils/pageGeometry/Rectangle.ts +98 -0
  261. package/src/utils/pageGeometry/Triangle.ts +16 -0
  262. package/src/utils/pageGeometry/alignment/index.ts +221 -0
  263. package/src/utils/pageGeometry/polyContainsPoint.ts +182 -0
  264. package/src/utils/pageGeometry/types.ts +3 -0
  265. package/src/utils/proxyFnCall.ts +46 -0
  266. package/src/utils/raf.ts +13 -0
  267. package/src/utils/selectParent.ts +18 -0
  268. package/src/utils/shallowEqualObjects.ts +49 -0
  269. package/src/utils/stripVar.ts +3 -0
  270. package/src/utils/toUpperFirst.ts +5 -0
  271. package/todo.md +2 -0
  272. package/tsconfig.build.json +8 -0
  273. package/tsconfig.dev.json +7 -0
  274. package/tsconfig.json +30 -0
  275. package/tsconfig.typebundler.json +13 -0
  276. package/typedoc.json +4 -0
  277. package/README.md +0 -104
  278. package/index.css +0 -857
  279. package/index.d.ts +0 -2111
  280. package/index.esm.css +0 -857
  281. package/index.esm.js +0 -13689
  282. package/index.js +0 -13560
@@ -0,0 +1,3 @@
1
+ {
2
+ "typescript.tsdk": "node_modules/typescript/lib"
3
+ }
package/API.md ADDED
File without changes
@@ -0,0 +1,43 @@
1
+ const fs = require('fs');
2
+ const resolve = require('path').resolve;
3
+ const sourcePackagePath = resolve(__dirname, '../package.json');
4
+
5
+ const packageJSON = require(sourcePackagePath);
6
+
7
+ const toDelete = [
8
+ 'devDependencies',
9
+ 'husky',
10
+ 'prettier',
11
+ 'files',
12
+ 'lint-staged',
13
+ 'scripts',
14
+ 'private',
15
+ ];
16
+ toDelete.forEach((key) => delete packageJSON[key]);
17
+
18
+ ['main', 'module', 'typings'].forEach((key) => {
19
+ let value = packageJSON[key];
20
+
21
+ value = value.split('/');
22
+ if (value[0] === 'dist') {
23
+ value = value.splice(1).join('/');
24
+ }
25
+
26
+ packageJSON[key] = value.join('/');
27
+ });
28
+
29
+ packageJSON.publishedAt = Date.now();
30
+ const content = JSON.stringify(packageJSON, null, 2);
31
+
32
+ const path = resolve(__dirname, '../dist', 'package.json');
33
+ fs.writeFile(path, content, 'utf8', (err) => {
34
+ if (err) {
35
+ console.error(err);
36
+ throw err;
37
+ } else {
38
+ console.log(
39
+ 'DONE building package.json with version ',
40
+ packageJSON.version,
41
+ );
42
+ }
43
+ });
@@ -0,0 +1,37 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const carsales = require('../../examples/src/datasets/carsales.json');
4
+
5
+ function getRandomNumberBetween(min, max) {
6
+ return Math.floor(Math.random() * (max - min + 1) + min);
7
+ }
8
+
9
+ const color = [
10
+ 'white',
11
+ 'white',
12
+ 'white',
13
+ 'black',
14
+ 'yellow',
15
+ 'white',
16
+ 'black',
17
+ 'blue',
18
+ 'blue',
19
+ 'blue',
20
+ 'green',
21
+ 'red',
22
+ 'red',
23
+ 'magenta',
24
+ 'silver',
25
+ 'silver',
26
+ ];
27
+
28
+ carsales.forEach((sale, index) => {
29
+ // sale.id = index;
30
+ sale.color = color[getRandomNumberBetween(0, color.length - 1)];
31
+ });
32
+
33
+ fs.writeFileSync(
34
+ path.resolve(__dirname, '../../examples/src/datasets/carsales.json'),
35
+ JSON.stringify(carsales, null, 2),
36
+ 'utf8',
37
+ );
@@ -0,0 +1,25 @@
1
+ //@ts-check
2
+ module.exports = {
3
+ compilationOptions: {
4
+ followSymlinks: true,
5
+ preferredConfigPath: './tsconfig.typebundler.json',
6
+ },
7
+
8
+ entries: [
9
+ {
10
+ filePath: 'dist/index.d.ts',
11
+ outFile: 'dist/bundle.d.ts',
12
+
13
+ failOnClass: false,
14
+
15
+ libraries: {
16
+ allowedTypesLibraries: [],
17
+ importedLibraries: ['node', 'typescript'],
18
+ inlinedLibraries: [],
19
+ },
20
+ output: {
21
+ noBanner: true,
22
+ },
23
+ },
24
+ ],
25
+ };
package/globals.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export {};
2
+
3
+ declare global {
4
+ var __DEV__: boolean;
5
+ var __VERSION__: string;
6
+ var __VERSION_TIMESTAMP__: number;
7
+ }
package/package.json CHANGED
@@ -10,18 +10,110 @@
10
10
  "react-datagrid",
11
11
  "react-infinite"
12
12
  ],
13
- "version": "0.4.12",
13
+ "version": "0.5.0",
14
14
  "main": "index.js",
15
15
  "module": "index.esm.js",
16
16
  "typings": "index.d.ts",
17
+ "scripts": {
18
+ "build": "rimraf dist && npm run tsc && npm run concat-dts && node ./build/buildPackageJson.js && npm run esbuild && npm run update-md && cp LICENSE.md ./dist && cp ../README.md ./dist",
19
+ "watch": "npm run esbuild-esm && concurrently \"npm run tscw\" \"npm run esbuild-esm-watch\" \"npm run concat-dts-watch\"",
20
+ "rollup-types": "rollup -c rollup.config.js",
21
+ "update-md": "npm run --prefix .. doctoc",
22
+ "esbuild": "npm run esbuild-esm && npm run esbuild-cjs",
23
+ "esbuild-deepmap": "npm run esbuild-deepmap-esm && npm run esbuild-deepmap-cjs",
24
+ "esbuild-deepmap-esm": "node run-build-deepmap.js esm",
25
+ "esbuild-esm": "node run-build.js esm",
26
+ "esbuild-esm-watch": "node run-build.js esm --watch",
27
+ "esbuild-cjs": "node run-build.js cjs",
28
+ "esbuild-deepmap-cjs": "node run-build-deepmap.js cjs",
29
+ "esbuild-cjs-watch": "node run-build.js cjs --watch",
30
+ "test": "npm run --prefix=examples test ",
31
+ "//-": " only build declaration files",
32
+ "tsc": "tsc --project tsconfig.build.json",
33
+ "concat-dts": "tsup src/index.tsx --dts-only",
34
+ "concat-dts-watch": "tsup src/index.tsx --dts-only --watch",
35
+ "xxx - no longer used - bundle-types": "dts-bundle-generator --config bundler.config.js",
36
+ "tscw": "tsc --watch --project tsconfig.dev.json --outDir dist",
37
+ "xxx - no longer used - concat-dts": "node run-dts-concat.js",
38
+ "typedoc": "typedoc",
39
+ "lint": "tsdx lint src",
40
+ "format": "prettier --write 'src/**/*.{js,jsx,ts,tsx,json,scss,css,md}'",
41
+ "/": "//",
42
+ "/--- should not run locally ----": "//",
43
+ "/--- as this is run via github actions CI ----": "//",
44
+ "registry-publish": "npm publish ./dist --access public",
45
+ "registry-publish-canary": "npm publish ./dist --access public --tag canary",
46
+ "//": "// only used in the release.yml workflow",
47
+ "release:canary-nobump": "npm run registry-publish-canary",
48
+ "release:nobump": "npm run registry-publish",
49
+ "///": "//",
50
+ "bump:canary": "npm version prerelease --preid=canary",
51
+ "bump:major:canary": "npm version premajor --preid=canary",
52
+ "bump:minor:canary": "npm version preminor --preid=canary",
53
+ "bump:patch:canary": "npm version prepatch --preid=canary",
54
+ "////": "//",
55
+ "bump:patch": "npm version patch",
56
+ "bump:minor": "npm version minor",
57
+ "bump:major": "npm version major"
58
+ },
17
59
  "peerDependencies": {
18
60
  "react": ">=16"
19
61
  },
62
+ "husky": {
63
+ "hooks": {
64
+ "pre-commit": "lint-staged"
65
+ }
66
+ },
67
+ "lint-staged": {
68
+ "src/**/*.(js|jsx|ts|tsx)": [
69
+ "echo ok",
70
+ "git add"
71
+ ],
72
+ "src/**/*.(js|jsx|ts|tsx|json|scss|css|md)": [
73
+ "prettier --write",
74
+ "git add"
75
+ ]
76
+ },
77
+ "devDependencies": {
78
+ "@babel/runtime-corejs2": "^7.6.3",
79
+ "@types/debug": "^4.1.7",
80
+ "@types/jest": "^24.0.19",
81
+ "@types/node": "^18.8.0",
82
+ "@types/react": "^18.0.21",
83
+ "@types/react-dom": "^18.0.6",
84
+ "@vanilla-extract/css": "^1.9.1",
85
+ "@vanilla-extract/esbuild-plugin": "^2.2.0",
86
+ "@vanilla-extract/recipes": "^0.2.5",
87
+ "@vanilla-extract/sprinkles": "^1.5.0",
88
+ "autoprefixer": "^10.4.0",
89
+ "camelcase": "^6.0.0",
90
+ "concurrently": "^6.2.0",
91
+ "csstype": "^2.6.10",
92
+ "dts-bundle-generator": "^5.9.0",
93
+ "dts-generator": "^3.0.0",
94
+ "esbuild": "^0.12.9",
95
+ "husky": "^4.2.3",
96
+ "lint-staged": "^10.0.8",
97
+ "postcss": "^8.4.17",
98
+ "prettier": "^2.5.0",
99
+ "prettier-eslint": "^13.0.0",
100
+ "react": "^18.2.0",
101
+ "react-dom": "^18.2.0",
102
+ "rollup": "^2.55.1",
103
+ "rollup-plugin-dts": "^3.0.2",
104
+ "ts-node": "^8.8.2",
105
+ "tsc-prog": "^2.2.1",
106
+ "tsdx": "^0.14.1",
107
+ "tslib": "^2.1.0",
108
+ "tsup": "^5.11.13",
109
+ "typedoc": "^0.23.16",
110
+ "typescript": "4.6.2"
111
+ },
20
112
  "dependencies": {
21
113
  "binary-search": "^1.3.6",
22
114
  "debug": "^4.3.1"
23
115
  },
24
116
  "license": "Commercial & Open Source",
25
117
  "//": "will be updated at build time",
26
- "publishedAt": 1662371717630
27
- }
118
+ "publishedAt": 1624970570587
119
+ }
@@ -0,0 +1,15 @@
1
+ import dts from 'rollup-plugin-dts';
2
+ const config = [
3
+ {
4
+ input: './dist/index.d.ts',
5
+ external: () => false,
6
+ output: [{ file: 'dist/index.d.ts', format: 'es' }],
7
+ plugins: [
8
+ dts({
9
+ respectExternal: false,
10
+ }),
11
+ ],
12
+ },
13
+ ];
14
+
15
+ export default config;
@@ -0,0 +1,47 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const packageJSON = require('./src/utils/DeepMap/package.json');
5
+ const format = process.argv[2];
6
+ const watch = process.argv[3] === '--watch';
7
+
8
+ if (!format || !(format in { esm: true, cjs: true })) {
9
+ throw 'Invalid format supplied';
10
+ }
11
+
12
+ require('esbuild')
13
+ .build({
14
+ entryPoints: [path.resolve(__dirname, 'src/utils/DeepMap/index.ts')],
15
+ bundle: true,
16
+ plugins: [],
17
+ define: {},
18
+ watch: watch
19
+ ? {
20
+ onRebuild(error, result) {
21
+ if (error) console.error('watch build failed:', error);
22
+ else console.log('watch build succeeded:', result);
23
+ },
24
+ }
25
+ : null,
26
+ external: [],
27
+ format: format,
28
+ bundle: true,
29
+ platform: 'browser',
30
+ outfile: path.resolve(
31
+ __dirname,
32
+ `dist-deepmap/index${format === 'esm' ? '.esm' : ''}.js`,
33
+ ),
34
+ })
35
+ .then(() => {
36
+ try {
37
+ fs.writeFileSync(
38
+ path.resolve(__dirname, './dist-deepmap/package.json'),
39
+ JSON.stringify(packageJSON, null, 2),
40
+ 'utf8',
41
+ );
42
+ } catch (ex) {
43
+ console.error('Cannot find or write dist-deepmap/package.json');
44
+ console.error(ex);
45
+ }
46
+ })
47
+ .catch(() => process.exit(1));
package/run-build.js ADDED
@@ -0,0 +1,45 @@
1
+ const { vanillaExtractPlugin } = require('@vanilla-extract/esbuild-plugin');
2
+
3
+ const format = process.argv[2];
4
+ const watch = process.argv[3] === '--watch';
5
+
6
+ if (!format || !(format in { esm: true, cjs: true })) {
7
+ throw 'Invalid format supplied';
8
+ }
9
+
10
+ const postcss = require('postcss');
11
+ const autoprefixer = require('autoprefixer');
12
+
13
+ async function processCss(css) {
14
+ const result = await postcss([autoprefixer]).process(css, {
15
+ from: undefined /* suppress source map warning */,
16
+ });
17
+
18
+ return result.css;
19
+ }
20
+
21
+ require('esbuild').build({
22
+ entryPoints: ['src/index.tsx'],
23
+ bundle: true,
24
+ plugins: [vanillaExtractPlugin({ processCss, identifiers: 'short' })],
25
+ define: {
26
+ __DEV__: JSON.stringify(false),
27
+ __VERSION__: JSON.stringify(require('./package.json').version),
28
+ __VERSION_TIMESTAMP__: JSON.stringify(
29
+ require('./package.json').publishedAt,
30
+ ),
31
+ },
32
+ watch: watch
33
+ ? {
34
+ onRebuild(error, result) {
35
+ if (error) console.error('watch build failed:', error);
36
+ else console.log('watch build succeeded:', result);
37
+ },
38
+ }
39
+ : null,
40
+ external: ['react', 'react-dom'],
41
+ format: format,
42
+ bundle: true,
43
+ platform: 'browser',
44
+ outfile: `dist/index${format === 'esm' ? '.esm' : ''}.js`,
45
+ });
@@ -0,0 +1,21 @@
1
+ const fs = require('fs');
2
+ const tsc = require('tsc-prog');
3
+
4
+ tsc.build({
5
+ basePath: __dirname,
6
+ configFilePath: 'tsconfig.build.json',
7
+ compilerOptions: {
8
+ rootDir: 'src',
9
+ outDir: 'dist',
10
+ declaration: true, // must be set
11
+ },
12
+ bundleDeclaration: {
13
+ entryPoint: 'index.d.ts', // relative to the OUTPUT directory ('dist' here)
14
+ },
15
+ });
16
+
17
+ let contents = fs.readFileSync('./dist/index.d.ts', 'utf8');
18
+
19
+ contents = contents.replace(/`/g, '');
20
+
21
+ fs.writeFileSync('./dist/index.d.ts', contents, 'utf8');
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { useRef } from 'react';
3
+ import { dbg, err } from '../utils/debug';
4
+
5
+ import { useResizeObserver } from './ResizeObserver';
6
+
7
+ const error = err('CSSVariableWatch');
8
+ const debug = dbg('CSSVariableWatch');
9
+
10
+ type CSSVariableWatcherProps = {
11
+ varName: string;
12
+ onChange: (value: number) => void;
13
+ };
14
+
15
+ const WRAPPER_STYLE: React.CSSProperties = {
16
+ position: 'absolute',
17
+ pointerEvents: 'none',
18
+ width: 0,
19
+ height: 0,
20
+ lineHeight: 0,
21
+ fontSize: 0,
22
+ overflow: 'hidden',
23
+ };
24
+
25
+ export const useCSSVariableWatch = (
26
+ params: CSSVariableWatcherProps & {
27
+ ref: React.MutableRefObject<HTMLElement | null>;
28
+ },
29
+ ) => {
30
+ const lastValueRef = useRef<number>(0);
31
+ const onResize = React.useCallback(
32
+ ({ height }: { height: number }) => {
33
+ if (height && height !== lastValueRef.current) {
34
+ lastValueRef.current = height;
35
+ params.onChange(height);
36
+ }
37
+ },
38
+ [params.onChange],
39
+ );
40
+ useResizeObserver(params.ref, onResize, { earlyAttach: true });
41
+
42
+ React.useLayoutEffect(() => {
43
+ const value = params.ref.current!.getBoundingClientRect().height;
44
+
45
+ if (value) {
46
+ lastValueRef.current = value;
47
+
48
+ debug(`Variable ${params.varName} found and equals ${value}.`);
49
+ return params.onChange(value);
50
+ } else {
51
+ error(
52
+ `Specified variable ${params.varName} not found or does not have a numeric value.`,
53
+ );
54
+ }
55
+ }, []);
56
+ };
57
+
58
+ export const CSSVariableWatch = (props: CSSVariableWatcherProps) => {
59
+ const domRef = useRef<HTMLDivElement>(null);
60
+
61
+ useCSSVariableWatch({
62
+ ...props,
63
+ ref: domRef,
64
+ });
65
+
66
+ return (
67
+ <div
68
+ data-name="css-variable-watcher"
69
+ data-var={props.varName}
70
+ style={WRAPPER_STYLE}
71
+ >
72
+ <div
73
+ ref={domRef}
74
+ style={{
75
+ height: props.varName.startsWith('var(')
76
+ ? props.varName
77
+ : `var(${props.varName})`,
78
+ }}
79
+ ></div>
80
+ </div>
81
+ );
82
+ };
@@ -0,0 +1,214 @@
1
+ export type BooleanCollectionStateKeys<KeyType extends string | number> =
2
+ | true
3
+ | Record<KeyType, true>;
4
+
5
+ export type BooleanCollectionStateObject<KeyType extends string | number> = {
6
+ positiveItems: BooleanCollectionStateKeys<KeyType>;
7
+ negativeItems: BooleanCollectionStateKeys<KeyType>;
8
+ };
9
+
10
+ export abstract class BooleanCollectionState<
11
+ StateObject,
12
+ KeyType extends string | number = string,
13
+ > {
14
+ protected positiveMap?: Map<KeyType, true>;
15
+ protected negativeMap?: Map<KeyType, true>;
16
+
17
+ protected allNegative!: boolean;
18
+ protected allPositive!: boolean;
19
+
20
+ private initialState!: BooleanCollectionStateObject<KeyType>;
21
+
22
+ constructor(
23
+ state:
24
+ | BooleanCollectionStateObject<KeyType>
25
+ | BooleanCollectionState<StateObject, KeyType>,
26
+ ) {
27
+ const stateObject =
28
+ state instanceof Object.getPrototypeOf(this).constructor
29
+ ? //@ts-ignore
30
+ state.getState()
31
+ : state;
32
+
33
+ const positiveItems = this.getPositiveFromState(stateObject);
34
+ const negativeItems = this.getNegativeFromState(stateObject);
35
+
36
+ this.update({
37
+ negativeItems,
38
+ positiveItems,
39
+ });
40
+ }
41
+
42
+ abstract getPositiveFromState(
43
+ state: StateObject,
44
+ ): BooleanCollectionStateKeys<KeyType>;
45
+ abstract getNegativeFromState(
46
+ state: StateObject,
47
+ ): BooleanCollectionStateKeys<KeyType>;
48
+
49
+ abstract getState(): StateObject;
50
+
51
+ protected getInitialState() {
52
+ return this.initialState;
53
+ }
54
+
55
+ // protected getState(): BooleanCollectionStateObject<KeyType> {
56
+ // return {
57
+ // positiveItems: this.allPositive
58
+ // ? true
59
+ // : this.positiveMap?.topDownKeys() ?? [],
60
+ // negativeItems: this.allNegative
61
+ // ? true
62
+ // : this.negativeMap?.topDownKeys() ?? [],
63
+ // };
64
+ // }
65
+
66
+ public destroy() {
67
+ this.positiveMap?.clear();
68
+ this.negativeMap?.clear();
69
+
70
+ delete this.positiveMap;
71
+ delete this.negativeMap;
72
+ }
73
+
74
+ private update(state: BooleanCollectionStateObject<KeyType>) {
75
+ const { positiveItems, negativeItems } = state;
76
+
77
+ this.allNegative = negativeItems === true;
78
+ this.allPositive = positiveItems === true;
79
+
80
+ if (this.allNegative && this.allPositive) {
81
+ throw `Cannot have both negativeItems and positiveItems be true!`;
82
+ }
83
+
84
+ if (negativeItems && negativeItems !== true) {
85
+ if (!this.negativeMap) {
86
+ this.negativeMap = new Map();
87
+ }
88
+ this.negativeMap.clear();
89
+
90
+ for (let k in negativeItems) {
91
+ if (negativeItems.hasOwnProperty(k)) {
92
+ this.negativeMap.set(k, true);
93
+ }
94
+ }
95
+ if (this.positiveMap) {
96
+ this.positiveMap.clear();
97
+ }
98
+ }
99
+
100
+ if (positiveItems && positiveItems !== true) {
101
+ if (!this.positiveMap) {
102
+ this.positiveMap = new Map();
103
+ }
104
+ this.positiveMap.clear();
105
+
106
+ for (let k in positiveItems) {
107
+ if (positiveItems.hasOwnProperty(k)) {
108
+ this.positiveMap.set(k, true);
109
+ }
110
+ }
111
+
112
+ if (this.negativeMap) {
113
+ this.negativeMap.clear();
114
+ }
115
+ }
116
+ }
117
+
118
+ protected isDefaultNegativeSelection() {
119
+ return this.allNegative;
120
+ }
121
+
122
+ protected isDefaultPositiveSelection() {
123
+ return this.allPositive;
124
+ }
125
+
126
+ protected areAllNegative() {
127
+ return (
128
+ this.allNegative &&
129
+ (this.positiveMap ? this.positiveMap.size === 0 : true)
130
+ );
131
+ }
132
+ protected areAllPositive() {
133
+ return (
134
+ this.allPositive &&
135
+ (this.negativeMap ? this.negativeMap.size === 0 : true)
136
+ );
137
+ }
138
+
139
+ protected makeAllNegative() {
140
+ this.update({
141
+ negativeItems: true,
142
+ positiveItems: {} as Record<KeyType, true>,
143
+ });
144
+ }
145
+
146
+ protected makeAllPositive() {
147
+ this.update({
148
+ positiveItems: true,
149
+ negativeItems: {} as Record<KeyType, true>,
150
+ });
151
+ }
152
+
153
+ protected isItemPositive(key: KeyType) {
154
+ key = `${key}` as KeyType;
155
+ if (this.allPositive === true) {
156
+ if (this.allNegative === true) {
157
+ throw 'Cannot have both positiveItems and negativeItems be "true"';
158
+ }
159
+
160
+ return !this.negativeMap?.has(key as KeyType);
161
+ }
162
+
163
+ return !!this.positiveMap?.has(key as KeyType);
164
+ }
165
+
166
+ protected isItemNegative(key: KeyType) {
167
+ return !this.isItemPositive(key);
168
+ }
169
+
170
+ protected setItemValue(key: KeyType, shouldMakePositive: boolean) {
171
+ key = `${key}` as KeyType;
172
+ if (shouldMakePositive === this.isItemPositive(key)) {
173
+ return;
174
+ }
175
+
176
+ if (shouldMakePositive) {
177
+ if (this.allNegative === true) {
178
+ if (!this.positiveMap) {
179
+ throw `No positiveMap found when trying to set item ${key} be positive`;
180
+ }
181
+ this.positiveMap.set(key, true);
182
+ } else if (this.allPositive === true) {
183
+ if (!this.negativeMap) {
184
+ throw `No negativeMap found when trying to set item ${key} be positive`;
185
+ }
186
+ this.negativeMap.delete(key);
187
+ }
188
+ } else {
189
+ // we should collapse the item
190
+ if (this.allPositive === true) {
191
+ if (!this.negativeMap) {
192
+ throw `No negativeMap found when trying to set item ${key} be negative`;
193
+ }
194
+ this.negativeMap.set(key, true);
195
+ } else if (this.allNegative === true) {
196
+ if (!this.positiveMap) {
197
+ throw `No positiveMap found when trying to set item ${key} be negative`;
198
+ }
199
+ this.positiveMap?.delete(key);
200
+ }
201
+ }
202
+ }
203
+
204
+ protected makeItemNegative(key: KeyType) {
205
+ this.setItemValue(key, false);
206
+ }
207
+ protected makeItemPositive(key: KeyType) {
208
+ this.setItemValue(key, true);
209
+ }
210
+
211
+ protected toggleItem(key: KeyType) {
212
+ this.setItemValue(key, !this.isItemPositive(key));
213
+ }
214
+ }