@ryuzaki13/react-foundation-lib 0.1.1

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 (570) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +654 -0
  3. package/dist/array/array.d.ts +30 -0
  4. package/dist/array/array.d.ts.map +1 -0
  5. package/dist/array/index.d.ts +3 -0
  6. package/dist/array/index.d.ts.map +1 -0
  7. package/dist/array/index.js +2 -0
  8. package/dist/array/reorder.d.ts +10 -0
  9. package/dist/array/reorder.d.ts.map +1 -0
  10. package/dist/auth/getClientFingerprint.d.ts +2 -0
  11. package/dist/auth/getClientFingerprint.d.ts.map +1 -0
  12. package/dist/binary/binaryToBlob.d.ts +13 -0
  13. package/dist/binary/binaryToBlob.d.ts.map +1 -0
  14. package/dist/binary/index.d.ts +3 -0
  15. package/dist/binary/index.d.ts.map +1 -0
  16. package/dist/binary/index.js +126 -0
  17. package/dist/binary/index.js.map +1 -0
  18. package/dist/binary/useBinaryFile.d.ts +8 -0
  19. package/dist/binary/useBinaryFile.d.ts.map +1 -0
  20. package/dist/bounded-copy-stack/boundedCopyStack.d.ts +26 -0
  21. package/dist/bounded-copy-stack/boundedCopyStack.d.ts.map +1 -0
  22. package/dist/bounded-copy-stack/index.d.ts +2 -0
  23. package/dist/bounded-copy-stack/index.d.ts.map +1 -0
  24. package/dist/bounded-copy-stack/index.js +26 -0
  25. package/dist/bounded-copy-stack/index.js.map +1 -0
  26. package/dist/chunks/array-BBSjoTRy.js +146 -0
  27. package/dist/chunks/array-BBSjoTRy.js.map +1 -0
  28. package/dist/chunks/dateUtils-D9dpdTl7.js +760 -0
  29. package/dist/chunks/dateUtils-D9dpdTl7.js.map +1 -0
  30. package/dist/chunks/formatters-CQppb89D.js +1234 -0
  31. package/dist/chunks/formatters-CQppb89D.js.map +1 -0
  32. package/dist/chunks/formulas-BxcH5Zjt.js +279 -0
  33. package/dist/chunks/formulas-BxcH5Zjt.js.map +1 -0
  34. package/dist/chunks/isRecord-DXDTW-jA.js +18 -0
  35. package/dist/chunks/isRecord-DXDTW-jA.js.map +1 -0
  36. package/dist/chunks/odata-service-BAYf08WI.js +1223 -0
  37. package/dist/chunks/odata-service-BAYf08WI.js.map +1 -0
  38. package/dist/chunks/string-comparison-BKT7PXmq.js +20 -0
  39. package/dist/chunks/string-comparison-BKT7PXmq.js.map +1 -0
  40. package/dist/chunks/validate-BChpTW6y.js +468 -0
  41. package/dist/chunks/validate-BChpTW6y.js.map +1 -0
  42. package/dist/context-menu/anchor.d.ts +19 -0
  43. package/dist/context-menu/anchor.d.ts.map +1 -0
  44. package/dist/context-menu/index.d.ts +4 -0
  45. package/dist/context-menu/index.d.ts.map +1 -0
  46. package/dist/context-menu/index.js +57 -0
  47. package/dist/context-menu/index.js.map +1 -0
  48. package/dist/context-menu/state.d.ts +6 -0
  49. package/dist/context-menu/state.d.ts.map +1 -0
  50. package/dist/context-menu/types.d.ts +25 -0
  51. package/dist/context-menu/types.d.ts.map +1 -0
  52. package/dist/copy/index.d.ts +5 -0
  53. package/dist/copy/index.d.ts.map +1 -0
  54. package/dist/copy/index.js +56 -0
  55. package/dist/copy/index.js.map +1 -0
  56. package/dist/copy/useCopyElementText.d.ts +6 -0
  57. package/dist/copy/useCopyElementText.d.ts.map +1 -0
  58. package/dist/copy/useCopyFeedback.d.ts +11 -0
  59. package/dist/copy/useCopyFeedback.d.ts.map +1 -0
  60. package/dist/copy/useCopyText.d.ts +4 -0
  61. package/dist/copy/useCopyText.d.ts.map +1 -0
  62. package/dist/copy/useElementText.d.ts +5 -0
  63. package/dist/copy/useElementText.d.ts.map +1 -0
  64. package/dist/crypto/hashString.d.ts +5 -0
  65. package/dist/crypto/hashString.d.ts.map +1 -0
  66. package/dist/crypto/index.d.ts +3 -0
  67. package/dist/crypto/index.d.ts.map +1 -0
  68. package/dist/crypto/index.js +62 -0
  69. package/dist/crypto/index.js.map +1 -0
  70. package/dist/crypto/uuid.d.ts +5 -0
  71. package/dist/crypto/uuid.d.ts.map +1 -0
  72. package/dist/currency/currency.d.ts +8 -0
  73. package/dist/currency/currency.d.ts.map +1 -0
  74. package/dist/currency/index.d.ts +2 -0
  75. package/dist/currency/index.d.ts.map +1 -0
  76. package/dist/currency/index.js +16 -0
  77. package/dist/currency/index.js.map +1 -0
  78. package/dist/date-segments/index.d.ts +3 -0
  79. package/dist/date-segments/index.d.ts.map +1 -0
  80. package/dist/date-segments/index.js +160 -0
  81. package/dist/date-segments/index.js.map +1 -0
  82. package/dist/date-segments/mask.d.ts +54 -0
  83. package/dist/date-segments/mask.d.ts.map +1 -0
  84. package/dist/dom/downloadFile.d.ts +4 -0
  85. package/dist/dom/downloadFile.d.ts.map +1 -0
  86. package/dist/dom/getOrCreatePortalRoot.d.ts +2 -0
  87. package/dist/dom/getOrCreatePortalRoot.d.ts.map +1 -0
  88. package/dist/dom/index.d.ts +10 -0
  89. package/dist/dom/index.d.ts.map +1 -0
  90. package/dist/dom/index.js +159 -0
  91. package/dist/dom/index.js.map +1 -0
  92. package/dist/dom/useClickOutside.d.ts +3 -0
  93. package/dist/dom/useClickOutside.d.ts.map +1 -0
  94. package/dist/dom/useElementHeightObserver.d.ts +3 -0
  95. package/dist/dom/useElementHeightObserver.d.ts.map +1 -0
  96. package/dist/dom/useEscapeDismiss.d.ts +14 -0
  97. package/dist/dom/useEscapeDismiss.d.ts.map +1 -0
  98. package/dist/dom/useFocusTrap.d.ts +5 -0
  99. package/dist/dom/useFocusTrap.d.ts.map +1 -0
  100. package/dist/dom/useIntersectionObserver.d.ts +4 -0
  101. package/dist/dom/useIntersectionObserver.d.ts.map +1 -0
  102. package/dist/dom/useIsTouchDevice.d.ts +2 -0
  103. package/dist/dom/useIsTouchDevice.d.ts.map +1 -0
  104. package/dist/dom/useOverlayFocus.d.ts +14 -0
  105. package/dist/dom/useOverlayFocus.d.ts.map +1 -0
  106. package/dist/error/index.d.ts +2 -0
  107. package/dist/error/index.d.ts.map +1 -0
  108. package/dist/error/index.js +20 -0
  109. package/dist/error/index.js.map +1 -0
  110. package/dist/error/missingContextError.d.ts +14 -0
  111. package/dist/error/missingContextError.d.ts.map +1 -0
  112. package/dist/error-report/breadcrumbs.d.ts +11 -0
  113. package/dist/error-report/breadcrumbs.d.ts.map +1 -0
  114. package/dist/error-report/capture.d.ts +6 -0
  115. package/dist/error-report/capture.d.ts.map +1 -0
  116. package/dist/error-report/diagnostics.d.ts +29 -0
  117. package/dist/error-report/diagnostics.d.ts.map +1 -0
  118. package/dist/error-report/drafts.d.ts +25 -0
  119. package/dist/error-report/drafts.d.ts.map +1 -0
  120. package/dist/error-report/environment.d.ts +19 -0
  121. package/dist/error-report/environment.d.ts.map +1 -0
  122. package/dist/error-report/errorInfo.d.ts +7 -0
  123. package/dist/error-report/errorInfo.d.ts.map +1 -0
  124. package/dist/error-report/index.d.ts +11 -0
  125. package/dist/error-report/index.d.ts.map +1 -0
  126. package/dist/error-report/index.js +464 -0
  127. package/dist/error-report/index.js.map +1 -0
  128. package/dist/error-report/runtime.d.ts +26 -0
  129. package/dist/error-report/runtime.d.ts.map +1 -0
  130. package/dist/error-report/safeValue.d.ts +14 -0
  131. package/dist/error-report/safeValue.d.ts.map +1 -0
  132. package/dist/error-report/transport.d.ts +32 -0
  133. package/dist/error-report/transport.d.ts.map +1 -0
  134. package/dist/error-report/types.d.ts +123 -0
  135. package/dist/error-report/types.d.ts.map +1 -0
  136. package/dist/excel/excel.d.ts +52 -0
  137. package/dist/excel/excel.d.ts.map +1 -0
  138. package/dist/excel/index.d.ts +3 -0
  139. package/dist/excel/index.d.ts.map +1 -0
  140. package/dist/excel/index.js +139 -0
  141. package/dist/excel/index.js.map +1 -0
  142. package/dist/excel/tableExport.d.ts +26 -0
  143. package/dist/excel/tableExport.d.ts.map +1 -0
  144. package/dist/file/contentDisposition.d.ts +11 -0
  145. package/dist/file/contentDisposition.d.ts.map +1 -0
  146. package/dist/file/image/index.d.ts +3 -0
  147. package/dist/file/image/index.d.ts.map +1 -0
  148. package/dist/file/image/readImageFile.d.ts +8 -0
  149. package/dist/file/image/readImageFile.d.ts.map +1 -0
  150. package/dist/file/image/types.d.ts +30 -0
  151. package/dist/file/image/types.d.ts.map +1 -0
  152. package/dist/file/index.d.ts +5 -0
  153. package/dist/file/index.d.ts.map +1 -0
  154. package/dist/file/index.js +211 -0
  155. package/dist/file/index.js.map +1 -0
  156. package/dist/file/mimeType.d.ts +2 -0
  157. package/dist/file/mimeType.d.ts.map +1 -0
  158. package/dist/file/read-file/assert.d.ts +4 -0
  159. package/dist/file/read-file/assert.d.ts.map +1 -0
  160. package/dist/file/read-file/index.d.ts +4 -0
  161. package/dist/file/read-file/index.d.ts.map +1 -0
  162. package/dist/file/read-file/readFile.d.ts +14 -0
  163. package/dist/file/read-file/readFile.d.ts.map +1 -0
  164. package/dist/file/read-file/types.d.ts +43 -0
  165. package/dist/file/read-file/types.d.ts.map +1 -0
  166. package/dist/form/formErrors.d.ts +2 -0
  167. package/dist/form/formErrors.d.ts.map +1 -0
  168. package/dist/form/index.d.ts +2 -0
  169. package/dist/form/index.d.ts.map +1 -0
  170. package/dist/form/index.js +19 -0
  171. package/dist/form/index.js.map +1 -0
  172. package/dist/formatters/boolean/index.d.ts +3 -0
  173. package/dist/formatters/boolean/index.d.ts.map +1 -0
  174. package/dist/formatters/boolean/parseAbapBoolean.d.ts +3 -0
  175. package/dist/formatters/boolean/parseAbapBoolean.d.ts.map +1 -0
  176. package/dist/formatters/boolean/toAbapBoolean.d.ts +3 -0
  177. package/dist/formatters/boolean/toAbapBoolean.d.ts.map +1 -0
  178. package/dist/formatters/date/calendarDate.d.ts +48 -0
  179. package/dist/formatters/date/calendarDate.d.ts.map +1 -0
  180. package/dist/formatters/date/calendarPeriod.d.ts +33 -0
  181. package/dist/formatters/date/calendarPeriod.d.ts.map +1 -0
  182. package/dist/formatters/date/dateRange.d.ts +25 -0
  183. package/dist/formatters/date/dateRange.d.ts.map +1 -0
  184. package/dist/formatters/date/educationDate.d.ts +79 -0
  185. package/dist/formatters/date/educationDate.d.ts.map +1 -0
  186. package/dist/formatters/date/formatDate.d.ts +98 -0
  187. package/dist/formatters/date/formatDate.d.ts.map +1 -0
  188. package/dist/formatters/date/index.d.ts +14 -0
  189. package/dist/formatters/date/index.d.ts.map +1 -0
  190. package/dist/formatters/date/parseDate.d.ts +44 -0
  191. package/dist/formatters/date/parseDate.d.ts.map +1 -0
  192. package/dist/formatters/date/pattern.d.ts +38 -0
  193. package/dist/formatters/date/pattern.d.ts.map +1 -0
  194. package/dist/formatters/date/presets.d.ts +108 -0
  195. package/dist/formatters/date/presets.d.ts.map +1 -0
  196. package/dist/formatters/date/relativeRanges.d.ts +35 -0
  197. package/dist/formatters/date/relativeRanges.d.ts.map +1 -0
  198. package/dist/formatters/date/types.d.ts +70 -0
  199. package/dist/formatters/date/types.d.ts.map +1 -0
  200. package/dist/formatters/formatName.d.ts +13 -0
  201. package/dist/formatters/formatName.d.ts.map +1 -0
  202. package/dist/formatters/formatPhone.d.ts +3 -0
  203. package/dist/formatters/formatPhone.d.ts.map +1 -0
  204. package/dist/formatters/formatTagAsHashtag.d.ts +6 -0
  205. package/dist/formatters/formatTagAsHashtag.d.ts.map +1 -0
  206. package/dist/formatters/index.d.ts +11 -0
  207. package/dist/formatters/index.d.ts.map +1 -0
  208. package/dist/formatters/index.js +6 -0
  209. package/dist/formatters/normalizeLeadingZeros.d.ts +27 -0
  210. package/dist/formatters/normalizeLeadingZeros.d.ts.map +1 -0
  211. package/dist/formatters/number/compact.d.ts +10 -0
  212. package/dist/formatters/number/compact.d.ts.map +1 -0
  213. package/dist/formatters/number/formatCompactNumber.d.ts +49 -0
  214. package/dist/formatters/number/formatCompactNumber.d.ts.map +1 -0
  215. package/dist/formatters/number/formatNumber.d.ts +93 -0
  216. package/dist/formatters/number/formatNumber.d.ts.map +1 -0
  217. package/dist/formatters/number/index.d.ts +6 -0
  218. package/dist/formatters/number/index.d.ts.map +1 -0
  219. package/dist/formatters/number/isZeroValue.d.ts +5 -0
  220. package/dist/formatters/number/isZeroValue.d.ts.map +1 -0
  221. package/dist/formatters/number/parseNumber.d.ts +12 -0
  222. package/dist/formatters/number/parseNumber.d.ts.map +1 -0
  223. package/dist/formatters/number/presets.d.ts +24 -0
  224. package/dist/formatters/number/presets.d.ts.map +1 -0
  225. package/dist/formatters/number/types.d.ts +46 -0
  226. package/dist/formatters/number/types.d.ts.map +1 -0
  227. package/dist/formatters/pipeline/clone.d.ts +15 -0
  228. package/dist/formatters/pipeline/clone.d.ts.map +1 -0
  229. package/dist/formatters/pipeline/definitions.d.ts +14 -0
  230. package/dist/formatters/pipeline/definitions.d.ts.map +1 -0
  231. package/dist/formatters/pipeline/dependencies.d.ts +38 -0
  232. package/dist/formatters/pipeline/dependencies.d.ts.map +1 -0
  233. package/dist/formatters/pipeline/execute.d.ts +21 -0
  234. package/dist/formatters/pipeline/execute.d.ts.map +1 -0
  235. package/dist/formatters/pipeline/index.d.ts +10 -0
  236. package/dist/formatters/pipeline/index.d.ts.map +1 -0
  237. package/dist/formatters/pipeline/normalize.d.ts +3 -0
  238. package/dist/formatters/pipeline/normalize.d.ts.map +1 -0
  239. package/dist/formatters/pipeline/registry.d.ts +11 -0
  240. package/dist/formatters/pipeline/registry.d.ts.map +1 -0
  241. package/dist/formatters/pipeline/rekey.d.ts +11 -0
  242. package/dist/formatters/pipeline/rekey.d.ts.map +1 -0
  243. package/dist/formatters/pipeline/runtime.d.ts +17 -0
  244. package/dist/formatters/pipeline/runtime.d.ts.map +1 -0
  245. package/dist/formatters/pipeline/types.d.ts +379 -0
  246. package/dist/formatters/pipeline/types.d.ts.map +1 -0
  247. package/dist/formatters/pipeline/validate.d.ts +29 -0
  248. package/dist/formatters/pipeline/validate.d.ts.map +1 -0
  249. package/dist/formatters/rowBased/context.d.ts +9 -0
  250. package/dist/formatters/rowBased/context.d.ts.map +1 -0
  251. package/dist/formatters/rowBased/definitions/index.d.ts +6 -0
  252. package/dist/formatters/rowBased/definitions/index.d.ts.map +1 -0
  253. package/dist/formatters/rowBased/index.d.ts +4 -0
  254. package/dist/formatters/rowBased/index.d.ts.map +1 -0
  255. package/dist/formatters/rowBased/registry.d.ts +19 -0
  256. package/dist/formatters/rowBased/registry.d.ts.map +1 -0
  257. package/dist/formatters/rowBased/types.d.ts +29 -0
  258. package/dist/formatters/rowBased/types.d.ts.map +1 -0
  259. package/dist/formatters/strings/index.d.ts +6 -0
  260. package/dist/formatters/strings/index.d.ts.map +1 -0
  261. package/dist/formatters/strings/normalizeText.d.ts +11 -0
  262. package/dist/formatters/strings/normalizeText.d.ts.map +1 -0
  263. package/dist/formatters/strings/startsWithIgnoringZeros.d.ts +2 -0
  264. package/dist/formatters/strings/startsWithIgnoringZeros.d.ts.map +1 -0
  265. package/dist/formatters/strings/stripInnerSpaces.d.ts +6 -0
  266. package/dist/formatters/strings/stripInnerSpaces.d.ts.map +1 -0
  267. package/dist/formatters/strings/stripLeadingZeros.d.ts +10 -0
  268. package/dist/formatters/strings/stripLeadingZeros.d.ts.map +1 -0
  269. package/dist/formatters/strings/truncateText.d.ts +2 -0
  270. package/dist/formatters/strings/truncateText.d.ts.map +1 -0
  271. package/dist/formatters/valueState/fixedValueStateResolver.d.ts +41 -0
  272. package/dist/formatters/valueState/fixedValueStateResolver.d.ts.map +1 -0
  273. package/dist/formatters/valueState/index.d.ts +7 -0
  274. package/dist/formatters/valueState/index.d.ts.map +1 -0
  275. package/dist/formatters/valueState/presentation.d.ts +4 -0
  276. package/dist/formatters/valueState/presentation.d.ts.map +1 -0
  277. package/dist/formatters/valueState/resolveValueStateClassName.d.ts +3 -0
  278. package/dist/formatters/valueState/resolveValueStateClassName.d.ts.map +1 -0
  279. package/dist/formatters/valueState/thresholdValueStateResolver.d.ts +40 -0
  280. package/dist/formatters/valueState/thresholdValueStateResolver.d.ts.map +1 -0
  281. package/dist/formatters/valueState/types.d.ts +35 -0
  282. package/dist/formatters/valueState/types.d.ts.map +1 -0
  283. package/dist/formatters/valueState/valueStateRegistry.d.ts +45 -0
  284. package/dist/formatters/valueState/valueStateRegistry.d.ts.map +1 -0
  285. package/dist/formulas/definitions/base.d.ts +7 -0
  286. package/dist/formulas/definitions/base.d.ts.map +1 -0
  287. package/dist/formulas/definitions/index.d.ts +3 -0
  288. package/dist/formulas/definitions/index.d.ts.map +1 -0
  289. package/dist/formulas/definitions/sales.d.ts +7 -0
  290. package/dist/formulas/definitions/sales.d.ts.map +1 -0
  291. package/dist/formulas/execute.d.ts +36 -0
  292. package/dist/formulas/execute.d.ts.map +1 -0
  293. package/dist/formulas/index.d.ts +5 -0
  294. package/dist/formulas/index.d.ts.map +1 -0
  295. package/dist/formulas/index.js +2 -0
  296. package/dist/formulas/perf.runtime.d.ts +48 -0
  297. package/dist/formulas/perf.runtime.d.ts.map +1 -0
  298. package/dist/formulas/registry.d.ts +10 -0
  299. package/dist/formulas/registry.d.ts.map +1 -0
  300. package/dist/formulas/types.d.ts +16 -0
  301. package/dist/formulas/types.d.ts.map +1 -0
  302. package/dist/formulas/validate.d.ts +22 -0
  303. package/dist/formulas/validate.d.ts.map +1 -0
  304. package/dist/hooks/index.d.ts +11 -0
  305. package/dist/hooks/index.d.ts.map +1 -0
  306. package/dist/hooks/index.js +291 -0
  307. package/dist/hooks/index.js.map +1 -0
  308. package/dist/hooks/types.d.ts +4 -0
  309. package/dist/hooks/types.d.ts.map +1 -0
  310. package/dist/hooks/useBlockBrowserZoom.d.ts +7 -0
  311. package/dist/hooks/useBlockBrowserZoom.d.ts.map +1 -0
  312. package/dist/hooks/useDebounce.d.ts +2 -0
  313. package/dist/hooks/useDebounce.d.ts.map +1 -0
  314. package/dist/hooks/useDebounceCallback.d.ts +22 -0
  315. package/dist/hooks/useDebounceCallback.d.ts.map +1 -0
  316. package/dist/hooks/useDndSortableSensors.d.ts +13 -0
  317. package/dist/hooks/useDndSortableSensors.d.ts.map +1 -0
  318. package/dist/hooks/useFloatingListbox.d.ts +61 -0
  319. package/dist/hooks/useFloatingListbox.d.ts.map +1 -0
  320. package/dist/hooks/useLazyComponent.d.ts +28 -0
  321. package/dist/hooks/useLazyComponent.d.ts.map +1 -0
  322. package/dist/hooks/useReferenceTrace.d.ts +2 -0
  323. package/dist/hooks/useReferenceTrace.d.ts.map +1 -0
  324. package/dist/hooks/useSearchLink.d.ts +5 -0
  325. package/dist/hooks/useSearchLink.d.ts.map +1 -0
  326. package/dist/hooks/useSearchParams.d.ts +8 -0
  327. package/dist/hooks/useSearchParams.d.ts.map +1 -0
  328. package/dist/hooks/useThrottledCallback.d.ts +43 -0
  329. package/dist/hooks/useThrottledCallback.d.ts.map +1 -0
  330. package/dist/http/httpHeaders.d.ts +3 -0
  331. package/dist/http/httpHeaders.d.ts.map +1 -0
  332. package/dist/http/index.d.ts +3 -0
  333. package/dist/http/index.d.ts.map +1 -0
  334. package/dist/http/index.js +18 -0
  335. package/dist/http/index.js.map +1 -0
  336. package/dist/http/textResponse.d.ts +7 -0
  337. package/dist/http/textResponse.d.ts.map +1 -0
  338. package/dist/media/breakpoints.d.ts +9 -0
  339. package/dist/media/breakpoints.d.ts.map +1 -0
  340. package/dist/media/getCurrentFontSize.d.ts +4 -0
  341. package/dist/media/getCurrentFontSize.d.ts.map +1 -0
  342. package/dist/media/index.d.ts +7 -0
  343. package/dist/media/index.d.ts.map +1 -0
  344. package/dist/media/index.js +147 -0
  345. package/dist/media/index.js.map +1 -0
  346. package/dist/media/pxToEm.d.ts +2 -0
  347. package/dist/media/pxToEm.d.ts.map +1 -0
  348. package/dist/media/responsive.d.ts +29 -0
  349. package/dist/media/responsive.d.ts.map +1 -0
  350. package/dist/media/useMatchMedia.d.ts +15 -0
  351. package/dist/media/useMatchMedia.d.ts.map +1 -0
  352. package/dist/media/useMediaQuery.d.ts +10 -0
  353. package/dist/media/useMediaQuery.d.ts.map +1 -0
  354. package/dist/notifications/index.d.ts +4 -0
  355. package/dist/notifications/index.d.ts.map +1 -0
  356. package/dist/notifications/index.js +124 -0
  357. package/dist/notifications/index.js.map +1 -0
  358. package/dist/notifications/notify.d.ts +32 -0
  359. package/dist/notifications/notify.d.ts.map +1 -0
  360. package/dist/notifications/store.d.ts +31 -0
  361. package/dist/notifications/store.d.ts.map +1 -0
  362. package/dist/notifications/types.d.ts +19 -0
  363. package/dist/notifications/types.d.ts.map +1 -0
  364. package/dist/number-scale/index.d.ts +3 -0
  365. package/dist/number-scale/index.d.ts.map +1 -0
  366. package/dist/number-scale/index.js +99 -0
  367. package/dist/number-scale/index.js.map +1 -0
  368. package/dist/number-scale/numberScale.d.ts +52 -0
  369. package/dist/number-scale/numberScale.d.ts.map +1 -0
  370. package/dist/number-scale/types.d.ts +44 -0
  371. package/dist/number-scale/types.d.ts.map +1 -0
  372. package/dist/odata/buildSeparatedArrays.d.ts +10 -0
  373. package/dist/odata/buildSeparatedArrays.d.ts.map +1 -0
  374. package/dist/odata/dateUtils.d.ts +14 -0
  375. package/dist/odata/dateUtils.d.ts.map +1 -0
  376. package/dist/odata/findCollectionPairs.d.ts +11 -0
  377. package/dist/odata/findCollectionPairs.d.ts.map +1 -0
  378. package/dist/odata/index.d.ts +6 -0
  379. package/dist/odata/index.d.ts.map +1 -0
  380. package/dist/odata/index.js +102 -0
  381. package/dist/odata/index.js.map +1 -0
  382. package/dist/odata/store.d.ts +42 -0
  383. package/dist/odata/store.d.ts.map +1 -0
  384. package/dist/odata/types.d.ts +12 -0
  385. package/dist/odata/types.d.ts.map +1 -0
  386. package/dist/odata-service/baseTypes.d.ts +6 -0
  387. package/dist/odata-service/baseTypes.d.ts.map +1 -0
  388. package/dist/odata-service/builder.d.ts +33 -0
  389. package/dist/odata-service/builder.d.ts.map +1 -0
  390. package/dist/odata-service/columns.d.ts +10 -0
  391. package/dist/odata-service/columns.d.ts.map +1 -0
  392. package/dist/odata-service/filterDefinitions.d.ts +113 -0
  393. package/dist/odata-service/filterDefinitions.d.ts.map +1 -0
  394. package/dist/odata-service/filters.d.ts +75 -0
  395. package/dist/odata-service/filters.d.ts.map +1 -0
  396. package/dist/odata-service/formatters.d.ts +33 -0
  397. package/dist/odata-service/formatters.d.ts.map +1 -0
  398. package/dist/odata-service/index.d.ts +16 -0
  399. package/dist/odata-service/index.d.ts.map +1 -0
  400. package/dist/odata-service/index.js +2 -0
  401. package/dist/odata-service/parser.d.ts +14 -0
  402. package/dist/odata-service/parser.d.ts.map +1 -0
  403. package/dist/odata-service/schema.d.ts +8 -0
  404. package/dist/odata-service/schema.d.ts.map +1 -0
  405. package/dist/odata-service/sorts.d.ts +26 -0
  406. package/dist/odata-service/sorts.d.ts.map +1 -0
  407. package/dist/odata-service/sqlFilters.d.ts +32 -0
  408. package/dist/odata-service/sqlFilters.d.ts.map +1 -0
  409. package/dist/odata-service/types.d.ts +166 -0
  410. package/dist/odata-service/types.d.ts.map +1 -0
  411. package/dist/odata-service/typesValidation.d.ts +6 -0
  412. package/dist/odata-service/typesValidation.d.ts.map +1 -0
  413. package/dist/odata-service/unwrapODataQueryResult.d.ts +22 -0
  414. package/dist/odata-service/unwrapODataQueryResult.d.ts.map +1 -0
  415. package/dist/odata-service/utils.d.ts +5 -0
  416. package/dist/odata-service/utils.d.ts.map +1 -0
  417. package/dist/odata-service/wrapParams.d.ts +7 -0
  418. package/dist/odata-service/wrapParams.d.ts.map +1 -0
  419. package/dist/presets/index.d.ts +2 -0
  420. package/dist/presets/index.d.ts.map +1 -0
  421. package/dist/presets/index.js +23 -0
  422. package/dist/presets/index.js.map +1 -0
  423. package/dist/presets/presets.d.ts +20 -0
  424. package/dist/presets/presets.d.ts.map +1 -0
  425. package/dist/pwa/index.d.ts +3 -0
  426. package/dist/pwa/index.d.ts.map +1 -0
  427. package/dist/pwa/index.js +206 -0
  428. package/dist/pwa/index.js.map +1 -0
  429. package/dist/pwa/serviceWorker.d.ts +31 -0
  430. package/dist/pwa/serviceWorker.d.ts.map +1 -0
  431. package/dist/pwa/swCachePolicy.d.ts +24 -0
  432. package/dist/pwa/swCachePolicy.d.ts.map +1 -0
  433. package/dist/pwa/useServiceWorkerUpdate.d.ts +6 -0
  434. package/dist/pwa/useServiceWorkerUpdate.d.ts.map +1 -0
  435. package/dist/query-client/broadcast.d.ts +23 -0
  436. package/dist/query-client/broadcast.d.ts.map +1 -0
  437. package/dist/query-client/index.d.ts +5 -0
  438. package/dist/query-client/index.d.ts.map +1 -0
  439. package/dist/query-client/index.js +204 -0
  440. package/dist/query-client/index.js.map +1 -0
  441. package/dist/query-client/persistence.d.ts +33 -0
  442. package/dist/query-client/persistence.d.ts.map +1 -0
  443. package/dist/query-client/queryClient.d.ts +127 -0
  444. package/dist/query-client/queryClient.d.ts.map +1 -0
  445. package/dist/query-client/queryPersistenceAdapter.d.ts +7 -0
  446. package/dist/query-client/queryPersistenceAdapter.d.ts.map +1 -0
  447. package/dist/range-output/index.d.ts +2 -0
  448. package/dist/range-output/index.d.ts.map +1 -0
  449. package/dist/range-output/index.js +22 -0
  450. package/dist/range-output/index.js.map +1 -0
  451. package/dist/range-output/rangeOutput.d.ts +15 -0
  452. package/dist/range-output/rangeOutput.d.ts.map +1 -0
  453. package/dist/seo/index.d.ts +3 -0
  454. package/dist/seo/index.d.ts.map +1 -0
  455. package/dist/seo/index.js +125 -0
  456. package/dist/seo/index.js.map +1 -0
  457. package/dist/seo/seo.d.ts +16 -0
  458. package/dist/seo/seo.d.ts.map +1 -0
  459. package/dist/seo/types.d.ts +28 -0
  460. package/dist/seo/types.d.ts.map +1 -0
  461. package/dist/session-storage/index.d.ts +2 -0
  462. package/dist/session-storage/index.d.ts.map +1 -0
  463. package/dist/session-storage/index.js +17 -0
  464. package/dist/session-storage/index.js.map +1 -0
  465. package/dist/session-storage/sessionId.d.ts +8 -0
  466. package/dist/session-storage/sessionId.d.ts.map +1 -0
  467. package/dist/string-comparison/compareStrings.d.ts +9 -0
  468. package/dist/string-comparison/compareStrings.d.ts.map +1 -0
  469. package/dist/string-comparison/index.d.ts +2 -0
  470. package/dist/string-comparison/index.d.ts.map +1 -0
  471. package/dist/string-comparison/index.js +2 -0
  472. package/dist/table/columnLayout.d.ts +23 -0
  473. package/dist/table/columnLayout.d.ts.map +1 -0
  474. package/dist/table/columnOrder.d.ts +21 -0
  475. package/dist/table/columnOrder.d.ts.map +1 -0
  476. package/dist/table/columnSizing.d.ts +7 -0
  477. package/dist/table/columnSizing.d.ts.map +1 -0
  478. package/dist/table/index.d.ts +9 -0
  479. package/dist/table/index.d.ts.map +1 -0
  480. package/dist/table/index.js +229 -0
  481. package/dist/table/index.js.map +1 -0
  482. package/dist/table/odataAdapter.d.ts +63 -0
  483. package/dist/table/odataAdapter.d.ts.map +1 -0
  484. package/dist/table/selection.d.ts +16 -0
  485. package/dist/table/selection.d.ts.map +1 -0
  486. package/dist/table/types.d.ts +60 -0
  487. package/dist/table/types.d.ts.map +1 -0
  488. package/dist/table/useTableRowSelection.d.ts +19 -0
  489. package/dist/table/useTableRowSelection.d.ts.map +1 -0
  490. package/dist/table/utils.d.ts +20 -0
  491. package/dist/table/utils.d.ts.map +1 -0
  492. package/dist/three-scene/index.d.ts +3 -0
  493. package/dist/three-scene/index.d.ts.map +1 -0
  494. package/dist/three-scene/index.js +84 -0
  495. package/dist/three-scene/index.js.map +1 -0
  496. package/dist/three-scene/threeSceneAvailability.d.ts +15 -0
  497. package/dist/three-scene/threeSceneAvailability.d.ts.map +1 -0
  498. package/dist/three-scene/useThreeSceneAvailability.d.ts +8 -0
  499. package/dist/three-scene/useThreeSceneAvailability.d.ts.map +1 -0
  500. package/dist/tree-table/buildTreeTableRows.d.ts +9 -0
  501. package/dist/tree-table/buildTreeTableRows.d.ts.map +1 -0
  502. package/dist/tree-table/index.d.ts +4 -0
  503. package/dist/tree-table/index.d.ts.map +1 -0
  504. package/dist/tree-table/index.js +126 -0
  505. package/dist/tree-table/index.js.map +1 -0
  506. package/dist/tree-table/transposeFlatRowsToTreeTableRows.d.ts +11 -0
  507. package/dist/tree-table/transposeFlatRowsToTreeTableRows.d.ts.map +1 -0
  508. package/dist/tree-table/types.d.ts +87 -0
  509. package/dist/tree-table/types.d.ts.map +1 -0
  510. package/dist/types/index.d.ts +2 -0
  511. package/dist/types/index.d.ts.map +1 -0
  512. package/dist/types/index.js +8 -0
  513. package/dist/types/index.js.map +1 -0
  514. package/dist/types/types.d.ts +12 -0
  515. package/dist/types/types.d.ts.map +1 -0
  516. package/dist/utils/childrenCount.d.ts +3 -0
  517. package/dist/utils/childrenCount.d.ts.map +1 -0
  518. package/dist/utils/cn.d.ts +6 -0
  519. package/dist/utils/cn.d.ts.map +1 -0
  520. package/dist/utils/createLazyComponent.d.ts +22 -0
  521. package/dist/utils/createLazyComponent.d.ts.map +1 -0
  522. package/dist/utils/deepCloneWithoutFunctions.d.ts +20 -0
  523. package/dist/utils/deepCloneWithoutFunctions.d.ts.map +1 -0
  524. package/dist/utils/deepCopyWithoutFunctions.d.ts +10 -0
  525. package/dist/utils/deepCopyWithoutFunctions.d.ts.map +1 -0
  526. package/dist/utils/index.d.ts +17 -0
  527. package/dist/utils/index.d.ts.map +1 -0
  528. package/dist/utils/index.js +209 -0
  529. package/dist/utils/index.js.map +1 -0
  530. package/dist/utils/keyboard.d.ts +36 -0
  531. package/dist/utils/keyboard.d.ts.map +1 -0
  532. package/dist/utils/logger.d.ts +2 -0
  533. package/dist/utils/logger.d.ts.map +1 -0
  534. package/dist/utils/selectNavigation.d.ts +8 -0
  535. package/dist/utils/selectNavigation.d.ts.map +1 -0
  536. package/dist/utils/stableStringify.d.ts +8 -0
  537. package/dist/utils/stableStringify.d.ts.map +1 -0
  538. package/dist/utils/toBase64.d.ts +3 -0
  539. package/dist/utils/toBase64.d.ts.map +1 -0
  540. package/dist/utils/treeNode.d.ts +9 -0
  541. package/dist/utils/treeNode.d.ts.map +1 -0
  542. package/dist/validators/index.d.ts +7 -0
  543. package/dist/validators/index.d.ts.map +1 -0
  544. package/dist/validators/index.js +54 -0
  545. package/dist/validators/index.js.map +1 -0
  546. package/dist/validators/isDomReference.d.ts +3 -0
  547. package/dist/validators/isDomReference.d.ts.map +1 -0
  548. package/dist/validators/isImageExtension.d.ts +3 -0
  549. package/dist/validators/isImageExtension.d.ts.map +1 -0
  550. package/dist/validators/isRecord.d.ts +5 -0
  551. package/dist/validators/isRecord.d.ts.map +1 -0
  552. package/dist/validators/isSafe.d.ts +2 -0
  553. package/dist/validators/isSafe.d.ts.map +1 -0
  554. package/dist/validators/positiveInteger.d.ts +2 -0
  555. package/dist/validators/positiveInteger.d.ts.map +1 -0
  556. package/dist/validators/validateUrl.d.ts +10 -0
  557. package/dist/validators/validateUrl.d.ts.map +1 -0
  558. package/dist/virtualizer/index.d.ts +2 -0
  559. package/dist/virtualizer/index.d.ts.map +1 -0
  560. package/dist/virtualizer/index.js +19 -0
  561. package/dist/virtualizer/index.js.map +1 -0
  562. package/dist/virtualizer/useFetchNextPageEffect.d.ts +8 -0
  563. package/dist/virtualizer/useFetchNextPageEffect.d.ts.map +1 -0
  564. package/dist/xml/index.d.ts +2 -0
  565. package/dist/xml/index.d.ts.map +1 -0
  566. package/dist/xml/index.js +17 -0
  567. package/dist/xml/index.js.map +1 -0
  568. package/dist/xml/xml.d.ts +5 -0
  569. package/dist/xml/xml.d.ts.map +1 -0
  570. package/package.json +428 -0
