@infinite-table/infinite-react 0.5.0 → 0.5.2

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/README.md +104 -0
  2. package/index.css +896 -0
  3. package/index.d.ts +2264 -0
  4. package/index.esm.css +896 -0
  5. package/index.esm.js +15404 -0
  6. package/index.js +15240 -0
  7. package/package.json +9 -94
  8. package/.vscode/settings.json +0 -3
  9. package/API.md +0 -0
  10. package/build/buildPackageJson.js +0 -43
  11. package/build/scripts/test.js +0 -37
  12. package/bundler.config.js +0 -25
  13. package/globals.d.ts +0 -7
  14. package/rollup.config.js +0 -15
  15. package/run-build-deepmap.js +0 -47
  16. package/run-build.js +0 -45
  17. package/run-dts-concat.js +0 -21
  18. package/src/components/CSSVariableWatch.tsx +0 -82
  19. package/src/components/DataSource/BooleanCollectionState.ts +0 -214
  20. package/src/components/DataSource/BooleanDeepCollectionState.ts +0 -208
  21. package/src/components/DataSource/DataSourceContext.ts +0 -20
  22. package/src/components/DataSource/GroupRowsState.ts +0 -74
  23. package/src/components/DataSource/Indexer.ts +0 -27
  24. package/src/components/DataSource/RowSelectionState.ts +0 -763
  25. package/src/components/DataSource/defaultFilterTypes.ts +0 -64
  26. package/src/components/DataSource/index.tsx +0 -108
  27. package/src/components/DataSource/privateHooks/getChangeDetect.ts +0 -7
  28. package/src/components/DataSource/privateHooks/useLoadData.ts +0 -783
  29. package/src/components/DataSource/publicHooks/useDataSource.ts +0 -19
  30. package/src/components/DataSource/publicHooks/useDataSourceActions.ts +0 -14
  31. package/src/components/DataSource/state/getInitialState.ts +0 -494
  32. package/src/components/DataSource/state/normalizeSortInfo.ts +0 -35
  33. package/src/components/DataSource/state/reducer.ts +0 -466
  34. package/src/components/DataSource/state/rowInfoStatus.ts +0 -27
  35. package/src/components/DataSource/types.ts +0 -548
  36. package/src/components/HeadlessTable/HeadlessTableWithPinnedContainers.tsx +0 -142
  37. package/src/components/HeadlessTable/MappedCells.ts +0 -251
  38. package/src/components/HeadlessTable/RawTable.tsx +0 -98
  39. package/src/components/HeadlessTable/ReactHeadlessTableRenderer.tsx +0 -1516
  40. package/src/components/HeadlessTable/index.tsx +0 -234
  41. package/src/components/InfiniteTable/InfiniteCls.css.ts +0 -164
  42. package/src/components/InfiniteTable/InfiniteTableContext.ts +0 -16
  43. package/src/components/InfiniteTable/api/getImperativeApi.ts +0 -391
  44. package/src/components/InfiniteTable/api/getSelectionApi.ts +0 -364
  45. package/src/components/InfiniteTable/api/type.ts +0 -11
  46. package/src/components/InfiniteTable/components/ActiveCellIndicator.css.ts +0 -51
  47. package/src/components/InfiniteTable/components/ActiveCellIndicator.tsx +0 -116
  48. package/src/components/InfiniteTable/components/ActiveRowIndicator.css.ts +0 -56
  49. package/src/components/InfiniteTable/components/ActiveRowIndicator.tsx +0 -94
  50. package/src/components/InfiniteTable/components/CheckBox.css.ts +0 -13
  51. package/src/components/InfiniteTable/components/CheckBox.tsx +0 -96
  52. package/src/components/InfiniteTable/components/FilterEditors.tsx +0 -52
  53. package/src/components/InfiniteTable/components/InfiniteTableBody/InfiniteTableBody.tsx +0 -27
  54. package/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx +0 -1
  55. package/src/components/InfiniteTable/components/InfiniteTableFooter/InfiniteTableFooter.tsx +0 -31
  56. package/src/components/InfiniteTable/components/InfiniteTableFooter/index.tsx +0 -1
  57. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableColumnHeaderFilter.tsx +0 -102
  58. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx +0 -163
  59. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx +0 -574
  60. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx +0 -79
  61. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderTypes.tsx +0 -25
  62. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderWrapper.tsx +0 -185
  63. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/GroupResizeHandle.tsx +0 -159
  64. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/ResizeHandle.css.ts +0 -124
  65. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/columnResizer.ts +0 -166
  66. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/index.tsx +0 -146
  67. package/src/components/InfiniteTable/components/InfiniteTableHeader/buildColumnAndGroupTree.ts +0 -240
  68. package/src/components/InfiniteTable/components/InfiniteTableHeader/header.css.ts +0 -358
  69. package/src/components/InfiniteTable/components/InfiniteTableHeader/index.tsx +0 -1
  70. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnGroupResizeHandle.tsx +0 -114
  71. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnResizeHandle.tsx +0 -146
  72. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/footer.css.ts +0 -7
  73. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx +0 -110
  74. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCell.tsx +0 -120
  75. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCellTypes.ts +0 -74
  76. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx +0 -457
  77. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRow.tsx +0 -107
  78. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowClassName.ts +0 -6
  79. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowTypes.ts +0 -32
  80. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowUnvirtualized.tsx +0 -75
  81. package/src/components/InfiniteTable/components/InfiniteTableRow/columnRendering.tsx +0 -263
  82. package/src/components/InfiniteTable/components/InfiniteTableRow/index.tsx +0 -1
  83. package/src/components/InfiniteTable/components/InfiniteTableRow/row.css.ts +0 -74
  84. package/src/components/InfiniteTable/components/InfiniteTableRow/useRowDOMProps.ts +0 -199
  85. package/src/components/InfiniteTable/components/LoadMask.css.ts +0 -34
  86. package/src/components/InfiniteTable/components/LoadMask.tsx +0 -27
  87. package/src/components/InfiniteTable/components/ScrollbarPlaceholder.tsx +0 -56
  88. package/src/components/InfiniteTable/components/cell.css.ts +0 -192
  89. package/src/components/InfiniteTable/components/icons/ArrowDown.tsx +0 -14
  90. package/src/components/InfiniteTable/components/icons/ArrowUp.tsx +0 -14
  91. package/src/components/InfiniteTable/components/icons/ExpanderIcon.css.ts +0 -31
  92. package/src/components/InfiniteTable/components/icons/ExpanderIcon.tsx +0 -63
  93. package/src/components/InfiniteTable/components/icons/Icon.tsx +0 -18
  94. package/src/components/InfiniteTable/components/icons/InfiniteTableIconClassName.ts +0 -1
  95. package/src/components/InfiniteTable/components/icons/LoadingIcon.css.ts +0 -8
  96. package/src/components/InfiniteTable/components/icons/LoadingIcon.tsx +0 -45
  97. package/src/components/InfiniteTable/components/icons/MenuIcon.tsx +0 -50
  98. package/src/components/InfiniteTable/components/icons/SortIcon.tsx +0 -113
  99. package/src/components/InfiniteTable/eventHandlers/eventHandlerTypes.ts +0 -57
  100. package/src/components/InfiniteTable/eventHandlers/index.ts +0 -95
  101. package/src/components/InfiniteTable/eventHandlers/keyboardNavigation.ts +0 -232
  102. package/src/components/InfiniteTable/eventHandlers/keyboardSelection.ts +0 -110
  103. package/src/components/InfiniteTable/eventHandlers/onCellClick.ts +0 -94
  104. package/src/components/InfiniteTable/eventHandlers/onKeyDown.ts +0 -25
  105. package/src/components/InfiniteTable/hooks/adjustColumnOrderForAllColumns.ts +0 -70
  106. package/src/components/InfiniteTable/hooks/reorderColumnsOnDrag.ts +0 -476
  107. package/src/components/InfiniteTable/hooks/useAutoSizeColumns.ts +0 -206
  108. package/src/components/InfiniteTable/hooks/useCellClassName.ts +0 -80
  109. package/src/components/InfiniteTable/hooks/useCellRendering.tsx +0 -217
  110. package/src/components/InfiniteTable/hooks/useColumnGroups.ts +0 -71
  111. package/src/components/InfiniteTable/hooks/useColumnMenu.ts +0 -72
  112. package/src/components/InfiniteTable/hooks/useColumnPointerEvents.ts +0 -258
  113. package/src/components/InfiniteTable/hooks/useColumnRowspan.ts +0 -43
  114. package/src/components/InfiniteTable/hooks/useColumnSizeFn.ts +0 -24
  115. package/src/components/InfiniteTable/hooks/useColumnsWhen.ts +0 -582
  116. package/src/components/InfiniteTable/hooks/useComputed.ts +0 -186
  117. package/src/components/InfiniteTable/hooks/useComputedVisibleColumns.ts +0 -219
  118. package/src/components/InfiniteTable/hooks/useDOMProps.ts +0 -306
  119. package/src/components/InfiniteTable/hooks/useEffectWithRaf.ts +0 -47
  120. package/src/components/InfiniteTable/hooks/useInfiniteTable.ts +0 -10
  121. package/src/components/InfiniteTable/hooks/useInfiniteTableState.ts +0 -11
  122. package/src/components/InfiniteTable/hooks/useInternalProps.ts +0 -8
  123. package/src/components/InfiniteTable/hooks/useLicense/LicenseDetails.ts +0 -13
  124. package/src/components/InfiniteTable/hooks/useLicense/crc32.ts +0 -56
  125. package/src/components/InfiniteTable/hooks/useLicense/decode.ts +0 -147
  126. package/src/components/InfiniteTable/hooks/useLicense/useLicense.ts +0 -39
  127. package/src/components/InfiniteTable/hooks/useRerenderOnKeyChange.ts +0 -21
  128. package/src/components/InfiniteTable/hooks/useRowHover.ts +0 -18
  129. package/src/components/InfiniteTable/hooks/useScrollToActiveCell.ts +0 -48
  130. package/src/components/InfiniteTable/hooks/useScrollToActiveRow.ts +0 -44
  131. package/src/components/InfiniteTable/hooks/useScrollbars.ts +0 -51
  132. package/src/components/InfiniteTable/hooks/useToggleGroupRow.ts +0 -56
  133. package/src/components/InfiniteTable/hooks/useUnpinnedRendering.tsx +0 -165
  134. package/src/components/InfiniteTable/hooks/useYourBrain.ts +0 -55
  135. package/src/components/InfiniteTable/index.tsx +0 -352
  136. package/src/components/InfiniteTable/internalProps.ts +0 -4
  137. package/src/components/InfiniteTable/state/computeColumnGroupsDepths.ts +0 -29
  138. package/src/components/InfiniteTable/state/getColumnVisibilityForHideEmptyGroupColumns.ts +0 -127
  139. package/src/components/InfiniteTable/state/getInitialState.ts +0 -375
  140. package/src/components/InfiniteTable/theme.css.ts +0 -556
  141. package/src/components/InfiniteTable/types/InfiniteTableAction.ts +0 -6
  142. package/src/components/InfiniteTable/types/InfiniteTableActionType.ts +0 -12
  143. package/src/components/InfiniteTable/types/InfiniteTableColumn.ts +0 -478
  144. package/src/components/InfiniteTable/types/InfiniteTableComputedValues.ts +0 -43
  145. package/src/components/InfiniteTable/types/InfiniteTableContextValue.ts +0 -12
  146. package/src/components/InfiniteTable/types/InfiniteTableInternalProps.ts +0 -3
  147. package/src/components/InfiniteTable/types/InfiniteTableProps.ts +0 -511
  148. package/src/components/InfiniteTable/types/InfiniteTableState.ts +0 -195
  149. package/src/components/InfiniteTable/types/Utility.ts +0 -35
  150. package/src/components/InfiniteTable/types/index.ts +0 -96
  151. package/src/components/InfiniteTable/utilities.css.ts +0 -179
  152. package/src/components/InfiniteTable/utils/MultiRowSelector.ts +0 -111
  153. package/src/components/InfiniteTable/utils/RenderHookComponentForInfinite.tsx +0 -52
  154. package/src/components/InfiniteTable/utils/adjustColumnOrderForPinning.ts +0 -33
  155. package/src/components/InfiniteTable/utils/assignFiltered.ts +0 -29
  156. package/src/components/InfiniteTable/utils/defaultGetColumContextMenuItems.tsx +0 -108
  157. package/src/components/InfiniteTable/utils/getColumnComputedType.ts +0 -33
  158. package/src/components/InfiniteTable/utils/getColumnForGroupBy.tsx +0 -313
  159. package/src/components/InfiniteTable/utils/getComputedVisibleColumns.ts +0 -773
  160. package/src/components/InfiniteTable/utils/getContextMenuForColumn.tsx +0 -72
  161. package/src/components/InfiniteTable/utils/infiniteDOMUtils.ts +0 -189
  162. package/src/components/InfiniteTable/utils/mapToObject.ts +0 -20
  163. package/src/components/InfiniteTable/utils/moveXatY.ts +0 -25
  164. package/src/components/InfiniteTable/utils/objectValuesExcept.ts +0 -9
  165. package/src/components/InfiniteTable/utils/progressiveSpeedScroller.ts +0 -158
  166. package/src/components/InfiniteTable/utils/rafFn.ts +0 -13
  167. package/src/components/InfiniteTable/utils/toCSSVarName.ts +0 -1
  168. package/src/components/InfiniteTable/utils/toMap.ts +0 -24
  169. package/src/components/Menu/Menu.tsx +0 -750
  170. package/src/components/Menu/MenuCls.css.ts +0 -139
  171. package/src/components/Menu/MenuContext.ts +0 -10
  172. package/src/components/Menu/MenuContextValue.ts +0 -15
  173. package/src/components/Menu/MenuProps.ts +0 -98
  174. package/src/components/Menu/MenuState.ts +0 -56
  175. package/src/components/Menu/MenuTriangleContext.ts +0 -352
  176. package/src/components/Menu/childrenToRuntimeItems.tsx +0 -103
  177. package/src/components/Menu/getMenuState.tsx +0 -119
  178. package/src/components/Menu/index.tsx +0 -88
  179. package/src/components/Menu/propToIdentifyMenu.ts +0 -1
  180. package/src/components/RawList/AvoidReactDiff.tsx +0 -48
  181. package/src/components/RawList/MappedItems.ts +0 -143
  182. package/src/components/RawList/ReactVirtualRenderer.tsx +0 -307
  183. package/src/components/RawList/index.tsx +0 -42
  184. package/src/components/RawList/types.ts +0 -23
  185. package/src/components/RawList/useVirtualRenderer.ts +0 -36
  186. package/src/components/RenderHookComponent.tsx +0 -10
  187. package/src/components/ResizeObserver/index.tsx +0 -170
  188. package/src/components/VirtualBrain/MatrixBrain.ts +0 -1621
  189. package/src/components/VirtualBrain/ScrollListener.ts +0 -39
  190. package/src/components/VirtualBrain/index.ts +0 -664
  191. package/src/components/VirtualList/ColumnListWithExternalScrolling.tsx +0 -78
  192. package/src/components/VirtualList/InfiniteListRootClassName.ts +0 -1
  193. package/src/components/VirtualList/RowListWithExternalScrolling.tsx +0 -120
  194. package/src/components/VirtualList/SpacePlaceholder.tsx +0 -32
  195. package/src/components/VirtualList/VirtualList.css.ts +0 -29
  196. package/src/components/VirtualList/VirtualList.tsx +0 -141
  197. package/src/components/VirtualList/VirtualRowList.tsx +0 -34
  198. package/src/components/VirtualList/types.ts +0 -56
  199. package/src/components/VirtualList/useCorrectHeightForRowElements.ts +0 -14
  200. package/src/components/VirtualScrollContainer/VirtualScrollContainer.css.ts +0 -51
  201. package/src/components/VirtualScrollContainer/getScrollableClassName.ts +0 -30
  202. package/src/components/VirtualScrollContainer/index.tsx +0 -63
  203. package/src/components/flexbox/index.ts +0 -562
  204. package/src/components/hooks/useComponentState/index.tsx +0 -562
  205. package/src/components/hooks/useComponentState/types.ts +0 -32
  206. package/src/components/hooks/useEffectOnceWithProperUnmount.ts +0 -33
  207. package/src/components/hooks/useEffectWithChanges.ts +0 -56
  208. package/src/components/hooks/useImmutableRef.ts +0 -7
  209. package/src/components/hooks/useInterceptedMap.ts +0 -71
  210. package/src/components/hooks/useLatest.tsx +0 -8
  211. package/src/components/hooks/useLazyLatest.ts +0 -23
  212. package/src/components/hooks/useMemoShallowObjectMerge.ts +0 -16
  213. package/src/components/hooks/useMounted.ts +0 -18
  214. package/src/components/hooks/useOnMount.ts +0 -21
  215. package/src/components/hooks/useOnScroll.ts +0 -34
  216. package/src/components/hooks/useOnce.ts +0 -10
  217. package/src/components/hooks/useOverlay/index.tsx +0 -418
  218. package/src/components/hooks/usePrevious.ts +0 -8
  219. package/src/components/hooks/usePropertyOld.ts +0 -168
  220. package/src/components/hooks/useRerender.ts +0 -12
  221. package/src/components/hooks/xuseProperty.ts +0 -165
  222. package/src/components/types/CellPosition.ts +0 -4
  223. package/src/components/types/NonUndefined.ts +0 -1
  224. package/src/components/types/RemoveObject.ts +0 -22
  225. package/src/components/types/Renderable.ts +0 -3
  226. package/src/components/types/ScrollPosition.ts +0 -7
  227. package/src/components/types/Setter.ts +0 -2
  228. package/src/components/types/Size.ts +0 -6
  229. package/src/components/types/SubscriptionCallback.ts +0 -10
  230. package/src/components/types/VoidFn.ts +0 -1
  231. package/src/components/utils/buildSubscriptionCallback.tsx +0 -60
  232. package/src/components/utils/clamp.ts +0 -3
  233. package/src/components/utils/debounce.ts +0 -16
  234. package/src/components/utils/decamelize.ts +0 -11
  235. package/src/components/utils/discardCallsWithEqualArg.ts +0 -42
  236. package/src/components/utils/getRenderIndexes.ts +0 -33
  237. package/src/components/utils/getScrollbarWidth.ts +0 -31
  238. package/src/components/utils/getVirtualRenderCount.ts +0 -21
  239. package/src/components/utils/isControlled.ts +0 -12
  240. package/src/components/utils/isControlledValue.ts +0 -5
  241. package/src/index.tsx +0 -34
  242. package/src/test.tsx +0 -18
  243. package/src/utils/DeepMap/index.ts +0 -588
  244. package/src/utils/DeepMap/once.ts +0 -16
  245. package/src/utils/DeepMap/sortAscending.ts +0 -1
  246. package/src/utils/DeepMap/tsconfig.deepmap.json +0 -17
  247. package/src/utils/DeepMap/xpackage.json +0 -26
  248. package/src/utils/debug.ts +0 -40
  249. package/src/utils/deepClone.ts +0 -38
  250. package/src/utils/getGlobal.ts +0 -3
  251. package/src/utils/groupAndPivot/defaultToKey.ts +0 -3
  252. package/src/utils/groupAndPivot/getGroupKeysForDataItem.ts +0 -19
  253. package/src/utils/groupAndPivot/getPivotColumnsAndColumnGroups.ts +0 -361
  254. package/src/utils/groupAndPivot/index.ts +0 -1229
  255. package/src/utils/groupAndPivot/types.ts +0 -10
  256. package/src/utils/join.ts +0 -4
  257. package/src/utils/mathIntersection.ts +0 -21
  258. package/src/utils/minified.d.ts +0 -2
  259. package/src/utils/minified.js +0 -6
  260. package/src/utils/multisort/index.ts +0 -151
  261. package/src/utils/multisort/sortTypes.ts +0 -25
  262. package/src/utils/notes-status.md +0 -92
  263. package/src/utils/pageGeometry/ConvexPoly.ts +0 -34
  264. package/src/utils/pageGeometry/Point.ts +0 -51
  265. package/src/utils/pageGeometry/PolyWithPoints.ts +0 -52
  266. package/src/utils/pageGeometry/Rectangle.ts +0 -98
  267. package/src/utils/pageGeometry/Triangle.ts +0 -16
  268. package/src/utils/pageGeometry/alignment/index.ts +0 -221
  269. package/src/utils/pageGeometry/polyContainsPoint.ts +0 -182
  270. package/src/utils/pageGeometry/types.ts +0 -3
  271. package/src/utils/proxyFnCall.ts +0 -46
  272. package/src/utils/raf.ts +0 -13
  273. package/src/utils/selectParent.ts +0 -18
  274. package/src/utils/shallowEqualObjects.ts +0 -49
  275. package/src/utils/stripVar.ts +0 -3
  276. package/src/utils/toUpperFirst.ts +0 -5
  277. package/todo.md +0 -2
  278. package/tsconfig.build.json +0 -8
  279. package/tsconfig.dev.json +0 -7
  280. package/tsconfig.json +0 -30
  281. package/tsconfig.typebundler.json +0 -13
  282. package/typedoc.json +0 -4
