freewind-ts-utils 0.18.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 (348) hide show
  1. package/README.md +60 -0
  2. package/antd/CopyButton/CopyButton.d.ts +7 -0
  3. package/antd/CopyButton/CopyButton.js +29 -0
  4. package/antd/CopyButton/index.d.ts +1 -0
  5. package/antd/CopyButton/index.js +2 -0
  6. package/antd/FloatLabel/FloatLabel.css +18 -0
  7. package/antd/FloatLabel/FloatLabel.d.ts +8 -0
  8. package/antd/FloatLabel/FloatLabel.js +50 -0
  9. package/antd/FloatLabel/index.d.ts +1 -0
  10. package/antd/FloatLabel/index.js +2 -0
  11. package/antd/FuzzyAutoComplete/FuzzyAutoComplete.d.ts +17 -0
  12. package/antd/FuzzyAutoComplete/FuzzyAutoComplete.js +73 -0
  13. package/antd/FuzzyAutoComplete/index.d.ts +1 -0
  14. package/antd/FuzzyAutoComplete/index.js +2 -0
  15. package/antd/FuzzyPathSelect/FuzzyPathSelect.d.ts +8 -0
  16. package/antd/FuzzyPathSelect/FuzzyPathSelect.js +48 -0
  17. package/antd/FuzzyPathSelect/defaultIgnoreNames.d.ts +1 -0
  18. package/antd/FuzzyPathSelect/defaultIgnoreNames.js +28 -0
  19. package/antd/FuzzyPathSelect/index.d.ts +1 -0
  20. package/antd/FuzzyPathSelect/index.js +2 -0
  21. package/antd/FuzzyStringSelect/FuzzyStringSelect.d.ts +6 -0
  22. package/antd/FuzzyStringSelect/FuzzyStringSelect.js +12 -0
  23. package/antd/FuzzyStringSelect/index.d.ts +1 -0
  24. package/antd/FuzzyStringSelect/index.js +2 -0
  25. package/antd/HoverSwap/HoverSwap.css +3 -0
  26. package/antd/HoverSwap/HoverSwap.d.ts +8 -0
  27. package/antd/HoverSwap/HoverSwap.js +18 -0
  28. package/antd/HoverSwap/index.d.ts +1 -0
  29. package/antd/HoverSwap/index.js +2 -0
  30. package/antd/InputLabel/InputLabel.css +10 -0
  31. package/antd/InputLabel/InputLabel.d.ts +4 -0
  32. package/antd/InputLabel/InputLabel.js +11 -0
  33. package/antd/InputLabel/index.d.ts +1 -0
  34. package/antd/InputLabel/index.js +2 -0
  35. package/antd/JsonPreviewer/JsonPreviewer.css +74 -0
  36. package/antd/JsonPreviewer/JsonPreviewer.d.ts +11 -0
  37. package/antd/JsonPreviewer/JsonPreviewer.js +69 -0
  38. package/antd/JsonPreviewer/index.d.ts +1 -0
  39. package/antd/JsonPreviewer/index.js +2 -0
  40. package/antd/_internal/HighlightParts.d.ts +6 -0
  41. package/antd/_internal/HighlightParts.js +12 -0
  42. package/antd/index.d.ts +8 -0
  43. package/antd/index.js +17 -0
  44. package/common/SimpleType.d.ts +2 -0
  45. package/common/SimpleType.js +0 -0
  46. package/common/_internal/createObjectReferenceTracker.d.ts +5 -0
  47. package/common/_internal/createObjectReferenceTracker.js +11 -0
  48. package/common/anyToString/anyToString.d.ts +27 -0
  49. package/common/anyToString/anyToString.js +23 -0
  50. package/common/anyToString/createCircularStackTracker.d.ts +5 -0
  51. package/common/anyToString/createCircularStackTracker.js +14 -0
  52. package/common/anyToString/formatters/formatArray.d.ts +2 -0
  53. package/common/anyToString/formatters/formatArray.js +11 -0
  54. package/common/anyToString/formatters/formatArrayBufferView.d.ts +2 -0
  55. package/common/anyToString/formatters/formatArrayBufferView.js +14 -0
  56. package/common/anyToString/formatters/formatDocumentObject.d.ts +1 -0
  57. package/common/anyToString/formatters/formatDocumentObject.js +7 -0
  58. package/common/anyToString/formatters/formatElementObject.d.ts +1 -0
  59. package/common/anyToString/formatters/formatElementObject.js +15 -0
  60. package/common/anyToString/formatters/formatError.d.ts +1 -0
  61. package/common/anyToString/formatters/formatError.js +7 -0
  62. package/common/anyToString/formatters/formatFunction.d.ts +1 -0
  63. package/common/anyToString/formatters/formatFunction.js +6 -0
  64. package/common/anyToString/formatters/formatMap.d.ts +2 -0
  65. package/common/anyToString/formatters/formatMap.js +17 -0
  66. package/common/anyToString/formatters/formatObject.d.ts +2 -0
  67. package/common/anyToString/formatters/formatObject.js +44 -0
  68. package/common/anyToString/formatters/formatObjectKey.d.ts +1 -0
  69. package/common/anyToString/formatters/formatObjectKey.js +8 -0
  70. package/common/anyToString/formatters/formatRecordLike.d.ts +2 -0
  71. package/common/anyToString/formatters/formatRecordLike.js +39 -0
  72. package/common/anyToString/formatters/formatSet.d.ts +2 -0
  73. package/common/anyToString/formatters/formatSet.js +17 -0
  74. package/common/anyToString/formatters/formatString.d.ts +1 -0
  75. package/common/anyToString/formatters/formatString.js +8 -0
  76. package/common/anyToString/formatters/formatValue.d.ts +11 -0
  77. package/common/anyToString/formatters/formatValue.js +20 -0
  78. package/common/anyToString/formatters/formatWindowObject.d.ts +1 -0
  79. package/common/anyToString/formatters/formatWindowObject.js +6 -0
  80. package/common/anyToString/formatters/getConstructorName.d.ts +1 -0
  81. package/common/anyToString/formatters/getConstructorName.js +7 -0
  82. package/common/anyToString/formatters/joinBlock.d.ts +1 -0
  83. package/common/anyToString/formatters/joinBlock.js +9 -0
  84. package/common/anyToString/formatters/withCircularGuard.d.ts +2 -0
  85. package/common/anyToString/formatters/withCircularGuard.js +11 -0
  86. package/common/anyToString/index.d.ts +1 -0
  87. package/common/anyToString/index.js +2 -0
  88. package/common/assertsType.d.ts +12 -0
  89. package/common/assertsType.js +4 -0
  90. package/common/buildSequence.d.ts +6 -0
  91. package/common/buildSequence.js +8 -0
  92. package/common/deepClone.d.ts +12 -0
  93. package/common/deepClone.js +55 -0
  94. package/common/deepEqual.d.ts +12 -0
  95. package/common/deepEqual.js +46 -0
  96. package/common/deepParseJsonStrings.d.ts +1 -0
  97. package/common/deepParseJsonStrings.js +22 -0
  98. package/common/dependsOn.d.ts +12 -0
  99. package/common/dependsOn.js +4 -0
  100. package/common/doExpr.d.ts +14 -0
  101. package/common/doExpr.js +6 -0
  102. package/common/flatChildren.d.ts +1 -0
  103. package/common/flatChildren.js +14 -0
  104. package/common/formatDecimal.d.ts +12 -0
  105. package/common/formatDecimal.js +11 -0
  106. package/common/formatFriendlyTime.d.ts +1 -0
  107. package/common/formatFriendlyTime.js +10 -0
  108. package/common/formatSize.d.ts +13 -0
  109. package/common/formatSize.js +19 -0
  110. package/common/fuzzy/fuzzyMatch.d.ts +25 -0
  111. package/common/fuzzy/fuzzyMatch.js +19 -0
  112. package/common/fuzzy/fuzzyMatchPath.d.ts +23 -0
  113. package/common/fuzzy/fuzzyMatchPath.js +102 -0
  114. package/common/fuzzy/types.d.ts +10 -0
  115. package/common/fuzzy/types.js +0 -0
  116. package/common/fuzzy/utils/buildHighlightParts.d.ts +4 -0
  117. package/common/fuzzy/utils/buildHighlightParts.js +21 -0
  118. package/common/fuzzy/utils/buildHighlightRanges.d.ts +1 -0
  119. package/common/fuzzy/utils/buildHighlightRanges.js +20 -0
  120. package/common/fuzzy/utils/index.d.ts +5 -0
  121. package/common/fuzzy/utils/index.js +6 -0
  122. package/common/fuzzy/utils/normalizePathSeparators.d.ts +1 -0
  123. package/common/fuzzy/utils/normalizePathSeparators.js +7 -0
  124. package/common/fuzzy/utils/rankFuzzyCandidates.d.ts +2 -0
  125. package/common/fuzzy/utils/rankFuzzyCandidates.js +26 -0
  126. package/common/fuzzy/utils/scoreLooseFuzzyMatch.d.ts +2 -0
  127. package/common/fuzzy/utils/scoreLooseFuzzyMatch.js +126 -0
  128. package/common/getEnumerableOwnDescriptors.d.ts +1 -0
  129. package/common/getEnumerableOwnDescriptors.js +11 -0
  130. package/common/index.d.ts +49 -0
  131. package/common/index.js +48 -0
  132. package/common/isEmptyRecord.d.ts +10 -0
  133. package/common/isEmptyRecord.js +7 -0
  134. package/common/isNil.d.ts +13 -0
  135. package/common/isNil.js +6 -0
  136. package/common/isNonNil.d.ts +11 -0
  137. package/common/isNonNil.js +6 -0
  138. package/common/isRecord.d.ts +12 -0
  139. package/common/isRecord.js +8 -0
  140. package/common/jsonRecord/filterJsonRecord.d.ts +16 -0
  141. package/common/jsonRecord/filterJsonRecord.js +19 -0
  142. package/common/jsonRecord/isJsonRecord.d.ts +16 -0
  143. package/common/jsonRecord/isJsonRecord.js +16 -0
  144. package/common/jsonRecord/jsonRecordDiff.d.ts +13 -0
  145. package/common/jsonRecord/jsonRecordDiff.js +26 -0
  146. package/common/jsonRecord/mapJsonRecord.d.ts +13 -0
  147. package/common/jsonRecord/mapJsonRecord.js +14 -0
  148. package/common/jsonRecord/modifyJsonRecord.d.ts +14 -0
  149. package/common/jsonRecord/modifyJsonRecord.js +24 -0
  150. package/common/jsonRecord/walkJsonRecord.d.ts +15 -0
  151. package/common/jsonRecord/walkJsonRecord.js +16 -0
  152. package/common/onlyUnique.d.ts +10 -0
  153. package/common/onlyUnique.js +6 -0
  154. package/common/pipe.d.ts +9 -0
  155. package/common/pipe.js +6 -0
  156. package/common/pipeNonNil.d.ts +16 -0
  157. package/common/pipeNonNil.js +7 -0
  158. package/common/safeJsonStringify.d.ts +28 -0
  159. package/common/safeJsonStringify.js +105 -0
  160. package/common/simpleInt/isSimpleInt.d.ts +6 -0
  161. package/common/simpleInt/isSimpleInt.js +6 -0
  162. package/common/simpleInt/isSimpleIntInputing.d.ts +6 -0
  163. package/common/simpleInt/isSimpleIntInputing.js +7 -0
  164. package/common/simpleInt/isSimpleNumber.d.ts +10 -0
  165. package/common/simpleInt/isSimpleNumber.js +6 -0
  166. package/common/simpleInt/isSimpleNumberInputing.d.ts +6 -0
  167. package/common/simpleInt/isSimpleNumberInputing.js +7 -0
  168. package/common/simpleInt/parseSimpleInt.d.ts +6 -0
  169. package/common/simpleInt/parseSimpleInt.js +11 -0
  170. package/common/simpleInt/parseSimpleIntOrNil.d.ts +6 -0
  171. package/common/simpleInt/parseSimpleIntOrNil.js +9 -0
  172. package/common/simpleInt/parseSimpleNumber.d.ts +6 -0
  173. package/common/simpleInt/parseSimpleNumber.js +11 -0
  174. package/common/simpleInt/parseSimpleNumberOrNil.d.ts +4 -0
  175. package/common/simpleInt/parseSimpleNumberOrNil.js +7 -0
  176. package/common/tap.d.ts +9 -0
  177. package/common/tap.js +6 -0
  178. package/common/tree/buildTree.d.ts +6 -0
  179. package/common/tree/buildTree.js +13 -0
  180. package/common/tree/flatTree.d.ts +2 -0
  181. package/common/tree/flatTree.js +7 -0
  182. package/common/tree/mapTree.d.ts +2 -0
  183. package/common/tree/mapTree.js +11 -0
  184. package/common/tree/pruneTree.d.ts +2 -0
  185. package/common/tree/pruneTree.js +15 -0
  186. package/common/tree/sortTree.d.ts +2 -0
  187. package/common/tree/sortTree.js +11 -0
  188. package/common/tree/treeToArray.d.ts +2 -0
  189. package/common/tree/treeToArray.js +12 -0
  190. package/common/tree/treeToRows.d.ts +5 -0
  191. package/common/tree/treeToRows.js +19 -0
  192. package/common/tree/treeTypes.d.ts +7 -0
  193. package/common/tree/treeTypes.js +0 -0
  194. package/common/tree/walkTree.d.ts +2 -0
  195. package/common/tree/walkTree.js +13 -0
  196. package/common/truncateJsonStrings.d.ts +14 -0
  197. package/common/truncateJsonStrings.js +7 -0
  198. package/common/truncateString.d.ts +13 -0
  199. package/common/truncateString.js +7 -0
  200. package/common/tryParsePartialJson.d.ts +11 -0
  201. package/common/tryParsePartialJson.js +156 -0
  202. package/eslint-config/eslintPreset.d.ts +2 -0
  203. package/eslint-config/eslintPreset.js +36 -0
  204. package/eslint-config/index.d.ts +14 -0
  205. package/eslint-config/index.js +20 -0
  206. package/eslint-config/layers/configLayer.d.ts +2 -0
  207. package/eslint-config/layers/configLayer.js +16 -0
  208. package/eslint-config/layers/jsLayer.d.ts +2 -0
  209. package/eslint-config/layers/jsLayer.js +20 -0
  210. package/eslint-config/layers/prettierLayer.d.ts +5 -0
  211. package/eslint-config/layers/prettierLayer.js +5 -0
  212. package/eslint-config/layers/reactHookLayer.d.ts +2 -0
  213. package/eslint-config/layers/reactHookLayer.js +16 -0
  214. package/eslint-config/layers/testLayer.d.ts +2 -0
  215. package/eslint-config/layers/testLayer.js +46 -0
  216. package/eslint-config/layers/tsLayer.d.ts +2 -0
  217. package/eslint-config/layers/tsLayer.js +70 -0
  218. package/eslint-config/plugins/freewindSingleExportPlugin.d.ts +2 -0
  219. package/eslint-config/plugins/freewindSingleExportPlugin.js +47 -0
  220. package/eslint-config/utils/withRuleOverrides.d.ts +2 -0
  221. package/eslint-config/utils/withRuleOverrides.js +9 -0
  222. package/index.d.ts +1 -0
  223. package/index.js +49 -0
  224. package/node/index.d.ts +2 -0
  225. package/node/index.js +3 -0
  226. package/node/md5.d.ts +11 -0
  227. package/node/md5.js +7 -0
  228. package/node/uuid.d.ts +11 -0
  229. package/node/uuid.js +7 -0
  230. package/package.json +115 -0
  231. package/prettier-config/freewindPrettierPreset.d.ts +2 -0
  232. package/prettier-config/freewindPrettierPreset.js +4 -0
  233. package/prettier-config/index.d.ts +1 -0
  234. package/prettier-config/index.js +2 -0
  235. package/react/hooks/useCopyToClipboard.d.ts +10 -0
  236. package/react/hooks/useCopyToClipboard.js +28 -0
  237. package/react/hooks/useDeepCompareSelector.d.ts +23 -0
  238. package/react/hooks/useDeepCompareSelector.js +14 -0
  239. package/react/hooks/useInputEvent/_internal/ink-input/index.d.ts +2 -0
  240. package/react/hooks/useInputEvent/_internal/ink-input/index.js +3 -0
  241. package/react/hooks/useInputEvent/_internal/ink-input/input-parser.d.ts +6 -0
  242. package/react/hooks/useInputEvent/_internal/ink-input/input-parser.js +98 -0
  243. package/react/hooks/useInputEvent/_internal/ink-input/kitty-keyboard.d.ts +19 -0
  244. package/react/hooks/useInputEvent/_internal/ink-input/kitty-keyboard.js +13 -0
  245. package/react/hooks/useInputEvent/_internal/ink-input/parse-keypress.d.ts +33 -0
  246. package/react/hooks/useInputEvent/_internal/ink-input/parse-keypress.js +319 -0
  247. package/react/hooks/useInputEvent/formatInputEvent.d.ts +2 -0
  248. package/react/hooks/useInputEvent/formatInputEvent.js +25 -0
  249. package/react/hooks/useInputEvent/index.d.ts +4 -0
  250. package/react/hooks/useInputEvent/index.js +4 -0
  251. package/react/hooks/useInputEvent/inputEventTypes.d.ts +51 -0
  252. package/react/hooks/useInputEvent/inputEventTypes.js +0 -0
  253. package/react/hooks/useInputEvent/parseInputEvent.d.ts +4 -0
  254. package/react/hooks/useInputEvent/parseInputEvent.js +100 -0
  255. package/react/hooks/useInputEvent/useInputEvent.d.ts +7 -0
  256. package/react/hooks/useInputEvent/useInputEvent.js +57 -0
  257. package/react/hooks/useOverlayStack/_internal/overlayStackId.d.ts +2 -0
  258. package/react/hooks/useOverlayStack/_internal/overlayStackId.js +6 -0
  259. package/react/hooks/useOverlayStack/createOverlayStackItem.d.ts +2 -0
  260. package/react/hooks/useOverlayStack/createOverlayStackItem.js +10 -0
  261. package/react/hooks/useOverlayStack/index.d.ts +3 -0
  262. package/react/hooks/useOverlayStack/index.js +3 -0
  263. package/react/hooks/useOverlayStack/overlayStackTypes.d.ts +13 -0
  264. package/react/hooks/useOverlayStack/overlayStackTypes.js +0 -0
  265. package/react/hooks/useOverlayStack/useOverlayStack.d.ts +2 -0
  266. package/react/hooks/useOverlayStack/useOverlayStack.js +24 -0
  267. package/react/index.d.ts +4 -0
  268. package/react/index.js +10 -0
  269. package/react/ink-components/InkModal/InkModal.d.ts +3 -0
  270. package/react/ink-components/InkModal/InkModal.js +101 -0
  271. package/react/ink-components/InkModal/index.d.ts +4 -0
  272. package/react/ink-components/InkModal/index.js +4 -0
  273. package/react/ink-components/InkModal/types.d.ts +24 -0
  274. package/react/ink-components/InkModal/types.js +0 -0
  275. package/react/ink-components/InkModal/utils/computeInkModalBodyMaxHeight.d.ts +1 -0
  276. package/react/ink-components/InkModal/utils/computeInkModalBodyMaxHeight.js +4 -0
  277. package/react/ink-components/InkModal/utils/resolveInkModalSize.d.ts +6 -0
  278. package/react/ink-components/InkModal/utils/resolveInkModalSize.js +7 -0
  279. package/react/ink-components/InkMultiSelect/InkMultiSelect.d.ts +22 -0
  280. package/react/ink-components/InkMultiSelect/InkMultiSelect.js +94 -0
  281. package/react/ink-components/InkMultiSelect/InkMultiSelectRow.d.ts +10 -0
  282. package/react/ink-components/InkMultiSelect/InkMultiSelectRow.js +35 -0
  283. package/react/ink-components/InkMultiSelect/index.d.ts +8 -0
  284. package/react/ink-components/InkMultiSelect/index.js +9 -0
  285. package/react/ink-components/InkMultiSelect/inkMultiSelectKeyboard.d.ts +17 -0
  286. package/react/ink-components/InkMultiSelect/inkMultiSelectKeyboard.js +19 -0
  287. package/react/ink-components/InkMultiSelect/types.d.ts +20 -0
  288. package/react/ink-components/InkMultiSelect/types.js +18 -0
  289. package/react/ink-components/InkMultiSelect/useInkMultiSelectNavigation.d.ts +10 -0
  290. package/react/ink-components/InkMultiSelect/useInkMultiSelectNavigation.js +40 -0
  291. package/react/ink-components/InkMultiSelect/utils/clampListScrollOffset.d.ts +1 -0
  292. package/react/ink-components/InkMultiSelect/utils/clampListScrollOffset.js +6 -0
  293. package/react/ink-components/InkMultiSelect/utils/formatMoreLabel.d.ts +1 -0
  294. package/react/ink-components/InkMultiSelect/utils/formatMoreLabel.js +6 -0
  295. package/react/ink-components/InkMultiSelect/utils/inkMultiSelectVisibleCount.d.ts +2 -0
  296. package/react/ink-components/InkMultiSelect/utils/inkMultiSelectVisibleCount.js +7 -0
  297. package/react/ink-components/InkScrollView/InkScrollView.d.ts +19 -0
  298. package/react/ink-components/InkScrollView/InkScrollView.js +103 -0
  299. package/react/ink-components/InkScrollView/Scrollbar.d.ts +7 -0
  300. package/react/ink-components/InkScrollView/Scrollbar.js +16 -0
  301. package/react/ink-components/InkScrollView/index.d.ts +9 -0
  302. package/react/ink-components/InkScrollView/index.js +18 -0
  303. package/react/ink-components/InkScrollView/utils/applyInkScrollInput.d.ts +10 -0
  304. package/react/ink-components/InkScrollView/utils/applyInkScrollInput.js +57 -0
  305. package/react/ink-components/InkScrollView/utils/bounds/getAbsoluteBounds.d.ts +7 -0
  306. package/react/ink-components/InkScrollView/utils/bounds/getAbsoluteBounds.js +19 -0
  307. package/react/ink-components/InkScrollView/utils/bounds/index.d.ts +3 -0
  308. package/react/ink-components/InkScrollView/utils/bounds/index.js +4 -0
  309. package/react/ink-components/InkScrollView/utils/bounds/isInside.d.ts +2 -0
  310. package/react/ink-components/InkScrollView/utils/bounds/isInside.js +7 -0
  311. package/react/ink-components/InkScrollView/utils/bounds/rowInViewport.d.ts +2 -0
  312. package/react/ink-components/InkScrollView/utils/bounds/rowInViewport.js +4 -0
  313. package/react/ink-components/InkScrollView/utils/inkScrollInputTarget.d.ts +11 -0
  314. package/react/ink-components/InkScrollView/utils/inkScrollInputTarget.js +0 -0
  315. package/react/ink-components/InkScrollView/utils/scrollMath/allocateHeights.d.ts +6 -0
  316. package/react/ink-components/InkScrollView/utils/scrollMath/allocateHeights.js +29 -0
  317. package/react/ink-components/InkScrollView/utils/scrollMath/clampOffset.d.ts +1 -0
  318. package/react/ink-components/InkScrollView/utils/scrollMath/clampOffset.js +7 -0
  319. package/react/ink-components/InkScrollView/utils/scrollMath/computeScrollbarThumb.d.ts +5 -0
  320. package/react/ink-components/InkScrollView/utils/scrollMath/computeScrollbarThumb.js +14 -0
  321. package/react/ink-components/InkScrollView/utils/scrollMath/index.d.ts +10 -0
  322. package/react/ink-components/InkScrollView/utils/scrollMath/index.js +11 -0
  323. package/react/ink-components/InkScrollView/utils/scrollMath/offsetFromScrollbarClick.d.ts +1 -0
  324. package/react/ink-components/InkScrollView/utils/scrollMath/offsetFromScrollbarClick.js +12 -0
  325. package/react/ink-components/InkScrollView/utils/scrollMath/offsetFromScrollbarDrag.d.ts +1 -0
  326. package/react/ink-components/InkScrollView/utils/scrollMath/offsetFromScrollbarDrag.js +8 -0
  327. package/react/ink-components/InkScrollView/utils/scrollMath/resolveNextStickToBottomOffset.d.ts +8 -0
  328. package/react/ink-components/InkScrollView/utils/scrollMath/resolveNextStickToBottomOffset.js +10 -0
  329. package/react/ink-components/InkScrollView/utils/scrollMath/scrollByInputEventKey.d.ts +1 -0
  330. package/react/ink-components/InkScrollView/utils/scrollMath/scrollByInputEventKey.js +15 -0
  331. package/react/ink-components/InkScrollView/utils/scrollMath/scrollByKey.d.ts +9 -0
  332. package/react/ink-components/InkScrollView/utils/scrollMath/scrollByKey.js +7 -0
  333. package/react/ink-components/InkScrollView/utils/scrollMath/scrollByWheel.d.ts +2 -0
  334. package/react/ink-components/InkScrollView/utils/scrollMath/scrollByWheel.js +8 -0
  335. package/react/ink-components/InkScrollView/utils/scrollMath/stickToBottomOffset.d.ts +1 -0
  336. package/react/ink-components/InkScrollView/utils/scrollMath/stickToBottomOffset.js +4 -0
  337. package/react/ink-components/InkScrollView/utils/useInkScrollInput.d.ts +10 -0
  338. package/react/ink-components/InkScrollView/utils/useInkScrollInput.js +17 -0
  339. package/react/ink-components/InkTimer/InkTimer.d.ts +9 -0
  340. package/react/ink-components/InkTimer/InkTimer.js +26 -0
  341. package/react/ink-components/InkTimer/index.d.ts +1 -0
  342. package/react/ink-components/InkTimer/index.js +2 -0
  343. package/react/ink-components/index.d.ts +4 -0
  344. package/react/ink-components/index.js +34 -0
  345. package/vite-plugins/fileLinePlaceholderPlugin.d.ts +26 -0
  346. package/vite-plugins/fileLinePlaceholderPlugin.js +57 -0
  347. package/vite-plugins/index.d.ts +1 -0
  348. package/vite-plugins/index.js +2 -0