@@ -0,0 +1,30 @@
1
+ export declare function arrayGroupBy<T>(array: readonly T[], key: keyof T): Record<string, T[]>;
2
+ export declare function arrayToMap<T>(array: readonly T[], key: keyof T): Record<string, T>;
3
+ export declare function arrayGroupByToArray<T>(array: readonly T[], key: keyof T): Array<{
4
+ key: string;
5
+ items: T[];
6
+ }>;
7
+ export declare function arrayUniqueBy<T>(array: readonly T[], key: keyof T): T[];
8
+ /**
9
+ * Удаляет дубликаты из массива с сохранением первого вхождения.
10
+ *
11
+ * Нужна для нормализации списков примитивных значений перед передачей
12
+ * в кеш-ключи, SQL-запросы и другие слои, где повторные элементы не несут смысла.
13
+ */
14
+ export declare function arrayDeduplicate<T>(array: readonly T[]): T[];
15
+ /**
16
+ * Фильтрует массив идентификаторов: оставляет только присутствующие в `allowedIds`,
17
+ * удаляет дубликаты, исключает пустые строки.
18
+ *
19
+ * Зачем: унификация нормализации пользовательских списков ID
20
+ * (grouped columns, locked visible columns и т.п.) перед вычислением layout.
21
+ */
22
+ export declare function filterAndDeduplicateIds<TId extends string>(ids: readonly string[] | undefined, allowedIds: readonly TId[]): TId[];
23
+ export declare function appendMissingIds<TId extends string>(baseIds: readonly TId[], idsToAppend: readonly TId[]): TId[];
24
+ export declare function pickExistingMapValues<TKey, TValue>(keys: readonly TKey[], valuesByKey: ReadonlyMap<TKey, TValue>): TValue[];
25
+ export declare function arraysEqual<T>(left: readonly T[], right: readonly T[]): boolean;
26
+ export declare function moveItem<T>(items: readonly T[], from: number, to: number): T[];
27
+ export declare function normalizeObjects<T, K extends keyof T, O = T>(items: readonly T[] | undefined, key: K, copyist?: ((item: T, key: T[K]) => O) | false): O[] | undefined;
28
+ export declare function normalizeStringArray(items: readonly string[] | undefined): string[] | undefined;
29
+ export declare function addUnique(target: string[], seen: Set<string>, fieldId: string | undefined): void;
30
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/array/array.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAMtF;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAQlF;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAA;CAAE,CAAC,CAW5G;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAQvE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAY5D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAcjI;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAWhH;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAY3H;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,CAQ/E;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,CAU9E;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAC3D,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,EAC/B,GAAG,EAAE,CAAC,EACN,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAC3C,CAAC,EAAE,GAAG,SAAS,CAuBjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAe/F;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAKhG"}
@@ -0,0 +1,3 @@
1
+ export * from "./array";
2
+ export * from "./reorder";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m } from "../chunks/array-BBSjoTRy.js";
2
+ export { d as addUnique, a as appendMissingIds, e as arrayDeduplicate, l as arrayGroupBy, f as arrayGroupByToArray, t as arrayToMap, o as arrayUniqueBy, m as arraysEqual, n as filterAndDeduplicateIds, p as moveArrayItem, c as moveArrayItemByIndex, r as moveItem, u as normalizeObjects, s as normalizeStringArray, i as pickExistingMapValues };
@@ -0,0 +1,10 @@
1
+ export type ReorderAction = "start" | "end" | "up" | "down";
2
+ /**
3
+ * Перемещает элемент списка по одному из предопределённых действий.
4
+ */
5
+ export declare function moveArrayItemByIndex<T>(items: readonly T[], index: number, action: ReorderAction): T[];
6
+ /**
7
+ * Перемещает элемент списка из одного индекса в другой.
8
+ */
9
+ export declare function moveArrayItem<T>(items: readonly T[], fromIndex: number, toIndex: number): T[];
10
+ //# sourceMappingURL=reorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../../src/array/reorder.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAiB5D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,EAAE,CAiBtG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,CAe7F"}
@@ -0,0 +1,2 @@
1
+ export declare function getClientFingerprint(): Promise<string | null>;
2
+ //# sourceMappingURL=getClientFingerprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getClientFingerprint.d.ts","sourceRoot":"","sources":["../../src/auth/getClientFingerprint.ts"],"names":[],"mappings":"AAIA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBnE"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Преобразует base64 или бинарную строку в Blob.
3
+ *
4
+ * Data URL с префиксом `data:*;base64,` поддерживается, сам URL здесь не создаётся.
5
+ */
6
+ export declare const binaryToBlob: (binaryData: string, mimeType?: string, isBase64?: boolean) => Blob;
7
+ /**
8
+ * Определяет MIME-тип по имени файла, data URL или сигнатуре base64-данных.
9
+ *
10
+ * Если определить тип не удалось, используется PDF: большинство документов в этом контуре приходят именно так.
11
+ */
12
+ export declare const detectMimeType: (fileName?: string, binaryData?: string) => string;
13
+ //# sourceMappingURL=binaryToBlob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binaryToBlob.d.ts","sourceRoot":"","sources":["../../src/binary/binaryToBlob.ts"],"names":[],"mappings":"AAwKA;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,EAAE,WAAU,MAA+B,EAAE,kBAAe,KAAG,IAmB7G,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,EAAE,aAAa,MAAM,KAAG,MAwBvE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./binaryToBlob";
2
+ export * from "./useBinaryFile";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/binary/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,126 @@
1
+ import { logError as e } from "../utils/index.js";
2
+ import { useEffect as t, useEffectEvent as n, useState as r } from "react";
3
+ //#region src/binary/binaryToBlob.ts
4
+ var i = "application/octet-stream", a = "application/pdf", o = /^data:([^,]*);base64,([\s\S]*)$/i, s = {
5
+ bmp: "image/bmp",
6
+ csv: "text/csv",
7
+ doc: "application/msword",
8
+ docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
9
+ gif: "image/gif",
10
+ jpeg: "image/jpeg",
11
+ jpg: "image/jpeg",
12
+ json: "application/json",
13
+ pdf: "application/pdf",
14
+ png: "image/png",
15
+ ppt: "application/vnd.ms-powerpoint",
16
+ pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
17
+ svg: "image/svg+xml",
18
+ tif: "image/tiff",
19
+ tiff: "image/tiff",
20
+ txt: "text/plain",
21
+ webp: "image/webp",
22
+ xls: "application/vnd.ms-excel",
23
+ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
24
+ xml: "application/xml",
25
+ zip: "application/zip"
26
+ }, c = (e) => {
27
+ let t = e.replace(/\s/g, "").replace(/-/g, "+").replace(/_/g, "/"), n = t.length % 4;
28
+ if (n === 1 || !/^[A-Za-z0-9+/]*={0,2}$/.test(t)) throw Error("Некорректный формат base64");
29
+ return n === 0 ? t : `${t}${"=".repeat(4 - n)}`;
30
+ }, l = (e) => {
31
+ let t = e.match(o);
32
+ if (!t) return {
33
+ data: e,
34
+ mimeType: null
35
+ };
36
+ let [, n, r] = t;
37
+ return {
38
+ data: r,
39
+ mimeType: n.split(";")[0].trim() || null
40
+ };
41
+ }, u = (e) => {
42
+ let t = l(e);
43
+ return {
44
+ data: c(t.data),
45
+ mimeType: t.mimeType
46
+ };
47
+ }, d = (e) => {
48
+ let t = e.match(o);
49
+ return t && t[1].split(";")[0].trim() || null;
50
+ }, f = (e) => {
51
+ let { data: t } = u(e), n = atob(t), r = new Uint8Array(n.length);
52
+ for (let e = 0; e < n.length; e++) r[e] = n.charCodeAt(e);
53
+ return r;
54
+ }, p = (e) => {
55
+ let t = new Uint8Array(e.length);
56
+ for (let n = 0; n < e.length; n++) t[n] = e.charCodeAt(n);
57
+ return t;
58
+ }, m = (e) => {
59
+ let t = new ArrayBuffer(e.byteLength);
60
+ return new Uint8Array(t).set(e), t;
61
+ }, h = (e) => {
62
+ try {
63
+ let { data: t } = l(e), n = t.slice(0, 128);
64
+ return atob(c(n));
65
+ } catch {
66
+ return null;
67
+ }
68
+ }, g = (e) => {
69
+ let t = h(e);
70
+ if (!t) return null;
71
+ let n = new Uint8Array(t.length);
72
+ for (let e = 0; e < t.length; e++) n[e] = t.charCodeAt(e);
73
+ if (n[0] === 37 && n[1] === 80 && n[2] === 68 && n[3] === 70) return "application/pdf";
74
+ if (n[0] === 255 && n[1] === 216 && n[2] === 255) return "image/jpeg";
75
+ if (n[0] === 137 && n[1] === 80 && n[2] === 78 && n[3] === 71) return "image/png";
76
+ if (n[0] === 71 && n[1] === 73 && n[2] === 70) return "image/gif";
77
+ if (n[0] === 82 && n[1] === 73 && n[2] === 70 && n[3] === 70) return "image/webp";
78
+ if (n[0] === 80 && n[1] === 75) return "application/zip";
79
+ let r = t.replace(/^\uFEFF/, "").trimStart().slice(0, 16);
80
+ return r.startsWith("<?xml") || r.startsWith("<") ? "application/xml" : null;
81
+ }, _ = (e, t = i, n = !0) => {
82
+ if (!e) throw Error("Не переданы бинарные данные");
83
+ try {
84
+ let r = n ? f(e) : p(e);
85
+ if (r.length === 0) throw Error("После преобразования не осталось данных");
86
+ return new Blob([m(r)], { type: t.trim() || i });
87
+ } catch (e) {
88
+ throw e instanceof Error ? e : Error("Некорректный формат бинарных данных");
89
+ }
90
+ }, v = (e, t) => {
91
+ if (e) {
92
+ let t = e.toLowerCase().split(".").pop();
93
+ if (t && s[t]) return s[t];
94
+ }
95
+ if (t) {
96
+ let e = d(t);
97
+ if (e) return e;
98
+ let n = g(t);
99
+ if (n) return n;
100
+ }
101
+ return a;
102
+ };
103
+ //#endregion
104
+ //#region src/binary/useBinaryFile.ts
105
+ function y(i) {
106
+ let [a, o] = r(null), [s, c] = r(null), l = n((e) => o(e)), u = n((e) => c(e));
107
+ return t(() => {
108
+ if (i) try {
109
+ let e = v(void 0, i), t = _(i, e, !0);
110
+ l({
111
+ blob: t,
112
+ mime: e
113
+ }), u(null);
114
+ } catch (t) {
115
+ e(t), u(String(t)), l(null);
116
+ }
117
+ else l(null), u(null);
118
+ }, [i]), {
119
+ data: a,
120
+ error: s
121
+ };
122
+ }
123
+ //#endregion
124
+ export { _ as binaryToBlob, v as detectMimeType, y as useBinaryFile };
125
+
126
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/binary/binaryToBlob.ts","../../src/binary/useBinaryFile.ts"],"sourcesContent":["const DEFAULT_BLOB_MIME_TYPE = \"application/octet-stream\";\nconst DEFAULT_DOCUMENT_MIME_TYPE = \"application/pdf\";\nconst BASE64_DATA_URL_PATTERN = /^data:([^,]*);base64,([\\s\\S]*)$/i;\n\nconst MIME_TYPE_BY_EXTENSION: Record<string, string> = {\n\tbmp: \"image/bmp\",\n\tcsv: \"text/csv\",\n\tdoc: \"application/msword\",\n\tdocx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n\tgif: \"image/gif\",\n\tjpeg: \"image/jpeg\",\n\tjpg: \"image/jpeg\",\n\tjson: \"application/json\",\n\tpdf: \"application/pdf\",\n\tpng: \"image/png\",\n\tppt: \"application/vnd.ms-powerpoint\",\n\tpptx: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\tsvg: \"image/svg+xml\",\n\ttif: \"image/tiff\",\n\ttiff: \"image/tiff\",\n\ttxt: \"text/plain\",\n\twebp: \"image/webp\",\n\txls: \"application/vnd.ms-excel\",\n\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n\txml: \"application/xml\",\n\tzip: \"application/zip\"\n};\n\nconst normalizeBase64 = (value: string): string => {\n\tconst normalized = value.replace(/\\s/g, \"\").replace(/-/g, \"+\").replace(/_/g, \"/\");\n\tconst paddingRest = normalized.length % 4;\n\n\tif (paddingRest === 1 || !/^[A-Za-z0-9+/]*={0,2}$/.test(normalized)) {\n\t\tthrow new Error(\"Некорректный формат base64\");\n\t}\n\n\treturn paddingRest === 0 ? normalized : `${normalized}${\"=\".repeat(4 - paddingRest)}`;\n};\n\nconst getBase64RawPayload = (binaryData: string): { data: string; mimeType: string | null } => {\n\tconst dataUrlMatch = binaryData.match(BASE64_DATA_URL_PATTERN);\n\n\tif (!dataUrlMatch) {\n\t\treturn { data: binaryData, mimeType: null };\n\t}\n\n\tconst [, rawMimeType, rawData] = dataUrlMatch;\n\tconst mimeType = rawMimeType.split(\";\")[0].trim();\n\n\treturn {\n\t\tdata: rawData,\n\t\tmimeType: mimeType || null\n\t};\n};\n\nconst getBase64Payload = (binaryData: string): { data: string; mimeType: string | null } => {\n\tconst payload = getBase64RawPayload(binaryData);\n\n\treturn {\n\t\tdata: normalizeBase64(payload.data),\n\t\tmimeType: payload.mimeType\n\t};\n};\n\nconst getDataUrlMimeType = (binaryData: string): string | null => {\n\tconst dataUrlMatch = binaryData.match(BASE64_DATA_URL_PATTERN);\n\n\tif (!dataUrlMatch) {\n\t\treturn null;\n\t}\n\n\tconst mimeType = dataUrlMatch[1].split(\";\")[0].trim();\n\n\treturn mimeType || null;\n};\n\nconst decodeBase64ToBytes = (binaryData: string): Uint8Array => {\n\tconst { data } = getBase64Payload(binaryData);\n\tconst binaryString = atob(data);\n\tconst byteArray = new Uint8Array(binaryString.length);\n\n\tfor (let index = 0; index < binaryString.length; index++) {\n\t\tbyteArray[index] = binaryString.charCodeAt(index);\n\t}\n\n\treturn byteArray;\n};\n\nconst binaryStringToBytes = (binaryData: string): Uint8Array => {\n\tconst byteArray = new Uint8Array(binaryData.length);\n\n\tfor (let index = 0; index < binaryData.length; index++) {\n\t\tbyteArray[index] = binaryData.charCodeAt(index);\n\t}\n\n\treturn byteArray;\n};\n\nconst copyBytesToArrayBuffer = (byteArray: Uint8Array): ArrayBuffer => {\n\tconst buffer = new ArrayBuffer(byteArray.byteLength);\n\tconst view = new Uint8Array(buffer);\n\n\tview.set(byteArray);\n\n\treturn buffer;\n};\n\nconst decodeHeaderFromBase64 = (binaryData: string): string | null => {\n\ttry {\n\t\tconst { data } = getBase64RawPayload(binaryData);\n\t\tconst headerData = data.slice(0, 128);\n\t\tconst binaryString = atob(normalizeBase64(headerData));\n\n\t\treturn binaryString;\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nconst detectMimeTypeBySignature = (binaryData: string): string | null => {\n\tconst header = decodeHeaderFromBase64(binaryData);\n\n\tif (!header) {\n\t\treturn null;\n\t}\n\n\tconst bytes = new Uint8Array(header.length);\n\n\tfor (let index = 0; index < header.length; index++) {\n\t\tbytes[index] = header.charCodeAt(index);\n\t}\n\n\tif (bytes[0] === 0x25 && bytes[1] === 0x50 && bytes[2] === 0x44 && bytes[3] === 0x46) {\n\t\treturn \"application/pdf\";\n\t}\n\n\tif (bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff) {\n\t\treturn \"image/jpeg\";\n\t}\n\n\tif (bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47) {\n\t\treturn \"image/png\";\n\t}\n\n\tif (bytes[0] === 0x47 && bytes[1] === 0x49 && bytes[2] === 0x46) {\n\t\treturn \"image/gif\";\n\t}\n\n\tif (bytes[0] === 0x52 && bytes[1] === 0x49 && bytes[2] === 0x46 && bytes[3] === 0x46) {\n\t\treturn \"image/webp\";\n\t}\n\n\tif (bytes[0] === 0x50 && bytes[1] === 0x4b) {\n\t\treturn \"application/zip\";\n\t}\n\n\tconst textHeader = header\n\t\t.replace(/^\\uFEFF/, \"\")\n\t\t.trimStart()\n\t\t.slice(0, 16);\n\n\tif (textHeader.startsWith(\"<?xml\") || textHeader.startsWith(\"<\")) {\n\t\treturn \"application/xml\";\n\t}\n\n\treturn null;\n};\n\n/**\n * Преобразует base64 или бинарную строку в Blob.\n *\n * Data URL с префиксом `data:*;base64,` поддерживается, сам URL здесь не создаётся.\n */\nexport const binaryToBlob = (binaryData: string, mimeType: string = DEFAULT_BLOB_MIME_TYPE, isBase64 = true): Blob => {\n\tif (!binaryData) {\n\t\tthrow new Error(\"Не переданы бинарные данные\");\n\t}\n\n\ttry {\n\t\tconst byteArray = isBase64 ? decodeBase64ToBytes(binaryData) : binaryStringToBytes(binaryData);\n\n\t\tif (byteArray.length === 0) {\n\t\t\tthrow new Error(\"После преобразования не осталось данных\");\n\t\t}\n\n\t\treturn new Blob([copyBytesToArrayBuffer(byteArray)], { type: mimeType.trim() || DEFAULT_BLOB_MIME_TYPE });\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tthrow error;\n\t\t}\n\t\tthrow new Error(\"Некорректный формат бинарных данных\");\n\t}\n};\n\n/**\n * Определяет MIME-тип по имени файла, data URL или сигнатуре base64-данных.\n *\n * Если определить тип не удалось, используется PDF: большинство документов в этом контуре приходят именно так.\n */\nexport const detectMimeType = (fileName?: string, binaryData?: string): string => {\n\tif (fileName) {\n\t\tconst extension = fileName.toLowerCase().split(\".\").pop();\n\n\t\tif (extension && MIME_TYPE_BY_EXTENSION[extension]) {\n\t\t\treturn MIME_TYPE_BY_EXTENSION[extension];\n\t\t}\n\t}\n\n\tif (binaryData) {\n\t\tconst dataUrlMimeType = getDataUrlMimeType(binaryData);\n\n\t\tif (dataUrlMimeType) {\n\t\t\treturn dataUrlMimeType;\n\t\t}\n\n\t\tconst signatureMimeType = detectMimeTypeBySignature(binaryData);\n\n\t\tif (signatureMimeType) {\n\t\t\treturn signatureMimeType;\n\t\t}\n\t}\n\n\treturn DEFAULT_DOCUMENT_MIME_TYPE;\n};\n","import { useEffect, useEffectEvent, useState } from \"react\";\n\nimport { logError } from \"../utils\";\n\nimport { binaryToBlob, detectMimeType } from \"./binaryToBlob\";\n\nexport function useBinaryFile(bin: string | undefined) {\n\tconst [entry, setEntry] = useState<{ blob: Blob; mime: string } | null>(null);\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst updateEntry = useEffectEvent((data: { blob: Blob; mime: string } | null) => setEntry(data));\n\tconst updateError = useEffectEvent((error: string | null) => setError(error));\n\n\tuseEffect(() => {\n\t\tif (bin) {\n\t\t\ttry {\n\t\t\t\tconst mime = detectMimeType(undefined, bin);\n\t\t\t\tconst blob = binaryToBlob(bin, mime, true);\n\n\t\t\t\tupdateEntry({ blob, mime });\n\t\t\t\tupdateError(null);\n\t\t\t} catch (e) {\n\t\t\t\tlogError(e);\n\n\t\t\t\tupdateError(String(e));\n\t\t\t\tupdateEntry(null);\n\t\t\t}\n\t\t} else {\n\t\t\tupdateEntry(null);\n\t\t\tupdateError(null);\n\t\t}\n\t}, [bin]);\n\n\treturn { data: entry, error };\n}\n"],"mappings":";;;AAAA,IAAM,IAAyB,4BACzB,IAA6B,mBAC7B,IAA0B,oCAE1B,IAAiD;CACtD,KAAK;CACL,KAAK;CACL,KAAK;CACL,MAAM;CACN,KAAK;CACL,MAAM;CACN,KAAK;CACL,MAAM;CACN,KAAK;CACL,KAAK;CACL,KAAK;CACL,MAAM;CACN,KAAK;CACL,KAAK;CACL,MAAM;CACN,KAAK;CACL,MAAM;CACN,KAAK;CACL,MAAM;CACN,KAAK;CACL,KAAK;AACN,GAEM,KAAmB,MAA0B;CAClD,IAAM,IAAa,EAAM,QAAQ,OAAO,EAAE,CAAC,CAAC,QAAQ,MAAM,GAAG,CAAC,CAAC,QAAQ,MAAM,GAAG,GAC1E,IAAc,EAAW,SAAS;CAExC,IAAI,MAAgB,KAAK,CAAC,yBAAyB,KAAK,CAAU,GACjE,MAAU,MAAM,4BAA4B;CAG7C,OAAO,MAAgB,IAAI,IAAa,GAAG,IAAa,IAAI,OAAO,IAAI,CAAW;AACnF,GAEM,KAAuB,MAAkE;CAC9F,IAAM,IAAe,EAAW,MAAM,CAAuB;CAE7D,IAAI,CAAC,GACJ,OAAO;EAAE,MAAM;EAAY,UAAU;CAAK;CAG3C,IAAM,GAAG,GAAa,KAAW;CAGjC,OAAO;EACN,MAAM;EACN,UAJgB,EAAY,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAIhC,KAAY;CACvB;AACD,GAEM,KAAoB,MAAkE;CAC3F,IAAM,IAAU,EAAoB,CAAU;CAE9C,OAAO;EACN,MAAM,EAAgB,EAAQ,IAAI;EAClC,UAAU,EAAQ;CACnB;AACD,GAEM,KAAsB,MAAsC;CACjE,IAAM,IAAe,EAAW,MAAM,CAAuB;CAQ7D,OANK,KAIY,EAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAExC,KALC;AAMT,GAEM,KAAuB,MAAmC;CAC/D,IAAM,EAAE,YAAS,EAAiB,CAAU,GACtC,IAAe,KAAK,CAAI,GACxB,IAAY,IAAI,WAAW,EAAa,MAAM;CAEpD,KAAK,IAAI,IAAQ,GAAG,IAAQ,EAAa,QAAQ,KAChD,EAAU,KAAS,EAAa,WAAW,CAAK;CAGjD,OAAO;AACR,GAEM,KAAuB,MAAmC;CAC/D,IAAM,IAAY,IAAI,WAAW,EAAW,MAAM;CAElD,KAAK,IAAI,IAAQ,GAAG,IAAQ,EAAW,QAAQ,KAC9C,EAAU,KAAS,EAAW,WAAW,CAAK;CAG/C,OAAO;AACR,GAEM,KAA0B,MAAuC;CACtE,IAAM,IAAS,IAAI,YAAY,EAAU,UAAU;CAKnD,OAFA,IAFiB,WAAW,CAE5B,CAAA,CAAK,IAAI,CAAS,GAEX;AACR,GAEM,KAA0B,MAAsC;CACrE,IAAI;EACH,IAAM,EAAE,YAAS,EAAoB,CAAU,GACzC,IAAa,EAAK,MAAM,GAAG,GAAG;EAGpC,OAFqB,KAAK,EAAgB,CAAU,CAE7C;CACR,QAAQ;EACP,OAAO;CACR;AACD,GAEM,KAA6B,MAAsC;CACxE,IAAM,IAAS,EAAuB,CAAU;CAEhD,IAAI,CAAC,GACJ,OAAO;CAGR,IAAM,IAAQ,IAAI,WAAW,EAAO,MAAM;CAE1C,KAAK,IAAI,IAAQ,GAAG,IAAQ,EAAO,QAAQ,KAC1C,EAAM,KAAS,EAAO,WAAW,CAAK;CAGvC,IAAI,EAAM,OAAO,MAAQ,EAAM,OAAO,MAAQ,EAAM,OAAO,MAAQ,EAAM,OAAO,IAC/E,OAAO;CAGR,IAAI,EAAM,OAAO,OAAQ,EAAM,OAAO,OAAQ,EAAM,OAAO,KAC1D,OAAO;CAGR,IAAI,EAAM,OAAO,OAAQ,EAAM,OAAO,MAAQ,EAAM,OAAO,MAAQ,EAAM,OAAO,IAC/E,OAAO;CAGR,IAAI,EAAM,OAAO,MAAQ,EAAM,OAAO,MAAQ,EAAM,OAAO,IAC1D,OAAO;CAGR,IAAI,EAAM,OAAO,MAAQ,EAAM,OAAO,MAAQ,EAAM,OAAO,MAAQ,EAAM,OAAO,IAC/E,OAAO;CAGR,IAAI,EAAM,OAAO,MAAQ,EAAM,OAAO,IACrC,OAAO;CAGR,IAAM,IAAa,EACjB,QAAQ,WAAW,EAAE,CAAC,CACtB,UAAU,CAAC,CACX,MAAM,GAAG,EAAE;CAMb,OAJI,EAAW,WAAW,OAAO,KAAK,EAAW,WAAW,GAAG,IACvD,oBAGD;AACR,GAOa,KAAgB,GAAoB,IAAmB,GAAwB,IAAW,OAAe;CACrH,IAAI,CAAC,GACJ,MAAU,MAAM,6BAA6B;CAG9C,IAAI;EACH,IAAM,IAAY,IAAW,EAAoB,CAAU,IAAI,EAAoB,CAAU;EAE7F,IAAI,EAAU,WAAW,GACxB,MAAU,MAAM,yCAAyC;EAG1D,OAAO,IAAI,KAAK,CAAC,EAAuB,CAAS,CAAC,GAAG,EAAE,MAAM,EAAS,KAAK,KAAK,EAAuB,CAAC;CACzG,SAAS,GAAO;EAIf,MAHI,aAAiB,QACd,IAEG,MAAM,qCAAqC;CACtD;AACD,GAOa,KAAkB,GAAmB,MAAgC;CACjF,IAAI,GAAU;EACb,IAAM,IAAY,EAAS,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI;EAExD,IAAI,KAAa,EAAuB,IACvC,OAAO,EAAuB;CAEhC;CAEA,IAAI,GAAY;EACf,IAAM,IAAkB,EAAmB,CAAU;EAErD,IAAI,GACH,OAAO;EAGR,IAAM,IAAoB,EAA0B,CAAU;EAE9D,IAAI,GACH,OAAO;CAET;CAEA,OAAO;AACR;;;ACzNA,SAAgB,EAAc,GAAyB;CACtD,IAAM,CAAC,GAAO,KAAY,EAA8C,IAAI,GACtE,CAAC,GAAO,KAAY,EAAwB,IAAI,GAEhD,IAAc,GAAgB,MAA8C,EAAS,CAAI,CAAC,GAC1F,IAAc,GAAgB,MAAyB,EAAS,CAAK,CAAC;CAsB5E,OApBA,QAAgB;EACf,IAAI,GACH,IAAI;GACH,IAAM,IAAO,EAAe,KAAA,GAAW,CAAG,GACpC,IAAO,EAAa,GAAK,GAAM,EAAI;GAGzC,AADA,EAAY;IAAE;IAAM;GAAK,CAAC,GAC1B,EAAY,IAAI;EACjB,SAAS,GAAG;GAIX,AAHA,EAAS,CAAC,GAEV,EAAY,OAAO,CAAC,CAAC,GACrB,EAAY,IAAI;EACjB;OAGA,AADA,EAAY,IAAI,GAChB,EAAY,IAAI;CAElB,GAAG,CAAC,CAAG,CAAC,GAED;EAAE,MAAM;EAAO;CAAM;AAC7B"}
@@ -0,0 +1,8 @@
1
+ export declare function useBinaryFile(bin: string | undefined): {
2
+ data: {
3
+ blob: Blob;
4
+ mime: string;
5
+ } | null;
6
+ error: string | null;
7
+ };
8
+ //# sourceMappingURL=useBinaryFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBinaryFile.d.ts","sourceRoot":"","sources":["../../src/binary/useBinaryFile.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;;cACT,IAAI;cAAQ,MAAM;;;EA2B7D"}
@@ -0,0 +1,26 @@
1
+ export declare const DEFAULT_BOUNDED_COPY_STACK_SIZE = 3;
2
+ export type BoundedCopyStackItem<TPayload, TMeta = undefined> = {
3
+ id: string;
4
+ fingerprint: string;
5
+ payload: TPayload;
6
+ meta: TMeta;
7
+ copiedAt: number;
8
+ };
9
+ export type BoundedCopyStackPushInput<TPayload, TMeta = undefined> = {
10
+ id: string;
11
+ fingerprint: string;
12
+ payload: TPayload;
13
+ meta: TMeta;
14
+ copiedAt?: number;
15
+ };
16
+ export type BoundedCopyStackOptions = {
17
+ maxSize?: number;
18
+ };
19
+ export type BoundedCopyStackPushResult<TPayload, TMeta = undefined> = {
20
+ items: BoundedCopyStackItem<TPayload, TMeta>[];
21
+ addedItem: BoundedCopyStackItem<TPayload, TMeta>;
22
+ updatedExisting: boolean;
23
+ };
24
+ export declare function pushBoundedCopyStackItem<TPayload, TMeta = undefined>(items: readonly BoundedCopyStackItem<TPayload, TMeta>[], input: BoundedCopyStackPushInput<TPayload, TMeta>, options?: BoundedCopyStackOptions): BoundedCopyStackPushResult<TPayload, TMeta>;
25
+ export declare function getBoundedCopyStackCandidates<TPayload, TMeta = undefined>(items: readonly BoundedCopyStackItem<TPayload, TMeta>[], predicate: (item: BoundedCopyStackItem<TPayload, TMeta>) => boolean): BoundedCopyStackItem<TPayload, TMeta>[];
26
+ //# sourceMappingURL=boundedCopyStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundedCopyStack.d.ts","sourceRoot":"","sources":["../../src/bounded-copy-stack/boundedCopyStack.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,MAAM,MAAM,oBAAoB,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,IAAI;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,IAAI;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,IAAI;IACrE,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/C,SAAS,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjD,eAAe,EAAE,OAAO,CAAC;CACzB,CAAC;AAOF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,EACnE,KAAK,EAAE,SAAS,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EACvD,KAAK,EAAE,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,EACjD,OAAO,GAAE,uBAA4B,GACnC,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAkB7C;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,EACxE,KAAK,EAAE,SAAS,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EACvD,SAAS,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,OAAO,GACjE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAEzC"}
@@ -0,0 +1,2 @@
1
+ export * from "./boundedCopyStack";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bounded-copy-stack/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,26 @@
1
+ //#region src/bounded-copy-stack/boundedCopyStack.ts
2
+ var e = 3;
3
+ function t(e) {
4
+ return Number.isFinite(e) ? Math.max(1, Math.trunc(e ?? 3)) : 3;
5
+ }
6
+ function n(e, n, r = {}) {
7
+ let i = n.copiedAt ?? Date.now(), a = {
8
+ id: n.id,
9
+ fingerprint: n.fingerprint,
10
+ payload: n.payload,
11
+ meta: n.meta,
12
+ copiedAt: i
13
+ }, o = e.findIndex((e) => e.fingerprint === n.fingerprint), s = o >= 0 ? e.filter((e) => e.fingerprint !== n.fingerprint) : e, c = t(r.maxSize);
14
+ return {
15
+ items: [a, ...s].slice(0, c),
16
+ addedItem: a,
17
+ updatedExisting: o >= 0
18
+ };
19
+ }
20
+ function r(e, t) {
21
+ return e.filter(t);
22
+ }
23
+ //#endregion
24
+ export { e as DEFAULT_BOUNDED_COPY_STACK_SIZE, r as getBoundedCopyStackCandidates, n as pushBoundedCopyStackItem };
25
+
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/bounded-copy-stack/boundedCopyStack.ts"],"sourcesContent":["export const DEFAULT_BOUNDED_COPY_STACK_SIZE = 3;\n\nexport type BoundedCopyStackItem<TPayload, TMeta = undefined> = {\n\tid: string;\n\tfingerprint: string;\n\tpayload: TPayload;\n\tmeta: TMeta;\n\tcopiedAt: number;\n};\n\nexport type BoundedCopyStackPushInput<TPayload, TMeta = undefined> = {\n\tid: string;\n\tfingerprint: string;\n\tpayload: TPayload;\n\tmeta: TMeta;\n\tcopiedAt?: number;\n};\n\nexport type BoundedCopyStackOptions = {\n\tmaxSize?: number;\n};\n\nexport type BoundedCopyStackPushResult<TPayload, TMeta = undefined> = {\n\titems: BoundedCopyStackItem<TPayload, TMeta>[];\n\taddedItem: BoundedCopyStackItem<TPayload, TMeta>;\n\tupdatedExisting: boolean;\n};\n\nfunction normalizeMaxSize(value: number | undefined): number {\n\tif (!Number.isFinite(value)) return DEFAULT_BOUNDED_COPY_STACK_SIZE;\n\treturn Math.max(1, Math.trunc(value ?? DEFAULT_BOUNDED_COPY_STACK_SIZE));\n}\n\nexport function pushBoundedCopyStackItem<TPayload, TMeta = undefined>(\n\titems: readonly BoundedCopyStackItem<TPayload, TMeta>[],\n\tinput: BoundedCopyStackPushInput<TPayload, TMeta>,\n\toptions: BoundedCopyStackOptions = {}\n): BoundedCopyStackPushResult<TPayload, TMeta> {\n\tconst copiedAt = input.copiedAt ?? Date.now();\n\tconst nextItem: BoundedCopyStackItem<TPayload, TMeta> = {\n\t\tid: input.id,\n\t\tfingerprint: input.fingerprint,\n\t\tpayload: input.payload,\n\t\tmeta: input.meta,\n\t\tcopiedAt\n\t};\n\tconst existingIndex = items.findIndex((item) => item.fingerprint === input.fingerprint);\n\tconst withoutDuplicate = existingIndex >= 0 ? items.filter((item) => item.fingerprint !== input.fingerprint) : items;\n\tconst maxSize = normalizeMaxSize(options.maxSize);\n\n\treturn {\n\t\titems: [nextItem, ...withoutDuplicate].slice(0, maxSize),\n\t\taddedItem: nextItem,\n\t\tupdatedExisting: existingIndex >= 0\n\t};\n}\n\nexport function getBoundedCopyStackCandidates<TPayload, TMeta = undefined>(\n\titems: readonly BoundedCopyStackItem<TPayload, TMeta>[],\n\tpredicate: (item: BoundedCopyStackItem<TPayload, TMeta>) => boolean\n): BoundedCopyStackItem<TPayload, TMeta>[] {\n\treturn items.filter(predicate);\n}\n"],"mappings":";AAAA,IAAa,IAAkC;AA4B/C,SAAS,EAAiB,GAAmC;CAE5D,OADK,OAAO,SAAS,CAAK,IACnB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAA,CAAwC,CAAC,IAD1C;AAE9B;AAEA,SAAgB,EACf,GACA,GACA,IAAmC,CAAC,GACU;CAC9C,IAAM,IAAW,EAAM,YAAY,KAAK,IAAI,GACtC,IAAkD;EACvD,IAAI,EAAM;EACV,aAAa,EAAM;EACnB,SAAS,EAAM;EACf,MAAM,EAAM;EACZ;CACD,GACM,IAAgB,EAAM,WAAW,MAAS,EAAK,gBAAgB,EAAM,WAAW,GAChF,IAAmB,KAAiB,IAAI,EAAM,QAAQ,MAAS,EAAK,gBAAgB,EAAM,WAAW,IAAI,GACzG,IAAU,EAAiB,EAAQ,OAAO;CAEhD,OAAO;EACN,OAAO,CAAC,GAAU,GAAG,CAAgB,CAAC,CAAC,MAAM,GAAG,CAAO;EACvD,WAAW;EACX,iBAAiB,KAAiB;CACnC;AACD;AAEA,SAAgB,EACf,GACA,GAC0C;CAC1C,OAAO,EAAM,OAAO,CAAS;AAC9B"}
@@ -0,0 +1,146 @@
1
+ //#region src/formatters/strings/normalizeText.ts
2
+ function e(e) {
3
+ if (typeof e != "string") return;
4
+ let t = e.trim();
5
+ return t.length > 0 ? t : void 0;
6
+ }
7
+ function t(t, n = "") {
8
+ return e(t) ?? n;
9
+ }
10
+ function n(e) {
11
+ return t(e);
12
+ }
13
+ function r(t) {
14
+ let n = e(t);
15
+ return n ? n.toLowerCase() : "";
16
+ }
17
+ function i(e) {
18
+ return e == null ? "" : String(e);
19
+ }
20
+ var a = /[\s\u00a0\u202f]+/gu;
21
+ function o(e) {
22
+ return n(e).replace(a, " ");
23
+ }
24
+ //#endregion
25
+ //#region src/array/array.ts
26
+ function s(e, t) {
27
+ return e.reduce((e, n) => {
28
+ let r = String(n[t]);
29
+ return (e[r] ||= []).push(n), e;
30
+ }, {});
31
+ }
32
+ function c(e, t) {
33
+ return e.reduce((e, n) => {
34
+ let r = String(n[t]);
35
+ return e[r] || (e[r] = n), e;
36
+ }, {});
37
+ }
38
+ function l(e, t) {
39
+ let n = e.reduce((e, n) => {
40
+ let r = String(n[t]);
41
+ return (e[r] ||= []).push(n), e;
42
+ }, {});
43
+ return Object.entries(n).map(([e, t]) => ({
44
+ key: e,
45
+ items: t
46
+ }));
47
+ }
48
+ function u(e, t) {
49
+ let n = /* @__PURE__ */ new Set();
50
+ return e.filter((e) => {
51
+ let r = String(e[t]);
52
+ return n.has(r) ? !1 : (n.add(r), !0);
53
+ });
54
+ }
55
+ function d(e) {
56
+ let t = [], n = /* @__PURE__ */ new Set();
57
+ for (let r of e) n.has(r) || (n.add(r), t.push(r));
58
+ return t;
59
+ }
60
+ function f(e, t) {
61
+ let n = new Map(t.map((e) => [e, e])), r = [], i = /* @__PURE__ */ new Set();
62
+ for (let t of e ?? []) {
63
+ if (!t || i.has(t)) continue;
64
+ let e = n.get(t);
65
+ e && (i.add(t), r.push(e));
66
+ }
67
+ return r;
68
+ }
69
+ function p(e, t) {
70
+ let n = [...e], r = new Set(e);
71
+ for (let e of t) !e || r.has(e) || (r.add(e), n.push(e));
72
+ return n;
73
+ }
74
+ function m(e, t) {
75
+ let n = [];
76
+ for (let r of e) {
77
+ let e = t.get(r);
78
+ e !== void 0 && n.push(e);
79
+ }
80
+ return n;
81
+ }
82
+ function h(e, t) {
83
+ if (e.length !== t.length) return !1;
84
+ for (let n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1;
85
+ return !0;
86
+ }
87
+ function g(e, t, n) {
88
+ if (t === n || t < 0 || n < 0 || t >= e.length || n >= e.length) return [...e];
89
+ let r = [...e], [i] = r.splice(t, 1);
90
+ return i === void 0 ? [...e] : (r.splice(n, 0, i), r);
91
+ }
92
+ function _(t, n, r) {
93
+ if (!t) return;
94
+ let i = [], a = /* @__PURE__ */ new Set(), o = typeof r == "boolean" && r === !1 ? (e) => e : typeof r == "function" ? r : (e) => ({ ...e });
95
+ for (let r of t) {
96
+ let t = e(r[n]);
97
+ !t || a.has(t) || (a.add(t), i.push(o(r, t)));
98
+ }
99
+ return i.length ? i : void 0;
100
+ }
101
+ function v(e) {
102
+ if (!e?.length) return;
103
+ let t = [], n = /* @__PURE__ */ new Set();
104
+ for (let r of e) {
105
+ let e = r.trim();
106
+ !e || n.has(e) || (n.add(e), t.push(e));
107
+ }
108
+ return t.length ? t : void 0;
109
+ }
110
+ function y(e, t, n) {
111
+ let r = n?.trim();
112
+ !r || t.has(r) || (t.add(r), e.push(r));
113
+ }
114
+ //#endregion
115
+ //#region src/array/reorder.ts
116
+ function b(e) {
117
+ let { index: t, size: n, action: r } = e;
118
+ switch (r) {
119
+ case "start": return 0;
120
+ case "end": return n - 1;
121
+ case "up": return t - 1;
122
+ case "down": return t + 1;
123
+ }
124
+ }
125
+ function x(e, t, n) {
126
+ let r = [...e];
127
+ if (t < 0 || t >= r.length) return r;
128
+ let i = b({
129
+ index: t,
130
+ size: r.length,
131
+ action: n
132
+ });
133
+ if (i < 0 || i >= r.length || i === t) return r;
134
+ let [a] = r.splice(t, 1);
135
+ return a === void 0 || r.splice(i, 0, a), r;
136
+ }
137
+ function S(e, t, n) {
138
+ let r = [...e];
139
+ if (t < 0 || t >= r.length || n < 0 || n >= r.length || t === n) return r;
140
+ let [i] = r.splice(t, 1);
141
+ return i === void 0 || r.splice(n, 0, i), r;
142
+ }
143
+ //#endregion
144
+ export { e as _, d as a, t as b, c, f as d, g as f, n as g, m as h, p as i, u as l, v as m, x as n, s as o, _ as p, y as r, l as s, S as t, h as u, o as v, i as x, r as y };
145
+
146
+ //# sourceMappingURL=array-BBSjoTRy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-BBSjoTRy.js","names":[],"sources":["../../src/formatters/strings/normalizeText.ts","../../src/array/array.ts","../../src/array/reorder.ts"],"sourcesContent":["export function normalizeText(value: unknown): string | undefined {\n\tif (typeof value !== \"string\") return undefined;\n\n\tconst normalized = value.trim();\n\treturn normalized.length > 0 ? normalized : undefined;\n}\n\nexport function normalizeTextWithFallback(value: unknown, fallback = \"\") {\n\treturn normalizeText(value) ?? fallback;\n}\n\nexport function normalizeRequiredText(value: unknown) {\n\treturn normalizeTextWithFallback(value);\n}\n\nexport function normalizeTextToLower(value: unknown): string {\n\tconst normalized = normalizeText(value);\n\treturn normalized ? normalized.toLowerCase() : \"\";\n}\n\nexport function toSafeString(value: unknown): string {\n\treturn value == null ? \"\" : String(value);\n}\n\nconst STRING_SPACES_PATTERN = /[\\s\\u00a0\\u202f]+/gu;\n\n/**\n * Нормализует пользовательский текст: убирает пробелы по краям\n * и сворачивает любые подряд идущие пробельные символы в один обычный пробел.\n */\nexport function normalizeTextSpaces(value: unknown): string {\n\treturn normalizeRequiredText(value).replace(STRING_SPACES_PATTERN, \" \");\n}\n","import { normalizeText } from \"../formatters/strings\";\n\nexport function arrayGroupBy<T>(array: readonly T[], key: keyof T): Record<string, T[]> {\n\treturn array.reduce<Record<string, T[]>>((acc, item) => {\n\t\tconst groupKey = String(item[key]);\n\t\t(acc[groupKey] ||= []).push(item);\n\t\treturn acc;\n\t}, {});\n}\n\nexport function arrayToMap<T>(array: readonly T[], key: keyof T): Record<string, T> {\n\treturn array.reduce<Record<string, T>>((acc, item) => {\n\t\tconst groupKey = String(item[key]);\n\t\tif (!acc[groupKey]) {\n\t\t\tacc[groupKey] = item;\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nexport function arrayGroupByToArray<T>(array: readonly T[], key: keyof T): Array<{ key: string; items: T[] }> {\n\tconst grouped = array.reduce<Record<string, T[]>>((acc, item) => {\n\t\tconst groupKey = String(item[key]);\n\t\t(acc[groupKey] ||= []).push(item);\n\t\treturn acc;\n\t}, {});\n\n\treturn Object.entries(grouped).map(([key, items]) => ({\n\t\tkey,\n\t\titems\n\t}));\n}\n\nexport function arrayUniqueBy<T>(array: readonly T[], key: keyof T): T[] {\n\tconst seen = new Set<string>();\n\treturn array.filter((item) => {\n\t\tconst value = String(item[key]);\n\t\tif (seen.has(value)) return false;\n\t\tseen.add(value);\n\t\treturn true;\n\t});\n}\n\n/**\n * Удаляет дубликаты из массива с сохранением первого вхождения.\n *\n * Нужна для нормализации списков примитивных значений перед передачей\n * в кеш-ключи, SQL-запросы и другие слои, где повторные элементы не несут смысла.\n */\nexport function arrayDeduplicate<T>(array: readonly T[]): T[] {\n\tconst out: T[] = [];\n\tconst seen = new Set<T>();\n\n\tfor (const item of array) {\n\t\tif (seen.has(item)) continue;\n\n\t\tseen.add(item);\n\t\tout.push(item);\n\t}\n\n\treturn out;\n}\n\n/**\n * Фильтрует массив идентификаторов: оставляет только присутствующие в `allowedIds`,\n * удаляет дубликаты, исключает пустые строки.\n *\n * Зачем: унификация нормализации пользовательских списков ID\n * (grouped columns, locked visible columns и т.п.) перед вычислением layout.\n */\nexport function filterAndDeduplicateIds<TId extends string>(ids: readonly string[] | undefined, allowedIds: readonly TId[]): TId[] {\n\tconst known = new Map<string, TId>(allowedIds.map((id) => [id, id]));\n\tconst out: TId[] = [];\n\tconst seen = new Set<string>();\n\n\tfor (const id of ids ?? []) {\n\t\tif (!id || seen.has(id)) continue;\n\t\tconst knownId = known.get(id);\n\t\tif (!knownId) continue;\n\t\tseen.add(id);\n\t\tout.push(knownId);\n\t}\n\n\treturn out;\n}\n\nexport function appendMissingIds<TId extends string>(baseIds: readonly TId[], idsToAppend: readonly TId[]): TId[] {\n\tconst out = [...baseIds];\n\tconst seen = new Set(baseIds);\n\n\tfor (const id of idsToAppend) {\n\t\tif (!id || seen.has(id)) continue;\n\t\tseen.add(id);\n\t\tout.push(id);\n\t}\n\n\treturn out;\n}\n\nexport function pickExistingMapValues<TKey, TValue>(keys: readonly TKey[], valuesByKey: ReadonlyMap<TKey, TValue>): TValue[] {\n\tconst out: TValue[] = [];\n\n\tfor (const key of keys) {\n\t\tconst value = valuesByKey.get(key);\n\n\t\tif (value !== undefined) {\n\t\t\tout.push(value);\n\t\t}\n\t}\n\n\treturn out;\n}\n\nexport function arraysEqual<T>(left: readonly T[], right: readonly T[]): boolean {\n\tif (left.length !== right.length) return false;\n\n\tfor (let index = 0; index < left.length; index++) {\n\t\tif (left[index] !== right[index]) return false;\n\t}\n\n\treturn true;\n}\n\nexport function moveItem<T>(items: readonly T[], from: number, to: number): T[] {\n\tif (from === to) return [...items];\n\tif (from < 0 || to < 0 || from >= items.length || to >= items.length) return [...items];\n\n\tconst next = [...items];\n\tconst [item] = next.splice(from, 1);\n\tif (item === undefined) return [...items];\n\tnext.splice(to, 0, item);\n\n\treturn next;\n}\n\nexport function normalizeObjects<T, K extends keyof T, O = T>(\n\titems: readonly T[] | undefined,\n\tkey: K,\n\tcopyist?: ((item: T, key: T[K]) => O) | false\n): O[] | undefined {\n\tif (!items) return undefined;\n\n\tconst out: O[] = [];\n\tconst seen = new Set<T[K]>();\n\tconst copyFn = (() => {\n\t\tif (typeof copyist === \"boolean\" && copyist === false) {\n\t\t\treturn (item: T): O => item as unknown as O;\n\t\t}\n\t\tif (typeof copyist === \"function\") {\n\t\t\treturn copyist;\n\t\t}\n\t\treturn (item: T): O => ({ ...item }) as unknown as O;\n\t})();\n\n\tfor (const item of items) {\n\t\tconst normalizedKey = normalizeText(item[key]) as T[K];\n\t\tif (!normalizedKey || seen.has(normalizedKey)) continue;\n\t\tseen.add(normalizedKey);\n\t\tout.push(copyFn(item, normalizedKey));\n\t}\n\n\treturn out.length ? out : undefined;\n}\n\nexport function normalizeStringArray(items: readonly string[] | undefined): string[] | undefined {\n\tif (!items?.length) return undefined;\n\n\tconst out: string[] = [];\n\tconst seen = new Set<string>();\n\n\tfor (const item of items) {\n\t\tconst value = item.trim();\n\t\tif (!value || seen.has(value)) continue;\n\n\t\tseen.add(value);\n\t\tout.push(value);\n\t}\n\n\treturn out.length ? out : undefined;\n}\n\nexport function addUnique(target: string[], seen: Set<string>, fieldId: string | undefined): void {\n\tconst normalizedId = fieldId?.trim();\n\tif (!normalizedId || seen.has(normalizedId)) return;\n\tseen.add(normalizedId);\n\ttarget.push(normalizedId);\n}\n","export type ReorderAction = \"start\" | \"end\" | \"up\" | \"down\";\n\nfunction resolveTargetIndex(args: { index: number; size: number; action: ReorderAction }): number {\n\tconst { index, size, action } = args;\n\n\tswitch (action) {\n\t\tcase \"start\":\n\t\t\treturn 0;\n\t\tcase \"end\":\n\t\t\treturn size - 1;\n\t\tcase \"up\":\n\t\t\treturn index - 1;\n\t\tcase \"down\":\n\t\t\treturn index + 1;\n\t}\n}\n\n/**\n * Перемещает элемент списка по одному из предопределённых действий.\n */\nexport function moveArrayItemByIndex<T>(items: readonly T[], index: number, action: ReorderAction): T[] {\n\tconst nextItems = [...items];\n\tif (index < 0 || index >= nextItems.length) return nextItems;\n\n\tconst targetIndex = resolveTargetIndex({\n\t\tindex,\n\t\tsize: nextItems.length,\n\t\taction\n\t});\n\tif (targetIndex < 0 || targetIndex >= nextItems.length || targetIndex === index) return nextItems;\n\n\tconst [item] = nextItems.splice(index, 1);\n\n\tif (item === undefined) return nextItems;\n\n\tnextItems.splice(targetIndex, 0, item);\n\treturn nextItems;\n}\n\n/**\n * Перемещает элемент списка из одного индекса в другой.\n */\nexport function moveArrayItem<T>(items: readonly T[], fromIndex: number, toIndex: number): T[] {\n\tconst nextItems = [...items];\n\n\tif (fromIndex < 0 || fromIndex >= nextItems.length || toIndex < 0 || toIndex >= nextItems.length || fromIndex === toIndex) {\n\t\treturn nextItems;\n\t}\n\n\tconst [item] = nextItems.splice(fromIndex, 1);\n\n\tif (item === undefined) {\n\t\treturn nextItems;\n\t}\n\n\tnextItems.splice(toIndex, 0, item);\n\treturn nextItems;\n}\n"],"mappings":"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"}