@@ -1,221 +0,0 @@
1
- import { Point, PointCoords } from '../Point';
2
- import { Rectangle, RectangleCoords } from '../Rectangle';
3
-
4
- export type Alignable = RectangleCoords | HTMLElement | DOMRect;
5
-
6
- export type AlignPositionEnum =
7
- | 'TopLeft'
8
- | 'TopCenter'
9
- | 'TopRight'
10
- | 'CenterRight'
11
- | 'BottomRight'
12
- | 'BottomCenter'
13
- | 'BottomLeft'
14
- | 'CenterLeft'
15
- | 'Center';
16
-
17
- type AlignPositionItem = [AlignPositionEnum, AlignPositionEnum];
18
-
19
- export type AlignPositionOptions = {
20
- alignPosition: AlignPositionItem[];
21
- constrainTo?: Alignable;
22
- alignAnchor: Alignable;
23
- alignTarget: Alignable;
24
- };
25
-
26
- type AlignPositionResult = {
27
- alignPosition: AlignPositionItem;
28
- alignedRect: Rectangle;
29
- distance: PointCoords;
30
- valid: boolean;
31
- index: number;
32
- };
33
-
34
- function isHTMLElement(v: Alignable): v is HTMLElement {
35
- //@ts-ignore
36
- return !!v.tagName;
37
- }
38
-
39
- export function getAlignPosition(
40
- options: AlignPositionOptions,
41
- ): AlignPositionResult {
42
- const { alignTarget, alignAnchor, constrainTo, alignPosition } = options;
43
-
44
- const alignTargetRectangle = Rectangle.from(
45
- isHTMLElement(alignTarget)
46
- ? alignTarget.getBoundingClientRect()
47
- : alignTarget,
48
- );
49
-
50
- const alignAnchorRectangle = Rectangle.from(
51
- isHTMLElement(alignAnchor)
52
- ? alignAnchor.getBoundingClientRect()
53
- : alignAnchor,
54
- );
55
-
56
- const constrainRectangle = constrainTo
57
- ? Rectangle.from(
58
- isHTMLElement(constrainTo)
59
- ? constrainTo.getBoundingClientRect()
60
- : constrainTo,
61
- )
62
- : null;
63
-
64
- if (!constrainRectangle) {
65
- // no constrain, so the first alignPosition will match
66
- const alignResult = align({
67
- anchorRect: alignAnchorRectangle,
68
- targetRect: alignTargetRectangle,
69
- position: alignPosition[0],
70
- });
71
- return {
72
- ...alignResult,
73
- index: 0,
74
- };
75
- }
76
-
77
- let firstAlignResult: AlignPositionResult | null = null;
78
-
79
- for (let i = 0, len = alignPosition.length; i < len; i++) {
80
- const alignResult = align({
81
- anchorRect: alignAnchorRectangle,
82
- targetRect: alignTargetRectangle,
83
- position: alignPosition[i],
84
- constrainRect: constrainRectangle,
85
- });
86
-
87
- if (i === 0) {
88
- firstAlignResult = {
89
- ...alignResult,
90
- index: 0,
91
- };
92
- }
93
-
94
- if (alignResult.valid) {
95
- return {
96
- ...alignResult,
97
-
98
- index: i,
99
- };
100
- }
101
- }
102
- return firstAlignResult!;
103
- }
104
-
105
- export function align(options: {
106
- targetRect: Rectangle;
107
- anchorRect: Rectangle;
108
- position: AlignPositionItem;
109
- constrainRect?: Rectangle | null;
110
- }) {
111
- const targetRect = Rectangle.from(options.targetRect);
112
- const anchorRect = Rectangle.from(options.anchorRect);
113
- const constrainRect = options.constrainRect
114
- ? Rectangle.from(options.constrainRect)
115
- : null;
116
-
117
- const { position } = options;
118
- const [targetPos, anchorPos] = position;
119
-
120
- const targetPoint = getRectanglePointForPosition(targetRect, targetPos);
121
- const anchorPoint = getRectanglePointForPosition(anchorRect, anchorPos);
122
-
123
- const distance = targetPoint.getDistanceToPoint(anchorPoint);
124
-
125
- targetRect.shift(distance);
126
-
127
- const valid = constrainRect ? constrainRect.contains(targetRect) : true;
128
-
129
- return {
130
- alignPosition: position,
131
- alignedRect: targetRect,
132
- valid,
133
- distance,
134
- };
135
- }
136
-
137
- function getRectanglePointForPosition(
138
- rect: Rectangle,
139
- position: AlignPositionEnum,
140
- ): Point {
141
- if (position === 'TopLeft') {
142
- return Point.from({
143
- top: rect.top,
144
- left: rect.left,
145
- });
146
- }
147
-
148
- if (position === 'TopCenter') {
149
- return Point.from({
150
- top: rect.top,
151
- left: rect.left + (rect.width > 0 ? Math.round(rect.width / 2) : 0),
152
- });
153
- }
154
- if (position === 'TopRight') {
155
- return Point.from({
156
- top: rect.top,
157
- left: rect.left + rect.width,
158
- });
159
- }
160
- if (position === 'BottomLeft') {
161
- return Point.from({
162
- left: rect.left,
163
- top: rect.top + rect.height,
164
- });
165
- }
166
- if (position === 'BottomCenter') {
167
- return Point.from({
168
- left: rect.left + (rect.width > 0 ? Math.round(rect.width / 2) : 0),
169
- top: rect.top + rect.height,
170
- });
171
- }
172
- if (position === 'BottomRight') {
173
- return Point.from({
174
- left: rect.left + rect.width,
175
- top: rect.top + rect.height,
176
- });
177
- }
178
-
179
- if (position === 'CenterLeft') {
180
- return Point.from({
181
- left: rect.left,
182
- top: rect.top + (rect.height > 0 ? Math.round(rect.height / 2) : 0),
183
- });
184
- }
185
- if (position === 'CenterRight') {
186
- return Point.from({
187
- left: rect.left + rect.width,
188
- top: rect.top + (rect.height > 0 ? Math.round(rect.height / 2) : 0),
189
- });
190
- }
191
-
192
- // position === AlignPositionEnum.Center
193
- return Point.from({
194
- left: rect.left + (rect.width > 0 ? Math.round(rect.width / 2) : 0),
195
- top: rect.top + (rect.height > 0 ? Math.round(rect.height / 2) : 0),
196
- });
197
- }
198
-
199
- // function align(options: { targetRect: Rectangle; anchorRect: Rectangle }) {
200
-
201
- // }
202
-
203
- // getAlignPosition({
204
- // alignPosition: [
205
- // [AlignPositionEnum.TopLeft, AlignPositionEnum.TopCenter],
206
- // [AlignPositionEnum.TopLeft, AlignPositionEnum.TopCenter],
207
- // ],
208
- // alignAnchor: {
209
- // top: 0,
210
- // left: 0,
211
- // width: 100,
212
- // height: 100,
213
- // },
214
-
215
- // alignTarget: {
216
- // top: 0,
217
- // left: 0,
218
- // width: 100,
219
- // height: 100,
220
- // },
221
- // });
@@ -1,182 +0,0 @@
1
- import { PointCoords } from './Point';
2
- import { ArrayWith3, ArrayWithAtLeast3 } from './types';
3
-
4
- /*
5
- *
6
- * See https://www.baeldung.com/cs/sort-points-clockwise for a reference
7
- */
8
-
9
- function getAngle(p: PointCoords, center: PointCoords) {
10
- let angle = Math.atan2(p.top - center.top, p.left - center.left);
11
-
12
- if (angle <= 0) {
13
- angle = 2 * Math.PI + angle;
14
- }
15
-
16
- return angle;
17
- }
18
-
19
- function getDistance(p1: PointCoords, p2: PointCoords) {
20
- return Math.sqrt((p2.top - p1.top) ** 2 + (p2.left - p1.left) ** 2);
21
- }
22
-
23
- function comparePoints(p1: PointCoords, p2: PointCoords, center: PointCoords) {
24
- const angle1 = getAngle(p1, center);
25
- const angle2 = getAngle(p2, center);
26
-
27
- if (angle1 === angle2) {
28
- return getDistance(center, p2) - getDistance(center, p1);
29
- }
30
-
31
- return angle1 - angle2;
32
- }
33
-
34
- function sortPoints(
35
- points: ArrayWithAtLeast3<PointCoords>,
36
- ): ArrayWithAtLeast3<PointCoords> {
37
- if (points.length < 3) {
38
- return points;
39
- }
40
-
41
- const [...result] = points;
42
-
43
- const center = { top: 0, left: 0 };
44
-
45
- points.forEach((p) => {
46
- center.top += p.top;
47
- center.left += p.left;
48
- });
49
-
50
- center.top /= points.length;
51
- center.left /= points.length;
52
-
53
- result.sort((a, b) => comparePoints(a, b, center));
54
-
55
- return result;
56
- }
57
-
58
- export function polyContainsPoint(
59
- points: ArrayWithAtLeast3<PointCoords>,
60
- point: PointCoords,
61
- ): boolean {
62
- // we need to sort the points so they are in clockwise or counter clockwise order
63
- points = sortPoints(points);
64
-
65
- const [rootPoint] = points;
66
-
67
- // starting from the root point
68
- // draw a triangle to any other 2 neighboring points, in sort order (as sorted above in previous step)
69
- // and check if the point is inside that triangle
70
-
71
- // this is a pretty effective way to check if a point is inside a polygon
72
-
73
- for (
74
- let i = 1, len = points.length - 1 /*yes, -1 is correct*/;
75
- i < len;
76
- i++
77
- ) {
78
- const p1 = points[i];
79
- const p2 = points[i + 1];
80
-
81
- if (triangleContainsPoint([rootPoint, p1, p2], point)) {
82
- return true;
83
- }
84
- }
85
-
86
- return false;
87
- }
88
-
89
- // function translateIntoPositive(points: PointCoords[]): PointCoords[] {
90
- // if (!points.length) {
91
- // return [];
92
- // }
93
-
94
- // let minLeft = points[0].left;
95
- // let minTop = points[0].top;
96
-
97
- // for (let i = 1, len = points.length; i < len; i++) {
98
- // minLeft = Math.min(minLeft, points[i].left);
99
- // minTop = Math.min(minTop, points[i].top);
100
- // }
101
-
102
- // const translateLeft = minLeft < 0;
103
- // const translateTop = minTop < 0;
104
-
105
- // if (!translateLeft && !translateTop) {
106
- // // no need to translate points
107
- // return points;
108
- // }
109
-
110
- // const result = points.map((p) => {
111
- // const newPoint = { ...p };
112
- // if (translateLeft) {
113
- // newPoint.left = p.left - minLeft;
114
- // }
115
- // if (translateTop) {
116
- // newPoint.top = p.top - minTop;
117
- // }
118
- // return newPoint;
119
- // });
120
-
121
- // return result;
122
- // }
123
-
124
- export function triangleContainsPoint(
125
- points: ArrayWith3<PointCoords>,
126
- point: PointCoords,
127
- ): boolean {
128
- // const [a, b, c, p] = translateIntoPositive([...points, point]);
129
- const [a, b, c] = points;
130
- const p = point;
131
-
132
- // const s1 = c.top - a.top;
133
- // const s2 = c.left - a.left;
134
- // const s3 = b.top - a.top;
135
- // const s4 = p.top - a.top;
136
-
137
- // const w1 =
138
- // (a.left * s1 + s4 * s2 - p.left * s1) / (s3 * s2 - (b.left - a.left) * s1);
139
- // const w2 = (s4 - w1 * s3) / s1;
140
-
141
- // return w1 >= 0 && w2 >= 0 && w1 + w2 <= 1;
142
-
143
- // second try
144
- let det =
145
- (b.left - a.left) * (c.top - a.top) - (b.top - a.top) * (c.left - a.left);
146
-
147
- return (
148
- det *
149
- ((b.left - a.left) * (p.top - a.top) -
150
- (b.top - a.top) * (p.left - a.left)) >=
151
- 0 &&
152
- det *
153
- ((c.left - b.left) * (p.top - b.top) -
154
- (c.top - b.top) * (p.left - b.left)) >=
155
- 0 &&
156
- det *
157
- ((a.left - c.left) * (p.top - c.top) -
158
- (a.top - c.top) * (p.left - c.left)) >=
159
- 0
160
- );
161
-
162
- // var cx = p.left,
163
- // cy = p.top,
164
- // v0x = c.left - a.left,
165
- // v0y = c.top - a.top,
166
- // v1x = b.left - a.left,
167
- // v1y = b.top - a.top,
168
- // v2x = cx - a.left,
169
- // v2y = cy - a.top,
170
- // dot00 = v0x * v0x + v0y * v0y,
171
- // dot01 = v0x * v1x + v0y * v1y,
172
- // dot02 = v0x * v2x + v0y * v2y,
173
- // dot11 = v1x * v1x + v1y * v1y,
174
- // dot12 = v1x * v2x + v1y * v2y;
175
-
176
- // // Compute barycentric coordinates
177
- // var bary = dot00 * dot11 - dot01 * dot01,
178
- // inv = bary === 0 ? 0 : 1 / bary,
179
- // u = (dot11 * dot02 - dot01 * dot12) * inv,
180
- // v = (dot00 * dot12 - dot01 * dot02) * inv;
181
- // return u >= 0 && v >= 0 && u + v < 1;
182
- }
@@ -1,3 +0,0 @@
1
- export type ArrayWithAtLeast3<T> = [T, T, T, ...T[]];
2
- export type ArrayWith4<T> = [T, T, T, T];
3
- export type ArrayWith3<T> = [T, T, T];
@@ -1,46 +0,0 @@
1
- export function proxyFn<
2
- T_PARAM_TO_PROXY,
3
- T_FN_PARAMETERS,
4
- T_RESULT extends any,
5
- >(
6
- fn: (...params: T_FN_PARAMETERS[]) => T_RESULT,
7
- config?: {
8
- getProxyTargetFromArgs: (...params: T_FN_PARAMETERS[]) => T_PARAM_TO_PROXY;
9
- putProxyToArgs: (
10
- proxy: T_PARAM_TO_PROXY,
11
- ...params: T_FN_PARAMETERS[]
12
- ) => T_FN_PARAMETERS[];
13
- },
14
- ) {
15
- const propertyReads: Set<string> = new Set();
16
- function proxiedFn(...params: T_FN_PARAMETERS[]) {
17
- const paramToProxy = config
18
- ? config.getProxyTargetFromArgs(...params)
19
- : params[0];
20
-
21
- propertyReads.clear();
22
-
23
- const handler = {
24
- get: function (obj: object, prop: string) {
25
- propertyReads.add(prop);
26
- return (obj as any as T_PARAM_TO_PROXY)[prop as keyof T_PARAM_TO_PROXY];
27
- },
28
- };
29
- const proxy = new Proxy(
30
- paramToProxy as any as object,
31
- handler,
32
- ) as any as T_PARAM_TO_PROXY;
33
-
34
- const newParams = config
35
- ? config.putProxyToArgs(proxy, ...params)
36
- : [proxy];
37
-
38
- //@ts-ignore
39
- return fn.apply(this as unknown as any, newParams);
40
- }
41
-
42
- return {
43
- fn: proxiedFn,
44
- propertyReads,
45
- };
46
- }
package/src/utils/raf.ts DELETED
@@ -1,13 +0,0 @@
1
- import { getGlobal } from './getGlobal';
2
-
3
- export const raf =
4
- getGlobal().requestAnimationFrame ||
5
- ((fn: Function) => {
6
- return setTimeout(fn, 16);
7
- });
8
-
9
- export const cancelRaf =
10
- getGlobal().cancelAnimationFrame ||
11
- ((timeoutId: number) => {
12
- return clearTimeout(timeoutId);
13
- });
@@ -1,18 +0,0 @@
1
- export function selectParent(el: HTMLElement, selector: string) {
2
- let node: HTMLElement | null = el;
3
-
4
- if (!node) {
5
- return null;
6
- }
7
-
8
- if (node && node.matches(selector)) {
9
- return node;
10
- }
11
- while ((node = node.parentElement)) {
12
- if (node.matches(selector)) {
13
- return node;
14
- }
15
- }
16
-
17
- return null;
18
- }
@@ -1,49 +0,0 @@
1
- export function shallowEqualObjects<T extends object | null>(
2
- objA: T,
3
- objB: T,
4
- ignoreKeys?: Set<string>,
5
- ): boolean {
6
- if (objA === objB) {
7
- return true;
8
- }
9
-
10
- if (!objA || !objB) {
11
- return false;
12
- }
13
-
14
- var aKeys = Object.keys(objA) as (keyof T)[];
15
- var bKeys = Object.keys(objB) as (keyof T)[];
16
-
17
- if (ignoreKeys) {
18
- //@ts-ignore
19
- aKeys = aKeys.filter((key) => !ignoreKeys.has(key));
20
- //@ts-ignore
21
- bKeys = bKeys.filter((key) => !ignoreKeys.has(key));
22
- }
23
-
24
- var len = aKeys.length;
25
-
26
- if (bKeys.length !== len) {
27
- return false;
28
- }
29
-
30
- for (var i = 0; i < len; i++) {
31
- var key = aKeys[i];
32
-
33
- if (ignoreKeys) {
34
- //@ts-ignore
35
- if (ignoreKeys.has(key)) {
36
- continue;
37
- }
38
- }
39
-
40
- if (
41
- (objA as any)[key] !== (objB as any)[key] ||
42
- !Object.prototype.hasOwnProperty.call(objB, key)
43
- ) {
44
- return false;
45
- }
46
- }
47
-
48
- return true;
49
- }
@@ -1,3 +0,0 @@
1
- export function stripVar(cssVariableWithVarString: string) {
2
- return cssVariableWithVarString.slice(4, -1);
3
- }
@@ -1,5 +0,0 @@
1
- export const toUpperFirst = (s: string): string => {
2
- return s ? s.substr(0, 1).toUpperCase() + s.substr(1) : s;
3
- };
4
-
5
- export default toUpperFirst;
package/todo.md DELETED
@@ -1,2 +0,0 @@
1
- * implement reducer - check it works with nested objects
2
- * implement sort with nested objects or custom value
@@ -1,8 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "exclude": ["node_modules"],
4
- "compilerOptions": {
5
- "isolatedModules": false,
6
- "rootDir": "./src"
7
- }
8
- }
package/tsconfig.dev.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "noEmit": false,
5
- "emitDeclarationOnly": false
6
- }
7
- }
package/tsconfig.json DELETED
@@ -1,30 +0,0 @@
1
- {
2
- "include": ["src/**/*", "globals.d.ts"],
3
- "compilerOptions": {
4
- "target": "es6",
5
- "module": "esnext",
6
- "lib": ["dom", "esnext"],
7
- "importHelpers": true,
8
- "sourceMap": true,
9
- "rootDir": "..",
10
- "strict": true,
11
- "noEmit": true,
12
- "noImplicitAny": true,
13
- "strictNullChecks": true,
14
- "strictFunctionTypes": true,
15
- "strictPropertyInitialization": true,
16
- "forceConsistentCasingInFileNames": true,
17
- "isolatedModules": true,
18
- "noImplicitThis": true,
19
- "alwaysStrict": true,
20
- "noUnusedLocals": true,
21
- "noUnusedParameters": true,
22
- "noImplicitReturns": true,
23
- "noFallthroughCasesInSwitch": true,
24
- "moduleResolution": "node",
25
- "resolveJsonModule": true,
26
- "jsx": "react",
27
- "esModuleInterop": true
28
- },
29
- "exclude": ["dist"]
30
- }
@@ -1,13 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "exclude": ["dist"],
4
- "include": ["dist/index.d.ts"],
5
- "compilerOptions": {
6
- "lib": [],
7
- "module":"System",
8
- "allowJs": false,
9
- "checkJs": false,
10
- "resolveJsonModule": false
11
- }
12
-
13
- }
package/typedoc.json DELETED
@@ -1,4 +0,0 @@
1
- {
2
- "entryPoints": ["src/index.tsx"],
3
- "out": "../apidocs"
4
- }