@@ -0,0 +1,103 @@
1
+ import { clampOffset as e } from "./utils/scrollMath/clampOffset.js";
2
+ import { resolveNextStickToBottomOffset as t } from "./utils/scrollMath/resolveNextStickToBottomOffset.js";
3
+ import { Scrollbar as n } from "./Scrollbar.js";
4
+ import { useInkScrollInput as r } from "./utils/useInkScrollInput.js";
5
+ import { Children as i, useCallback as a, useEffect as o, useMemo as s, useRef as c, useState as l } from "react";
6
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
7
+ import { Box as f, Text as p } from "ink";
8
+ //#region src/react/ink-components/InkScrollView/InkScrollView.tsx
9
+ var m = ({ maxHeight: m, children: h, scrollOffset: g, defaultScrollOffset: _ = 0, onScrollOffsetChange: v, stickToBottom: y = !1, enableInput: b = !1, focused: x = !1, showScrollbar: S = !1, title: C, viewportRef: w, scrollbarRef: T }) => {
10
+ let E = g !== void 0, [D, O] = l(_), k = c(null), A = c(null), j = w ?? k, M = T ?? A, N = s(() => i.toArray(h), [h]), P = N.length, F = m, I = c(P), L = c(F), R = F + 2, z = E ? g : D, B = a((t) => {
11
+ let n = e(t, P, F);
12
+ E || O(n), v?.(n);
13
+ }, [
14
+ F,
15
+ E,
16
+ P,
17
+ v
18
+ ]), V = e(z, P, F), H = N.slice(V, V + F);
19
+ o(() => {
20
+ V !== z && B(z);
21
+ }, [
22
+ V,
23
+ z,
24
+ B
25
+ ]), o(() => {
26
+ if (y === !1) return;
27
+ let e = I.current, n = L.current;
28
+ if (I.current = P, L.current = F, P === e && F === n) return;
29
+ let r = t({
30
+ mode: y,
31
+ offset: z,
32
+ prevLineCount: e,
33
+ lineCount: P,
34
+ viewportHeight: F
35
+ });
36
+ r !== void 0 && B(r);
37
+ }, [
38
+ F,
39
+ P,
40
+ z,
41
+ B,
42
+ y
43
+ ]);
44
+ let U = s(() => !b || !x ? null : {
45
+ lineCount: P,
46
+ viewportHeight: F,
47
+ offset: V,
48
+ onOffsetChange: B,
49
+ viewportRef: j,
50
+ ...S ? { scrollbarRef: M } : {}
51
+ }, [
52
+ V,
53
+ F,
54
+ b,
55
+ x,
56
+ P,
57
+ M,
58
+ j,
59
+ B,
60
+ S
61
+ ]);
62
+ return r({
63
+ enabled: b && x,
64
+ keyboardTarget: U,
65
+ mouseTargets: U ? [U] : []
66
+ }), /* @__PURE__ */ d(f, {
67
+ flexDirection: "column",
68
+ flexGrow: 1,
69
+ minHeight: R,
70
+ children: [C ? /* @__PURE__ */ d(p, {
71
+ bold: !0,
72
+ ...x ? { color: "cyan" } : {},
73
+ children: [C, x ? " ◀" : ""]
74
+ }) : null, /* @__PURE__ */ d(f, {
75
+ flexDirection: "row",
76
+ height: R,
77
+ borderStyle: "single",
78
+ borderColor: x ? "cyan" : "gray",
79
+ children: [/* @__PURE__ */ u(f, {
80
+ ref: j,
81
+ flexDirection: "column",
82
+ height: F,
83
+ overflow: "hidden",
84
+ flexGrow: 1,
85
+ paddingX: 1,
86
+ children: H.length === 0 ? /* @__PURE__ */ u(p, {
87
+ dimColor: !0,
88
+ children: "(empty)"
89
+ }) : H.map((e, t) => /* @__PURE__ */ u(f, { children: e }, `line-${V + t}`))
90
+ }), S ? /* @__PURE__ */ u(f, {
91
+ ref: M,
92
+ paddingRight: 1,
93
+ children: /* @__PURE__ */ u(n, {
94
+ viewportHeight: F,
95
+ lineCount: P,
96
+ offset: V
97
+ })
98
+ }) : null]
99
+ })]
100
+ });
101
+ };
102
+ //#endregion
103
+ export { m as InkScrollView };
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ export type ScrollbarProps = {
3
+ viewportHeight: number;
4
+ lineCount: number;
5
+ offset: number;
6
+ };
7
+ export declare const Scrollbar: FC<ScrollbarProps>;
@@ -0,0 +1,16 @@
1
+ import { computeScrollbarThumb as e } from "./utils/scrollMath/computeScrollbarThumb.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import { Box as n, Text as r } from "ink";
4
+ //#region src/react/ink-components/InkScrollView/Scrollbar.tsx
5
+ var i = ({ viewportHeight: i, lineCount: a, offset: o }) => {
6
+ let { thumbStart: s, thumbSize: c } = e(a, i, o), l = a > i;
7
+ return /* @__PURE__ */ t(n, {
8
+ flexDirection: "column",
9
+ children: Array.from({ length: i }, (e, t) => l && t >= s && t < s + c ? "▓" : "░").map((e, n) => /* @__PURE__ */ t(r, {
10
+ dimColor: !0,
11
+ children: e
12
+ }, `scrollbar-${n}`))
13
+ });
14
+ };
15
+ //#endregion
16
+ export { i as Scrollbar };
@@ -0,0 +1,9 @@
1
+ export { InkScrollView } from './InkScrollView.js';
2
+ export type { InkScrollViewProps } from './InkScrollView.js';
3
+ export { Scrollbar } from './Scrollbar.js';
4
+ export type { ScrollbarProps } from './Scrollbar.js';
5
+ export { useInkScrollInput } from './utils/useInkScrollInput.js';
6
+ export { applyInkScrollInput } from './utils/applyInkScrollInput.js';
7
+ export type { InkScrollInputTarget } from './utils/inkScrollInputTarget.js';
8
+ export * from './utils/scrollMath/index.js';
9
+ export * from './utils/bounds/index.js';
@@ -0,0 +1,18 @@
1
+ import { allocateHeights as e } from "./utils/scrollMath/allocateHeights.js";
2
+ import { clampOffset as t } from "./utils/scrollMath/clampOffset.js";
3
+ import { computeScrollbarThumb as n } from "./utils/scrollMath/computeScrollbarThumb.js";
4
+ import { offsetFromScrollbarClick as r } from "./utils/scrollMath/offsetFromScrollbarClick.js";
5
+ import { offsetFromScrollbarDrag as i } from "./utils/scrollMath/offsetFromScrollbarDrag.js";
6
+ import { scrollByKey as a } from "./utils/scrollMath/scrollByKey.js";
7
+ import { scrollByInputEventKey as o } from "./utils/scrollMath/scrollByInputEventKey.js";
8
+ import { scrollByWheel as s } from "./utils/scrollMath/scrollByWheel.js";
9
+ import { stickToBottomOffset as c } from "./utils/scrollMath/stickToBottomOffset.js";
10
+ import { resolveNextStickToBottomOffset as l } from "./utils/scrollMath/resolveNextStickToBottomOffset.js";
11
+ import { Scrollbar as u } from "./Scrollbar.js";
12
+ import { getAbsoluteBounds as d } from "./utils/bounds/getAbsoluteBounds.js";
13
+ import { isInside as f } from "./utils/bounds/isInside.js";
14
+ import { rowInViewport as p } from "./utils/bounds/rowInViewport.js";
15
+ import { applyInkScrollInput as m } from "./utils/applyInkScrollInput.js";
16
+ import { useInkScrollInput as h } from "./utils/useInkScrollInput.js";
17
+ import { InkScrollView as g } from "./InkScrollView.js";
18
+ export { g as InkScrollView, u as Scrollbar, e as allocateHeights, m as applyInkScrollInput, t as clampOffset, n as computeScrollbarThumb, d as getAbsoluteBounds, f as isInside, r as offsetFromScrollbarClick, i as offsetFromScrollbarDrag, l as resolveNextStickToBottomOffset, p as rowInViewport, o as scrollByInputEventKey, a as scrollByKey, s as scrollByWheel, c as stickToBottomOffset, h as useInkScrollInput };
@@ -0,0 +1,10 @@
1
+ import { RefObject } from 'react';
2
+ import { InputEvent } from '../../../hooks/useInputEvent/inputEventTypes.js';
3
+ import { InkScrollInputTarget } from './inkScrollInputTarget.js';
4
+ type ApplyInkScrollInputOptions = {
5
+ keyboardTarget: InkScrollInputTarget | null;
6
+ mouseTargets: InkScrollInputTarget[];
7
+ draggingTargetIdRef: RefObject<string | undefined>;
8
+ };
9
+ export declare const applyInkScrollInput: (event: InputEvent, options: ApplyInkScrollInputOptions) => void;
10
+ export {};
@@ -0,0 +1,57 @@
1
+ import { offsetFromScrollbarClick as e } from "./scrollMath/offsetFromScrollbarClick.js";
2
+ import { offsetFromScrollbarDrag as t } from "./scrollMath/offsetFromScrollbarDrag.js";
3
+ import { scrollByInputEventKey as n } from "./scrollMath/scrollByInputEventKey.js";
4
+ import { scrollByWheel as r } from "./scrollMath/scrollByWheel.js";
5
+ import { getAbsoluteBounds as i } from "./bounds/getAbsoluteBounds.js";
6
+ import { isInside as a } from "./bounds/isInside.js";
7
+ import { rowInViewport as o } from "./bounds/rowInViewport.js";
8
+ //#region src/react/ink-components/InkScrollView/utils/applyInkScrollInput.ts
9
+ var s = (e, t, n) => {
10
+ for (let r of n) {
11
+ let n = i(r.viewportRef.current);
12
+ if (n && a(e, t, n)) return r;
13
+ }
14
+ }, c = (e, t, n) => {
15
+ for (let r of n) {
16
+ let n = i(r.scrollbarRef?.current);
17
+ if (n && a(e, t, n)) return r;
18
+ }
19
+ }, l = (a, l) => {
20
+ let { keyboardTarget: u, mouseTargets: d, draggingTargetIdRef: f } = l;
21
+ if (a.type === "key" && u) {
22
+ let e = n(u.offset, u.lineCount, u.viewportHeight, a.name);
23
+ e !== u.offset && u.onOffsetChange(e);
24
+ return;
25
+ }
26
+ if (a.type === "mouse") {
27
+ if (a.button === "wheel-up") {
28
+ let e = s(a.column, a.row, d);
29
+ e && e.onOffsetChange(r(e.offset, e.lineCount, e.viewportHeight, "up"));
30
+ return;
31
+ }
32
+ if (a.button === "wheel-down") {
33
+ let e = s(a.column, a.row, d);
34
+ e && e.onOffsetChange(r(e.offset, e.lineCount, e.viewportHeight, "down"));
35
+ return;
36
+ }
37
+ if (a.button === "left" && a.action === "press") {
38
+ let t = c(a.column, a.row, d), n = t ? i(t.scrollbarRef?.current) : void 0;
39
+ if (t && n) {
40
+ let r = o(a.row, n);
41
+ t.onOffsetChange(e(t.lineCount, t.viewportHeight, r)), f.current = t.id;
42
+ }
43
+ return;
44
+ }
45
+ if (a.button === "left" && a.action === "move" && f.current) {
46
+ let e = d.find((e) => e.id === f.current), n = e ? i(e.scrollbarRef?.current) : void 0;
47
+ if (e && n) {
48
+ let r = o(a.row, n);
49
+ e.onOffsetChange(t(e.lineCount, e.viewportHeight, r));
50
+ }
51
+ return;
52
+ }
53
+ a.button === "left" && a.action === "release" && (f.current = void 0);
54
+ }
55
+ };
56
+ //#endregion
57
+ export { l as applyInkScrollInput };
@@ -0,0 +1,7 @@
1
+ export type Bounds = {
2
+ left: number;
3
+ top: number;
4
+ width: number;
5
+ height: number;
6
+ };
7
+ export declare const getAbsoluteBounds: (element: import('ink').DOMElement | null | undefined) => Bounds | undefined;
@@ -0,0 +1,19 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/bounds/getAbsoluteBounds.ts
2
+ var e = (e) => {
3
+ if (!e) return;
4
+ let t = e.yogaNode?.getComputedLayout();
5
+ if (!t) return;
6
+ let n = t.left, r = t.top, i = e.parentNode;
7
+ for (; i && i.nodeName !== "ink-root";) {
8
+ let e = i.yogaNode?.getComputedLayout();
9
+ e && (n += e.left, r += e.top), i = i.parentNode;
10
+ }
11
+ return {
12
+ left: n,
13
+ top: r,
14
+ width: t.width,
15
+ height: t.height
16
+ };
17
+ };
18
+ //#endregion
19
+ export { e as getAbsoluteBounds };
@@ -0,0 +1,3 @@
1
+ export * from './getAbsoluteBounds.js';
2
+ export * from './isInside.js';
3
+ export * from './rowInViewport.js';
@@ -0,0 +1,4 @@
1
+ import { getAbsoluteBounds as e } from "./getAbsoluteBounds.js";
2
+ import { isInside as t } from "./isInside.js";
3
+ import { rowInViewport as n } from "./rowInViewport.js";
4
+ export { e as getAbsoluteBounds, t as isInside, n as rowInViewport };
@@ -0,0 +1,2 @@
1
+ import { Bounds } from './getAbsoluteBounds.js';
2
+ export declare const isInside: (column: number, row: number, bounds: Bounds) => boolean;
@@ -0,0 +1,7 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/bounds/isInside.ts
2
+ var e = (e, t, n) => {
3
+ let r = n.left + 1, i = n.left + n.width, a = n.top + 1, o = n.top + n.height;
4
+ return e >= r && e <= i && t >= a && t <= o;
5
+ };
6
+ //#endregion
7
+ export { e as isInside };
@@ -0,0 +1,2 @@
1
+ import { Bounds } from './getAbsoluteBounds.js';
2
+ export declare const rowInViewport: (absoluteRow: number, bounds: Bounds) => number;
@@ -0,0 +1,4 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/bounds/rowInViewport.ts
2
+ var e = (e, t) => e - (t.top + 1);
3
+ //#endregion
4
+ export { e as rowInViewport };
@@ -0,0 +1,11 @@
1
+ import { DOMElement } from 'ink';
2
+ import { RefObject } from 'react';
3
+ export type InkScrollInputTarget = {
4
+ id?: string;
5
+ lineCount: number;
6
+ viewportHeight: number;
7
+ offset: number;
8
+ onOffsetChange: (offset: number) => void;
9
+ viewportRef: RefObject<DOMElement | null>;
10
+ scrollbarRef?: RefObject<DOMElement | null>;
11
+ };
@@ -0,0 +1,6 @@
1
+ export type HeightAllocationItem = {
2
+ weight: number;
3
+ maxHeight?: number;
4
+ minHeight?: number;
5
+ };
6
+ export declare const allocateHeights: (totalHeight: number, items: HeightAllocationItem[]) => number[];
@@ -0,0 +1,29 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/allocateHeights.ts
2
+ var e = (e, t) => {
3
+ let n = t.reduce((e, t) => e + t.weight, 0), r = t.map((t) => {
4
+ let r = Math.floor(e * t.weight / n), i = t.minHeight ?? 1, a = t.maxHeight ?? e;
5
+ return Math.min(a, Math.max(i, r));
6
+ }), i = r.reduce((e, t) => e + t, 0);
7
+ for (; i > e;) {
8
+ let e = 0;
9
+ for (let t = 1; t < r.length; t += 1) (r[t] ?? 0) > (r[e] ?? 0) && (e = t);
10
+ let n = t[e]?.minHeight ?? 1, a = r[e] ?? 0;
11
+ if (a <= n) break;
12
+ r[e] = a - 1, --i;
13
+ }
14
+ for (; i < e;) {
15
+ let n = -1;
16
+ for (let i = 0; i < r.length; i += 1) {
17
+ let a = t[i]?.maxHeight ?? e;
18
+ if ((r[i] ?? 0) < a) {
19
+ n = i;
20
+ break;
21
+ }
22
+ }
23
+ if (n === -1) break;
24
+ r[n] = (r[n] ?? 0) + 1, i += 1;
25
+ }
26
+ return r;
27
+ };
28
+ //#endregion
29
+ export { e as allocateHeights };
@@ -0,0 +1 @@
1
+ export declare const clampOffset: (offset: number, lineCount: number, viewportHeight: number) => number;
@@ -0,0 +1,7 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/clampOffset.ts
2
+ var e = (e, t, n) => {
3
+ let r = Math.max(0, t - n);
4
+ return Math.min(Math.max(0, e), r);
5
+ };
6
+ //#endregion
7
+ export { e as clampOffset };
@@ -0,0 +1,5 @@
1
+ export type ScrollbarThumb = {
2
+ thumbStart: number;
3
+ thumbSize: number;
4
+ };
5
+ export declare const computeScrollbarThumb: (lineCount: number, viewportHeight: number, offset: number) => ScrollbarThumb;
@@ -0,0 +1,14 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/computeScrollbarThumb.ts
2
+ var e = (e, t, n) => {
3
+ if (e <= t) return {
4
+ thumbStart: 0,
5
+ thumbSize: t
6
+ };
7
+ let r = e - t, i = Math.max(1, Math.round(t * t / e)), a = Math.max(0, t - i);
8
+ return {
9
+ thumbStart: r === 0 ? 0 : Math.round(n / r * a),
10
+ thumbSize: i
11
+ };
12
+ };
13
+ //#endregion
14
+ export { e as computeScrollbarThumb };
@@ -0,0 +1,10 @@
1
+ export * from './allocateHeights.js';
2
+ export * from './clampOffset.js';
3
+ export * from './computeScrollbarThumb.js';
4
+ export * from './offsetFromScrollbarClick.js';
5
+ export * from './offsetFromScrollbarDrag.js';
6
+ export * from './scrollByInputEventKey.js';
7
+ export * from './scrollByKey.js';
8
+ export * from './scrollByWheel.js';
9
+ export * from './stickToBottomOffset.js';
10
+ export * from './resolveNextStickToBottomOffset.js';
@@ -0,0 +1,11 @@
1
+ import { allocateHeights as e } from "./allocateHeights.js";
2
+ import { clampOffset as t } from "./clampOffset.js";
3
+ import { computeScrollbarThumb as n } from "./computeScrollbarThumb.js";
4
+ import { offsetFromScrollbarClick as r } from "./offsetFromScrollbarClick.js";
5
+ import { offsetFromScrollbarDrag as i } from "./offsetFromScrollbarDrag.js";
6
+ import { scrollByKey as a } from "./scrollByKey.js";
7
+ import { scrollByInputEventKey as o } from "./scrollByInputEventKey.js";
8
+ import { scrollByWheel as s } from "./scrollByWheel.js";
9
+ import { stickToBottomOffset as c } from "./stickToBottomOffset.js";
10
+ import { resolveNextStickToBottomOffset as l } from "./resolveNextStickToBottomOffset.js";
11
+ export { e as allocateHeights, t as clampOffset, n as computeScrollbarThumb, r as offsetFromScrollbarClick, i as offsetFromScrollbarDrag, l as resolveNextStickToBottomOffset, o as scrollByInputEventKey, a as scrollByKey, s as scrollByWheel, c as stickToBottomOffset };
@@ -0,0 +1 @@
1
+ export declare const offsetFromScrollbarClick: (lineCount: number, viewportHeight: number, clickRowInViewport: number) => number;
@@ -0,0 +1,12 @@
1
+ import { computeScrollbarThumb as e } from "./computeScrollbarThumb.js";
2
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/offsetFromScrollbarClick.ts
3
+ var t = (t, n, r) => {
4
+ if (t <= n) return 0;
5
+ let { thumbStart: i, thumbSize: a } = e(t, n, 0), o = t - n, s = Math.max(0, n - a);
6
+ if (r < i) return Math.max(0, Math.round(r / n * o) - n);
7
+ if (r >= i + a) return Math.min(o, Math.round(r / n * o) + n);
8
+ let c = s === 0 ? 0 : (r - i) / s;
9
+ return Math.round(c * o);
10
+ };
11
+ //#endregion
12
+ export { t as offsetFromScrollbarClick };
@@ -0,0 +1 @@
1
+ export declare const offsetFromScrollbarDrag: (lineCount: number, viewportHeight: number, dragRowInViewport: number) => number;
@@ -0,0 +1,8 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/offsetFromScrollbarDrag.ts
2
+ var e = (e, t, n) => {
3
+ if (e <= t) return 0;
4
+ let r = Math.max(1, Math.round(t * t / e)), i = n, a = Math.max(0, Math.min(t - r, i - Math.floor(r / 2))), o = Math.max(0, t - r), s = e - t, c = o === 0 ? 0 : a / o;
5
+ return Math.round(c * s);
6
+ };
7
+ //#endregion
8
+ export { e as offsetFromScrollbarDrag };
@@ -0,0 +1,8 @@
1
+ export type StickToBottomMode = boolean | "always" | "whenAtBottom";
2
+ export declare const resolveNextStickToBottomOffset: ({ mode, offset, prevLineCount, lineCount, viewportHeight, }: {
3
+ mode: StickToBottomMode;
4
+ offset: number;
5
+ prevLineCount: number;
6
+ lineCount: number;
7
+ viewportHeight: number;
8
+ }) => number | undefined;
@@ -0,0 +1,10 @@
1
+ import { stickToBottomOffset as e } from "./stickToBottomOffset.js";
2
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/resolveNextStickToBottomOffset.ts
3
+ var t = ({ mode: t, offset: n, prevLineCount: r, lineCount: i, viewportHeight: a }) => {
4
+ if (t === !1) return;
5
+ let o = e(i, a);
6
+ if ((t === !0 ? "always" : t) === "always") return o === n ? void 0 : o;
7
+ if (n >= e(r, a) && o !== n) return o;
8
+ };
9
+ //#endregion
10
+ export { t as resolveNextStickToBottomOffset };
@@ -0,0 +1 @@
1
+ export declare const scrollByInputEventKey: (offset: number, lineCount: number, viewportHeight: number, keyName: string) => number;
@@ -0,0 +1,15 @@
1
+ import { scrollByKey as e } from "./scrollByKey.js";
2
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/scrollByInputEventKey.ts
3
+ var t = (t, n, r, i) => {
4
+ let a = {
5
+ up: { upArrow: !0 },
6
+ down: { downArrow: !0 },
7
+ pageup: { pageUp: !0 },
8
+ pagedown: { pageDown: !0 },
9
+ home: { home: !0 },
10
+ end: { end: !0 }
11
+ }[i];
12
+ return a ? e(t, n, r, a) : t;
13
+ };
14
+ //#endregion
15
+ export { t as scrollByInputEventKey };
@@ -0,0 +1,9 @@
1
+ export type ScrollKeyInput = {
2
+ upArrow?: boolean;
3
+ downArrow?: boolean;
4
+ pageUp?: boolean;
5
+ pageDown?: boolean;
6
+ home?: boolean;
7
+ end?: boolean;
8
+ };
9
+ export declare const scrollByKey: (offset: number, lineCount: number, viewportHeight: number, key: ScrollKeyInput) => number;
@@ -0,0 +1,7 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/scrollByKey.ts
2
+ var e = (e, t, n, r) => {
3
+ let i = Math.max(0, t - n);
4
+ return r.upArrow ? Math.max(0, e - 1) : r.downArrow ? Math.min(i, e + 1) : r.pageUp ? Math.max(0, e - n) : r.pageDown ? Math.min(i, e + n) : r.home ? 0 : r.end ? i : e;
5
+ };
6
+ //#endregion
7
+ export { e as scrollByKey };
@@ -0,0 +1,2 @@
1
+ export type WheelDirection = "up" | "down";
2
+ export declare const scrollByWheel: (offset: number, lineCount: number, viewportHeight: number, direction: WheelDirection, linesPerTick?: number) => number;
@@ -0,0 +1,8 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/scrollByWheel.ts
2
+ var e = (e, t, n, r, i = 3) => {
3
+ if (r === "up") return Math.max(0, e - i);
4
+ let a = Math.max(0, t - n);
5
+ return Math.min(a, e + i);
6
+ };
7
+ //#endregion
8
+ export { e as scrollByWheel };
@@ -0,0 +1 @@
1
+ export declare const stickToBottomOffset: (lineCount: number, viewportHeight: number) => number;
@@ -0,0 +1,4 @@
1
+ //#region src/react/ink-components/InkScrollView/utils/scrollMath/stickToBottomOffset.ts
2
+ var e = (e, t) => Math.max(0, e - t);
3
+ //#endregion
4
+ export { e as stickToBottomOffset };
@@ -0,0 +1,10 @@
1
+ import { InputEvent } from '../../../hooks/useInputEvent/inputEventTypes.js';
2
+ import { InkScrollInputTarget } from './inkScrollInputTarget.js';
3
+ type UseInkScrollInputOptions = {
4
+ enabled: boolean;
5
+ keyboardTarget: InkScrollInputTarget | null;
6
+ mouseTargets: InkScrollInputTarget[];
7
+ onInputEvent?: (event: InputEvent) => boolean;
8
+ };
9
+ export declare const useInkScrollInput: ({ enabled, keyboardTarget, mouseTargets, onInputEvent }: UseInkScrollInputOptions) => void;
10
+ export {};
@@ -0,0 +1,17 @@
1
+ import { useInputEvent as e } from "../../../hooks/useInputEvent/useInputEvent.js";
2
+ import "../../../hooks/useInputEvent/index.js";
3
+ import { applyInkScrollInput as t } from "./applyInkScrollInput.js";
4
+ import { useRef as n } from "react";
5
+ //#region src/react/ink-components/InkScrollView/utils/useInkScrollInput.ts
6
+ var r = ({ enabled: r, keyboardTarget: i, mouseTargets: a, onInputEvent: o }) => {
7
+ let s = n(void 0);
8
+ e((e) => {
9
+ o?.(e) || t(e, {
10
+ keyboardTarget: i,
11
+ mouseTargets: a,
12
+ draggingTargetIdRef: s
13
+ });
14
+ }, { isActive: r });
15
+ };
16
+ //#endregion
17
+ export { r as useInkScrollInput };
@@ -0,0 +1,9 @@
1
+ import { TextProps } from 'ink';
2
+ import { FC } from 'react';
3
+ export type InkTimerProps = {
4
+ active?: boolean;
5
+ intervalMs?: number;
6
+ onStop?: (elapsedMs: number) => void;
7
+ formatTime?: (seconds: number) => string;
8
+ } & Pick<TextProps, "bold" | "color" | "dimColor">;
9
+ export declare const InkTimer: FC<InkTimerProps>;
@@ -0,0 +1,26 @@
1
+ import { useEffect as e, useRef as t, useState as n } from "react";
2
+ import { jsx as r } from "react/jsx-runtime";
3
+ import { useInterval as i } from "ahooks";
4
+ import { Text as a } from "ink";
5
+ //#region src/react/ink-components/InkTimer/InkTimer.tsx
6
+ var o = (e) => `${Math.round(Math.max(0, e))}s`, s = ({ active: s = !0, bold: c, color: l, dimColor: u, formatTime: d = o, intervalMs: f = 1e3, onStop: p }) => {
7
+ let [m, h] = n(0), g = t(void 0);
8
+ return e(() => {
9
+ if (s) {
10
+ g.current = Date.now(), h(0);
11
+ return;
12
+ }
13
+ if (g.current === void 0) return;
14
+ let e = Date.now() - g.current;
15
+ g.current = void 0, h(e), p?.(e);
16
+ }, [s, p]), i(() => {
17
+ g.current !== void 0 && h(Date.now() - g.current);
18
+ }, s ? f : void 0), /* @__PURE__ */ r(a, {
19
+ ...c === void 0 ? {} : { bold: c },
20
+ ...l === void 0 ? {} : { color: l },
21
+ ...u === void 0 ? {} : { dimColor: u },
22
+ children: d(m / 1e3)
23
+ });
24
+ };
25
+ //#endregion
26
+ export { s as InkTimer };
@@ -0,0 +1 @@
1
+ export * from './InkTimer.js';
@@ -0,0 +1,2 @@
1
+ import { InkTimer as e } from "./InkTimer.js";
2
+ export { e as InkTimer };
@@ -0,0 +1,4 @@
1
+ export * from './InkTimer/index.js';
2
+ export * from './InkMultiSelect/index.js';
3
+ export * from './InkScrollView/index.js';
4
+ export * from './InkModal/index.js';