@ryuzaki13/react-foundation-lib 2.31.0 → 2.31.3

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 (497) hide show
  1. package/README.md +17 -5
  2. package/dist/analytical-table/definition/analyticalDefinitionConstants.d.ts +17 -0
  3. package/dist/analytical-table/definition/analyticalDefinitionConstants.d.ts.map +1 -0
  4. package/dist/analytical-table/definition/compileAnalyticalTableDefinition.d.ts.map +1 -1
  5. package/dist/analytical-table/definition/types.d.ts +6 -5
  6. package/dist/analytical-table/definition/types.d.ts.map +1 -1
  7. package/dist/analytical-table/dynamic-columns/analyticalDateColumnConstants.d.ts +7 -0
  8. package/dist/analytical-table/dynamic-columns/analyticalDateColumnConstants.d.ts.map +1 -0
  9. package/dist/analytical-table/dynamic-columns/dateColumns.d.ts.map +1 -1
  10. package/dist/analytical-table/dynamic-columns/types.d.ts +2 -1
  11. package/dist/analytical-table/dynamic-columns/types.d.ts.map +1 -1
  12. package/dist/analytical-table/index.js +124 -113
  13. package/dist/analytical-table/index.js.map +1 -1
  14. package/dist/analytical-table/projections/analyticalExportConstants.d.ts +7 -0
  15. package/dist/analytical-table/projections/analyticalExportConstants.d.ts.map +1 -0
  16. package/dist/analytical-table/projections/expansion.d.ts +2 -1
  17. package/dist/analytical-table/projections/expansion.d.ts.map +1 -1
  18. package/dist/analytical-table/projections/exportProjection.d.ts.map +1 -1
  19. package/dist/analytical-table/projections/types.d.ts +3 -2
  20. package/dist/analytical-table/projections/types.d.ts.map +1 -1
  21. package/dist/analytical-table/runtime/aggregation.d.ts.map +1 -1
  22. package/dist/analytical-table/runtime/analyticalRowConstants.d.ts +4 -0
  23. package/dist/analytical-table/runtime/analyticalRowConstants.d.ts.map +1 -0
  24. package/dist/analytical-table/runtime/analyticalViewConstants.d.ts +16 -0
  25. package/dist/analytical-table/runtime/analyticalViewConstants.d.ts.map +1 -0
  26. package/dist/analytical-table/runtime/buildGroupedModel.d.ts.map +1 -1
  27. package/dist/analytical-table/runtime/filtering.d.ts.map +1 -1
  28. package/dist/analytical-table/runtime/grouping.d.ts.map +1 -1
  29. package/dist/analytical-table/runtime/hierarchy.d.ts +2 -1
  30. package/dist/analytical-table/runtime/hierarchy.d.ts.map +1 -1
  31. package/dist/analytical-table/runtime/totals.d.ts +2 -2
  32. package/dist/analytical-table/runtime/totals.d.ts.map +1 -1
  33. package/dist/analytical-table/runtime/types.d.ts +5 -3
  34. package/dist/analytical-table/runtime/types.d.ts.map +1 -1
  35. package/dist/analytical-table/runtime/valueComparison.d.ts.map +1 -1
  36. package/dist/array/index.js +1 -1
  37. package/dist/array/reorder.d.ts +6 -1
  38. package/dist/array/reorder.d.ts.map +1 -1
  39. package/dist/async-task-runner/createCoalescingTaskRunner.d.ts.map +1 -1
  40. package/dist/async-task-runner/createDeadlineTimer.d.ts.map +1 -1
  41. package/dist/async-task-runner/index.js +39 -36
  42. package/dist/async-task-runner/index.js.map +1 -1
  43. package/dist/async-task-runner/nativeTimerConstants.d.ts +3 -0
  44. package/dist/async-task-runner/nativeTimerConstants.d.ts.map +1 -0
  45. package/dist/binary/base64Constants.d.ts +6 -0
  46. package/dist/binary/base64Constants.d.ts.map +1 -0
  47. package/dist/binary/binaryToBlob.d.ts.map +1 -1
  48. package/dist/binary/getBase64DecodedSize.d.ts.map +1 -1
  49. package/dist/binary/index.js +95 -70
  50. package/dist/binary/index.js.map +1 -1
  51. package/dist/browser-notifications/browserNotificationConstants.d.ts +3 -0
  52. package/dist/browser-notifications/browserNotificationConstants.d.ts.map +1 -0
  53. package/dist/browser-notifications/browserNotificationTypes.d.ts +2 -1
  54. package/dist/browser-notifications/browserNotificationTypes.d.ts.map +1 -1
  55. package/dist/browser-notifications/createBrowserNotificationPresenter.d.ts.map +1 -1
  56. package/dist/browser-notifications/index.js +38 -37
  57. package/dist/browser-notifications/index.js.map +1 -1
  58. package/dist/chunks/{array-D-_yMMUK.js → array-bd7LYFto.js} +1 -3
  59. package/dist/chunks/{array-D-_yMMUK.js.map → array-bd7LYFto.js.map} +1 -1
  60. package/dist/chunks/{dom-BK22UmgF.js → dom-ZSeWZ0Gg.js} +103 -98
  61. package/dist/chunks/dom-ZSeWZ0Gg.js.map +1 -0
  62. package/dist/chunks/formatDate-CNPcfNte.js +133 -0
  63. package/dist/chunks/formatDate-CNPcfNte.js.map +1 -0
  64. package/dist/chunks/{formatters-CZnnbdud.js → formatters-CO40zvVB.js} +496 -496
  65. package/dist/chunks/formatters-CO40zvVB.js.map +1 -0
  66. package/dist/chunks/{formulas-BXT_XBWI.js → formulas-Y0HOcFhe.js} +90 -86
  67. package/dist/chunks/formulas-Y0HOcFhe.js.map +1 -0
  68. package/dist/chunks/hasSignatureBytes-D2wO_Myl.js +11 -0
  69. package/dist/chunks/hasSignatureBytes-D2wO_Myl.js.map +1 -0
  70. package/dist/chunks/keyboardConstants-BZKskWsm.js +6 -0
  71. package/dist/chunks/keyboardConstants-BZKskWsm.js.map +1 -0
  72. package/dist/chunks/media-imBOXWwa.js +192 -0
  73. package/dist/chunks/media-imBOXWwa.js.map +1 -0
  74. package/dist/chunks/mimeTypeConstants-BzONV-b1.js +6 -0
  75. package/dist/chunks/mimeTypeConstants-BzONV-b1.js.map +1 -0
  76. package/dist/chunks/{query-client-CVRfrYZM.js → query-client-D0HQZ84w.js} +142 -142
  77. package/dist/chunks/query-client-D0HQZ84w.js.map +1 -0
  78. package/dist/chunks/scalarTypeClassification-D4YcGxtQ.js +766 -0
  79. package/dist/chunks/scalarTypeClassification-D4YcGxtQ.js.map +1 -0
  80. package/dist/chunks/scalarTypeConstants-CnSsjpGO.js +6 -0
  81. package/dist/chunks/scalarTypeConstants-CnSsjpGO.js.map +1 -0
  82. package/dist/chunks/utils-DW0Yso1Q.js +210 -0
  83. package/dist/chunks/utils-DW0Yso1Q.js.map +1 -0
  84. package/dist/chunks/{uuid-CUJPAbRY.js → uuid-izDzLv18.js} +1 -2
  85. package/dist/chunks/uuid-izDzLv18.js.map +1 -0
  86. package/dist/chunks/validate-8URYKKly.js +613 -0
  87. package/dist/chunks/validate-8URYKKly.js.map +1 -0
  88. package/dist/copy/index.js +5 -5
  89. package/dist/copy/index.js.map +1 -1
  90. package/dist/copy/useCopyFeedback.d.ts.map +1 -1
  91. package/dist/crypto/hashString.d.ts.map +1 -1
  92. package/dist/crypto/hexadecimalConstants.d.ts +3 -0
  93. package/dist/crypto/hexadecimalConstants.d.ts.map +1 -0
  94. package/dist/crypto/index.js +25 -24
  95. package/dist/crypto/index.js.map +1 -1
  96. package/dist/crypto/uuid.d.ts.map +1 -1
  97. package/dist/date-segments/index.js +81 -81
  98. package/dist/date-segments/index.js.map +1 -1
  99. package/dist/date-segments/mask.d.ts +13 -3
  100. package/dist/date-segments/mask.d.ts.map +1 -1
  101. package/dist/decimal/decimalConstants.d.ts +3 -0
  102. package/dist/decimal/decimalConstants.d.ts.map +1 -0
  103. package/dist/decimal/index.js +0 -2
  104. package/dist/decimal/index.js.map +1 -1
  105. package/dist/decimal/normalizeDecimal.d.ts.map +1 -1
  106. package/dist/decimal/normalizeDecimalLiteral.d.ts.map +1 -1
  107. package/dist/decimal/resolveDecimalMaxLength.d.ts.map +1 -1
  108. package/dist/decimal/sumDecimals.d.ts.map +1 -1
  109. package/dist/decimal/writeDecimalParts.d.ts.map +1 -1
  110. package/dist/dom/document-scroll/acquireDocumentScrollLock.d.ts.map +1 -1
  111. package/dist/dom/document-scroll/attachDocumentTouchScrollGuard.d.ts.map +1 -1
  112. package/dist/dom/document-scroll/canConsumeVerticalTouchScroll.d.ts.map +1 -1
  113. package/dist/dom/domEventConstants.d.ts +4 -0
  114. package/dist/dom/domEventConstants.d.ts.map +1 -0
  115. package/dist/dom/domScrollConstants.d.ts +3 -0
  116. package/dist/dom/domScrollConstants.d.ts.map +1 -0
  117. package/dist/dom/index.js +1 -1
  118. package/dist/dom/installFaviconOverride.d.ts.map +1 -1
  119. package/dist/dom/overlayFocusConstants.d.ts +4 -0
  120. package/dist/dom/overlayFocusConstants.d.ts.map +1 -0
  121. package/dist/dom/scroll-anchor/captureScrollAnchor.d.ts.map +1 -1
  122. package/dist/dom/useClickOutside.d.ts +1 -1
  123. package/dist/dom/useClickOutside.d.ts.map +1 -1
  124. package/dist/dom/useEscapeDismiss.d.ts +1 -1
  125. package/dist/dom/useEscapeDismiss.d.ts.map +1 -1
  126. package/dist/dom/useFocusTrap.d.ts.map +1 -1
  127. package/dist/dom/useIsTouchDevice.d.ts.map +1 -1
  128. package/dist/dom/useOverlayFocus.d.ts +3 -2
  129. package/dist/dom/useOverlayFocus.d.ts.map +1 -1
  130. package/dist/dom/visual-viewport/attachVisualViewportFrame.d.ts.map +1 -1
  131. package/dist/error-report/breadcrumbs.d.ts.map +1 -1
  132. package/dist/error-report/capture.d.ts.map +1 -1
  133. package/dist/error-report/captureOptions.d.ts +3 -2
  134. package/dist/error-report/captureOptions.d.ts.map +1 -1
  135. package/dist/error-report/capturePolicyConstants.d.ts +4 -0
  136. package/dist/error-report/capturePolicyConstants.d.ts.map +1 -0
  137. package/dist/error-report/dataPreview.d.ts.map +1 -1
  138. package/dist/error-report/diagnostics.d.ts.map +1 -1
  139. package/dist/error-report/drafts.d.ts.map +1 -1
  140. package/dist/error-report/environment.d.ts.map +1 -1
  141. package/dist/error-report/errorInfo.d.ts.map +1 -1
  142. package/dist/error-report/errorReportCaptureLimits.d.ts +26 -0
  143. package/dist/error-report/errorReportCaptureLimits.d.ts.map +1 -0
  144. package/dist/error-report/errorReportContractConstants.d.ts +32 -0
  145. package/dist/error-report/errorReportContractConstants.d.ts.map +1 -0
  146. package/dist/error-report/index.js +586 -587
  147. package/dist/error-report/index.js.map +1 -1
  148. package/dist/error-report/payload.d.ts.map +1 -1
  149. package/dist/error-report/queue.d.ts.map +1 -1
  150. package/dist/error-report/queueContract.d.ts +7 -6
  151. package/dist/error-report/queueContract.d.ts.map +1 -1
  152. package/dist/error-report/queueRecord.d.ts.map +1 -1
  153. package/dist/error-report/queueResultConstants.d.ts +14 -0
  154. package/dist/error-report/queueResultConstants.d.ts.map +1 -0
  155. package/dist/error-report/runtimeDeduplication.d.ts +2 -1
  156. package/dist/error-report/runtimeDeduplication.d.ts.map +1 -1
  157. package/dist/error-report/safeValue.d.ts.map +1 -1
  158. package/dist/error-report/safeValueMarkerConstants.d.ts +16 -0
  159. package/dist/error-report/safeValueMarkerConstants.d.ts.map +1 -0
  160. package/dist/error-report/schema.d.ts.map +1 -1
  161. package/dist/error-report/types.d.ts +10 -8
  162. package/dist/error-report/types.d.ts.map +1 -1
  163. package/dist/error-report-source-maps/archive.d.ts.map +1 -1
  164. package/dist/error-report-source-maps/artifact.d.ts.map +1 -1
  165. package/dist/error-report-source-maps/index.js +238 -238
  166. package/dist/error-report-source-maps/index.js.map +1 -1
  167. package/dist/error-report-source-maps/manifest.d.ts.map +1 -1
  168. package/dist/error-report-source-maps/package.d.ts.map +1 -1
  169. package/dist/error-report-source-maps/sourceMapArtifactConstants.d.ts +11 -0
  170. package/dist/error-report-source-maps/sourceMapArtifactConstants.d.ts.map +1 -0
  171. package/dist/error-report-source-maps/symbolicate.d.ts.map +1 -1
  172. package/dist/error-report-source-maps/symbolicationResultConstants.d.ts +6 -0
  173. package/dist/error-report-source-maps/symbolicationResultConstants.d.ts.map +1 -0
  174. package/dist/error-report-source-maps/types.d.ts +4 -2
  175. package/dist/error-report-source-maps/types.d.ts.map +1 -1
  176. package/dist/excel/excel.d.ts.map +1 -1
  177. package/dist/excel/excelWorkbookConstants.d.ts +6 -0
  178. package/dist/excel/excelWorkbookConstants.d.ts.map +1 -0
  179. package/dist/excel/index.js +121 -120
  180. package/dist/excel/index.js.map +1 -1
  181. package/dist/excel/matrixWorkbook.d.ts +6 -1
  182. package/dist/excel/matrixWorkbook.d.ts.map +1 -1
  183. package/dist/excel/tableExport.d.ts +2 -2
  184. package/dist/excel/tableExport.d.ts.map +1 -1
  185. package/dist/file/checkFileSignature.d.ts.map +1 -1
  186. package/dist/file/contentDisposition.d.ts.map +1 -1
  187. package/dist/file/fileSignatureConstants.d.ts +14 -18
  188. package/dist/file/fileSignatureConstants.d.ts.map +1 -1
  189. package/dist/file/fileSignatureTypes.d.ts +3 -3
  190. package/dist/file/fileSignatureTypes.d.ts.map +1 -1
  191. package/dist/file/image/imageReadConstants.d.ts +3 -0
  192. package/dist/file/image/imageReadConstants.d.ts.map +1 -0
  193. package/dist/file/image/readImageFile.d.ts +3 -2
  194. package/dist/file/image/readImageFile.d.ts.map +1 -1
  195. package/dist/file/image/types.d.ts +5 -3
  196. package/dist/file/image/types.d.ts.map +1 -1
  197. package/dist/file/index.js +139 -165
  198. package/dist/file/index.js.map +1 -1
  199. package/dist/file/mimeType.d.ts.map +1 -1
  200. package/dist/file/mimeTypeConstants.d.ts +18 -0
  201. package/dist/file/mimeTypeConstants.d.ts.map +1 -0
  202. package/dist/file/read-file/assert.d.ts.map +1 -1
  203. package/dist/file/read-file/readFile.d.ts +3 -11
  204. package/dist/file/read-file/readFile.d.ts.map +1 -1
  205. package/dist/file/read-file/readFileConstants.d.ts +13 -0
  206. package/dist/file/read-file/readFileConstants.d.ts.map +1 -0
  207. package/dist/file/read-file/types.d.ts +7 -6
  208. package/dist/file/read-file/types.d.ts.map +1 -1
  209. package/dist/file/signature/checkArchiveSignature.d.ts.map +1 -1
  210. package/dist/file-system/fileSystemConstants.d.ts +5 -0
  211. package/dist/file-system/fileSystemConstants.d.ts.map +1 -0
  212. package/dist/file-system/fileSystemTypes.d.ts +2 -1
  213. package/dist/file-system/fileSystemTypes.d.ts.map +1 -1
  214. package/dist/file-system/index.js +11 -10
  215. package/dist/file-system/index.js.map +1 -1
  216. package/dist/file-system/resolvePathInsideRoot.d.ts.map +1 -1
  217. package/dist/formatters/boolean/parseAbapBoolean.d.ts.map +1 -1
  218. package/dist/formatters/boolean/toAbapBoolean.d.ts.map +1 -1
  219. package/dist/formatters/date/calendarDate.d.ts.map +1 -1
  220. package/dist/formatters/date/calendarDateConstants.d.ts +13 -0
  221. package/dist/formatters/date/calendarDateConstants.d.ts.map +1 -0
  222. package/dist/formatters/date/calendarPeriod.d.ts +11 -2
  223. package/dist/formatters/date/calendarPeriod.d.ts.map +1 -1
  224. package/dist/formatters/date/dateFormatConstants.d.ts +17 -0
  225. package/dist/formatters/date/dateFormatConstants.d.ts.map +1 -0
  226. package/dist/formatters/date/datePatternConstants.d.ts +16 -0
  227. package/dist/formatters/date/datePatternConstants.d.ts.map +1 -0
  228. package/dist/formatters/date/datePresetNameConstants.d.ts +27 -0
  229. package/dist/formatters/date/datePresetNameConstants.d.ts.map +1 -0
  230. package/dist/formatters/date/dateRange.d.ts +3 -1
  231. package/dist/formatters/date/dateRange.d.ts.map +1 -1
  232. package/dist/formatters/date/dateValueConstants.d.ts +15 -0
  233. package/dist/formatters/date/dateValueConstants.d.ts.map +1 -0
  234. package/dist/formatters/date/educationDate.d.ts.map +1 -1
  235. package/dist/formatters/date/formatDate.d.ts.map +1 -1
  236. package/dist/formatters/date/formatInstantDateTime.d.ts.map +1 -1
  237. package/dist/formatters/date/parseDate.d.ts.map +1 -1
  238. package/dist/formatters/date/pattern.d.ts.map +1 -1
  239. package/dist/formatters/date/presets.d.ts.map +1 -1
  240. package/dist/formatters/date/types.d.ts +8 -6
  241. package/dist/formatters/date/types.d.ts.map +1 -1
  242. package/dist/formatters/formatDurationMinutes.d.ts.map +1 -1
  243. package/dist/formatters/formatFileSize.d.ts.map +1 -1
  244. package/dist/formatters/formatPhone.d.ts.map +1 -1
  245. package/dist/formatters/index.js +6 -5
  246. package/dist/formatters/normalizeLeadingZeros.d.ts.map +1 -1
  247. package/dist/formatters/number/compact.d.ts.map +1 -1
  248. package/dist/formatters/number/formatCompactNumber.d.ts.map +1 -1
  249. package/dist/formatters/number/formatNumber.d.ts.map +1 -1
  250. package/dist/formatters/number/numberFormatConstants.d.ts +11 -0
  251. package/dist/formatters/number/numberFormatConstants.d.ts.map +1 -0
  252. package/dist/formatters/number/numberPresetNameConstants.d.ts +16 -0
  253. package/dist/formatters/number/numberPresetNameConstants.d.ts.map +1 -0
  254. package/dist/formatters/number/parseNumber.d.ts.map +1 -1
  255. package/dist/formatters/number/presets.d.ts.map +1 -1
  256. package/dist/formatters/number/types.d.ts +2 -1
  257. package/dist/formatters/number/types.d.ts.map +1 -1
  258. package/dist/formatters/pipeline/clone.d.ts.map +1 -1
  259. package/dist/formatters/pipeline/definitions.d.ts.map +1 -1
  260. package/dist/formatters/pipeline/dependencies.d.ts.map +1 -1
  261. package/dist/formatters/pipeline/execute.d.ts +4 -1
  262. package/dist/formatters/pipeline/execute.d.ts.map +1 -1
  263. package/dist/formatters/pipeline/formattersPipelineConstants.d.ts +19 -0
  264. package/dist/formatters/pipeline/formattersPipelineConstants.d.ts.map +1 -0
  265. package/dist/formatters/pipeline/normalize.d.ts.map +1 -1
  266. package/dist/formatters/pipeline/pipelineValidationConstants.d.ts +40 -0
  267. package/dist/formatters/pipeline/pipelineValidationConstants.d.ts.map +1 -0
  268. package/dist/formatters/pipeline/registry.d.ts +1 -1
  269. package/dist/formatters/pipeline/registry.d.ts.map +1 -1
  270. package/dist/formatters/pipeline/rekey.d.ts.map +1 -1
  271. package/dist/formatters/pipeline/runtime.d.ts.map +1 -1
  272. package/dist/formatters/pipeline/types.d.ts +28 -25
  273. package/dist/formatters/pipeline/types.d.ts.map +1 -1
  274. package/dist/formatters/pipeline/validate.d.ts +2 -1
  275. package/dist/formatters/pipeline/validate.d.ts.map +1 -1
  276. package/dist/formatters/strings/spaceCharacterConstants.d.ts +5 -0
  277. package/dist/formatters/strings/spaceCharacterConstants.d.ts.map +1 -0
  278. package/dist/formatters/strings/stripInnerSpaces.d.ts.map +1 -1
  279. package/dist/formatters/strings/stripLeadingZeros.d.ts.map +1 -1
  280. package/dist/formatters/valueState/fixedValueStateResolver.d.ts.map +1 -1
  281. package/dist/formatters/valueState/presentation.d.ts.map +1 -1
  282. package/dist/formatters/valueState/resolveValueStateClassName.d.ts.map +1 -1
  283. package/dist/formatters/valueState/thresholdValueStateResolver.d.ts.map +1 -1
  284. package/dist/formatters/valueState/types.d.ts +2 -1
  285. package/dist/formatters/valueState/types.d.ts.map +1 -1
  286. package/dist/formatters/valueState/valueStateRegistry.d.ts.map +1 -1
  287. package/dist/formatters/valueState/valueStateResolverConstants.d.ts +6 -0
  288. package/dist/formatters/valueState/valueStateResolverConstants.d.ts.map +1 -0
  289. package/dist/formulas/execute.d.ts +3 -2
  290. package/dist/formulas/execute.d.ts.map +1 -1
  291. package/dist/formulas/index.js +1 -1
  292. package/dist/formulas/isTableFormulaDependency.d.ts.map +1 -1
  293. package/dist/formulas/tableFormulaConstants.d.ts +12 -0
  294. package/dist/formulas/tableFormulaConstants.d.ts.map +1 -0
  295. package/dist/formulas/types.d.ts +2 -1
  296. package/dist/formulas/types.d.ts.map +1 -1
  297. package/dist/formulas/validate.d.ts +2 -1
  298. package/dist/formulas/validate.d.ts.map +1 -1
  299. package/dist/hooks/index.js +110 -107
  300. package/dist/hooks/index.js.map +1 -1
  301. package/dist/hooks/useBlockBrowserZoom.d.ts.map +1 -1
  302. package/dist/hooks/useDndSortableSensors.d.ts.map +1 -1
  303. package/dist/hooks/useFloatingListbox.d.ts +15 -33
  304. package/dist/hooks/useFloatingListbox.d.ts.map +1 -1
  305. package/dist/http/index.js +8 -7
  306. package/dist/http/index.js.map +1 -1
  307. package/dist/http/textResponse.d.ts.map +1 -1
  308. package/dist/indexed-records/createIndexedRecordsSchema.d.ts.map +1 -1
  309. package/dist/indexed-records/schema.js +24 -23
  310. package/dist/indexed-records/schema.js.map +1 -1
  311. package/dist/media/breakpointConstants.d.ts +5 -0
  312. package/dist/media/breakpointConstants.d.ts.map +1 -0
  313. package/dist/media/breakpoints.d.ts +2 -1
  314. package/dist/media/breakpoints.d.ts.map +1 -1
  315. package/dist/media/createNotificationTonePlayer.d.ts.map +1 -1
  316. package/dist/media/getCurrentFontSize.d.ts.map +1 -1
  317. package/dist/media/index.js +1 -1
  318. package/dist/media/mediaQueryConstants.d.ts +3 -0
  319. package/dist/media/mediaQueryConstants.d.ts.map +1 -0
  320. package/dist/media/responsive.d.ts +1 -1
  321. package/dist/media/responsive.d.ts.map +1 -1
  322. package/dist/media/useMatchMedia.d.ts.map +1 -1
  323. package/dist/media/useMediaQuery.d.ts.map +1 -1
  324. package/dist/metadata/baseMetaTypes.d.ts +7 -0
  325. package/dist/metadata/baseMetaTypes.d.ts.map +1 -0
  326. package/dist/metadata/metadataTypes.d.ts +17 -0
  327. package/dist/metadata/metadataTypes.d.ts.map +1 -0
  328. package/dist/metadata/scalarTypeClassification.d.ts +8 -0
  329. package/dist/metadata/scalarTypeClassification.d.ts.map +1 -0
  330. package/dist/metadata/scalarTypeConstants.d.ts +21 -0
  331. package/dist/metadata/scalarTypeConstants.d.ts.map +1 -0
  332. package/dist/notifications/index.js +62 -62
  333. package/dist/notifications/index.js.map +1 -1
  334. package/dist/notifications/notificationTypeConstants.d.ts +6 -0
  335. package/dist/notifications/notificationTypeConstants.d.ts.map +1 -0
  336. package/dist/notifications/notify.d.ts.map +1 -1
  337. package/dist/notifications/store.d.ts.map +1 -1
  338. package/dist/notifications/types.d.ts +2 -1
  339. package/dist/notifications/types.d.ts.map +1 -1
  340. package/dist/number-scale/index.js +47 -46
  341. package/dist/number-scale/index.js.map +1 -1
  342. package/dist/number-scale/marksPositionConstants.d.ts +4 -0
  343. package/dist/number-scale/marksPositionConstants.d.ts.map +1 -0
  344. package/dist/number-scale/numberScale.d.ts +1 -1
  345. package/dist/number-scale/numberScale.d.ts.map +1 -1
  346. package/dist/number-scale/types.d.ts +2 -1
  347. package/dist/number-scale/types.d.ts.map +1 -1
  348. package/dist/odata-service/baseTypes.d.ts +1 -5
  349. package/dist/odata-service/baseTypes.d.ts.map +1 -1
  350. package/dist/odata-service/builder.d.ts.map +1 -1
  351. package/dist/odata-service/columns.d.ts.map +1 -1
  352. package/dist/odata-service/entityOperationConstants.d.ts +4 -0
  353. package/dist/odata-service/entityOperationConstants.d.ts.map +1 -0
  354. package/dist/odata-service/filterDefinitionConstants.d.ts +24 -0
  355. package/dist/odata-service/filterDefinitionConstants.d.ts.map +1 -0
  356. package/dist/odata-service/filterDefinitions.d.ts +19 -17
  357. package/dist/odata-service/filterDefinitions.d.ts.map +1 -1
  358. package/dist/odata-service/filterOperationConstants.d.ts +14 -0
  359. package/dist/odata-service/filterOperationConstants.d.ts.map +1 -0
  360. package/dist/odata-service/filters.d.ts.map +1 -1
  361. package/dist/odata-service/formatters.d.ts +1 -2
  362. package/dist/odata-service/formatters.d.ts.map +1 -1
  363. package/dist/odata-service/index.js +1317 -2
  364. package/dist/odata-service/index.js.map +1 -0
  365. package/dist/odata-service/odataMetadataConstants.d.ts +8 -0
  366. package/dist/odata-service/odataMetadataConstants.d.ts.map +1 -0
  367. package/dist/odata-service/parser.d.ts +1 -3
  368. package/dist/odata-service/parser.d.ts.map +1 -1
  369. package/dist/odata-service/schema.d.ts.map +1 -1
  370. package/dist/odata-service/sorts.d.ts.map +1 -1
  371. package/dist/odata-service/sqlFilters.d.ts +10 -5
  372. package/dist/odata-service/sqlFilters.d.ts.map +1 -1
  373. package/dist/odata-service/types.d.ts +13 -14
  374. package/dist/odata-service/types.d.ts.map +1 -1
  375. package/dist/odata-service/typesValidation.d.ts +1 -5
  376. package/dist/odata-service/typesValidation.d.ts.map +1 -1
  377. package/dist/pwa/index.js +72 -71
  378. package/dist/pwa/index.js.map +1 -1
  379. package/dist/pwa/sw-cache-policy.js +47 -47
  380. package/dist/pwa/sw-cache-policy.js.map +1 -1
  381. package/dist/pwa/swCachePolicy.d.ts +5 -1
  382. package/dist/pwa/swCachePolicy.d.ts.map +1 -1
  383. package/dist/pwa/useBrowserOnlineStatus.d.ts.map +1 -1
  384. package/dist/query-client/broadcast.d.ts +4 -3
  385. package/dist/query-client/broadcast.d.ts.map +1 -1
  386. package/dist/query-client/createQueryRestoreSchedulerGuard.d.ts.map +1 -1
  387. package/dist/query-client/createQueryRestoreStorage.d.ts.map +1 -1
  388. package/dist/query-client/index.js +1 -1
  389. package/dist/query-client/invalidationBroadcast.d.ts +2 -1
  390. package/dist/query-client/invalidationBroadcast.d.ts.map +1 -1
  391. package/dist/query-client/persistence.d.ts +9 -6
  392. package/dist/query-client/persistence.d.ts.map +1 -1
  393. package/dist/query-client/queryCacheEventConstants.d.ts +11 -0
  394. package/dist/query-client/queryCacheEventConstants.d.ts.map +1 -0
  395. package/dist/query-client/queryClient.d.ts +2 -1
  396. package/dist/query-client/queryClient.d.ts.map +1 -1
  397. package/dist/query-client/queryMeta.d.ts.map +1 -1
  398. package/dist/query-client/sessionPersistenceConstants.d.ts +5 -0
  399. package/dist/query-client/sessionPersistenceConstants.d.ts.map +1 -0
  400. package/dist/query-client/sessionScoped.d.ts.map +1 -1
  401. package/dist/query-client/sessionScopedResetConstants.d.ts +4 -0
  402. package/dist/query-client/sessionScopedResetConstants.d.ts.map +1 -0
  403. package/dist/query-client/sessionScopedResetLifecycleTypes.d.ts +2 -1
  404. package/dist/query-client/sessionScopedResetLifecycleTypes.d.ts.map +1 -1
  405. package/dist/seo/index.js +0 -1
  406. package/dist/seo/index.js.map +1 -1
  407. package/dist/seo/seo.d.ts +3 -2
  408. package/dist/seo/seo.d.ts.map +1 -1
  409. package/dist/seo/seoContentTypeConstants.d.ts +6 -0
  410. package/dist/seo/seoContentTypeConstants.d.ts.map +1 -0
  411. package/dist/seo/types.d.ts +2 -1
  412. package/dist/seo/types.d.ts.map +1 -1
  413. package/dist/session-storage/index.js +1 -1
  414. package/dist/table/cellSelection.d.ts.map +1 -1
  415. package/dist/table/index.js +83 -79
  416. package/dist/table/index.js.map +1 -1
  417. package/dist/table/odataAdapter.d.ts +3 -3
  418. package/dist/table/odataAdapter.d.ts.map +1 -1
  419. package/dist/table/selection.d.ts +2 -2
  420. package/dist/table/selection.d.ts.map +1 -1
  421. package/dist/table/tableColumnConstants.d.ts +5 -0
  422. package/dist/table/tableColumnConstants.d.ts.map +1 -0
  423. package/dist/table/tableSelectionConstants.d.ts +8 -0
  424. package/dist/table/tableSelectionConstants.d.ts.map +1 -0
  425. package/dist/table/tanStackFeatures.d.ts +8 -8
  426. package/dist/table/types.d.ts +5 -3
  427. package/dist/table/types.d.ts.map +1 -1
  428. package/dist/table/useTableRowSelection.d.ts +2 -2
  429. package/dist/table/useTableRowSelection.d.ts.map +1 -1
  430. package/dist/table-document/index.js +88 -87
  431. package/dist/table-document/index.js.map +1 -1
  432. package/dist/table-document/insertTableDocumentAxis.d.ts +2 -1
  433. package/dist/table-document/insertTableDocumentAxis.d.ts.map +1 -1
  434. package/dist/table-document/tableDocument.d.ts +2 -1
  435. package/dist/table-document/tableDocument.d.ts.map +1 -1
  436. package/dist/table-document/tableDocumentAxisGroups.d.ts +4 -3
  437. package/dist/table-document/tableDocumentAxisGroups.d.ts.map +1 -1
  438. package/dist/table-document/tableDocumentConstants.d.ts +8 -0
  439. package/dist/table-document/tableDocumentConstants.d.ts.map +1 -0
  440. package/dist/table-document/tableDocumentGeometry.d.ts.map +1 -1
  441. package/dist/three-scene/index.js +32 -32
  442. package/dist/three-scene/index.js.map +1 -1
  443. package/dist/three-scene/threeSceneAvailability.d.ts +4 -3
  444. package/dist/three-scene/threeSceneAvailability.d.ts.map +1 -1
  445. package/dist/three-scene/threeSceneConstants.d.ts +14 -0
  446. package/dist/three-scene/threeSceneConstants.d.ts.map +1 -0
  447. package/dist/three-scene/useThreeSceneAvailability.d.ts.map +1 -1
  448. package/dist/tree-table/index.js +1 -1
  449. package/dist/types/abapBooleanConstants.d.ts +4 -0
  450. package/dist/types/abapBooleanConstants.d.ts.map +1 -0
  451. package/dist/types/index.js.map +1 -1
  452. package/dist/types/types.d.ts +4 -2
  453. package/dist/types/types.d.ts.map +1 -1
  454. package/dist/types/valueStateConstants.d.ts +8 -0
  455. package/dist/types/valueStateConstants.d.ts.map +1 -0
  456. package/dist/utils/cloneFunctionStrategyConstants.d.ts +4 -0
  457. package/dist/utils/cloneFunctionStrategyConstants.d.ts.map +1 -0
  458. package/dist/utils/createLazyComponent.d.ts.map +1 -1
  459. package/dist/utils/deepCloneWithoutFunctions.d.ts +2 -1
  460. package/dist/utils/deepCloneWithoutFunctions.d.ts.map +1 -1
  461. package/dist/utils/deepCopyWithoutFunctions.d.ts +2 -1
  462. package/dist/utils/deepCopyWithoutFunctions.d.ts.map +1 -1
  463. package/dist/utils/index.js +2 -209
  464. package/dist/utils/keyboard.d.ts +2 -1
  465. package/dist/utils/keyboard.d.ts.map +1 -1
  466. package/dist/utils/keyboardConstants.d.ts +16 -0
  467. package/dist/utils/keyboardConstants.d.ts.map +1 -0
  468. package/dist/validators/index.js +3 -3
  469. package/dist/validators/index.js.map +1 -1
  470. package/dist/validators/validateUrl.d.ts.map +1 -1
  471. package/dist/value-transformers/execute.d.ts.map +1 -1
  472. package/dist/value-transformers/index.js +9 -6
  473. package/dist/value-transformers/index.js.map +1 -1
  474. package/dist/value-transformers/types.d.ts +3 -2
  475. package/dist/value-transformers/types.d.ts.map +1 -1
  476. package/dist/value-transformers/valueTransformerConstants.d.ts +4 -0
  477. package/dist/value-transformers/valueTransformerConstants.d.ts.map +1 -0
  478. package/package.json +6 -5
  479. package/src/binary/README.mdx +1 -1
  480. package/src/dom/README.mdx +1 -1
  481. package/src/formatters/README.mdx +5 -0
  482. package/src/foundationLib.mdx +8 -0
  483. package/src/metadata/README.md +35 -0
  484. package/src/odata-service/README.mdx +36 -1
  485. package/src/query-client/README.mdx +4 -4
  486. package/dist/chunks/dom-BK22UmgF.js.map +0 -1
  487. package/dist/chunks/formatters-CZnnbdud.js.map +0 -1
  488. package/dist/chunks/formulas-BXT_XBWI.js.map +0 -1
  489. package/dist/chunks/media-WK38KtMl.js +0 -191
  490. package/dist/chunks/media-WK38KtMl.js.map +0 -1
  491. package/dist/chunks/odata-service-tp2U5yIr.js +0 -2211
  492. package/dist/chunks/odata-service-tp2U5yIr.js.map +0 -1
  493. package/dist/chunks/query-client-CVRfrYZM.js.map +0 -1
  494. package/dist/chunks/uuid-CUJPAbRY.js.map +0 -1
  495. package/dist/chunks/validate-CEQHqevt.js +0 -608
  496. package/dist/chunks/validate-CEQHqevt.js.map +0 -1
  497. package/dist/utils/index.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import "./keyboardConstants-BZKskWsm.js";
1
2
  import { useEffect as e, useEffectEvent as t, useLayoutEffect as n, useRef as r, useState as i } from "react";
2
3
  //#region src/dom/downloadFile.ts
3
4
  function a(e, t) {
@@ -14,19 +15,20 @@ function s(e, t) {
14
15
  }
15
16
  //#endregion
16
17
  //#region src/dom/installFaviconOverride.ts
17
- function c(e, t) {
18
+ var c = "href", l = "type", u = "sizes";
19
+ function d(e, t) {
18
20
  let n = [...e.querySelectorAll("link[rel=\"icon\"]")], r = n.map((e) => ({
19
21
  icon: e,
20
- href: e.getAttribute("href"),
21
- type: e.getAttribute("type"),
22
- sizes: e.getAttribute("sizes")
22
+ href: e.getAttribute(c),
23
+ type: e.getAttribute(l),
24
+ sizes: e.getAttribute(u)
23
25
  }));
24
- for (let e of n) e.setAttribute("href", t), e.setAttribute("type", "image/svg+xml"), e.setAttribute("sizes", "any");
26
+ for (let e of n) e.setAttribute(c, t), e.setAttribute(l, "image/svg+xml"), e.setAttribute(u, "any");
25
27
  return () => {
26
- for (let e of r) if (e.icon.getAttribute("href") === t) for (let t of [
27
- "href",
28
- "type",
29
- "sizes"
28
+ for (let e of r) if (e.icon.getAttribute(c) === t) for (let t of [
29
+ c,
30
+ l,
31
+ u
30
32
  ]) {
31
33
  let n = e[t];
32
34
  n === null ? e.icon.removeAttribute(t) : e.icon.setAttribute(t, n);
@@ -35,7 +37,7 @@ function c(e, t) {
35
37
  }
36
38
  //#endregion
37
39
  //#region src/dom/getOrCreatePortalRoot.ts
38
- function l(e) {
40
+ function f(e) {
39
41
  if (typeof document > "u") return null;
40
42
  let t = document.getElementById(e);
41
43
  if (t instanceof HTMLElement) return t;
@@ -44,7 +46,7 @@ function l(e) {
44
46
  }
45
47
  //#endregion
46
48
  //#region src/dom/observeElementResize.ts
47
- function u(e, t) {
49
+ function p(e, t) {
48
50
  if (typeof ResizeObserver > "u") return () => void 0;
49
51
  let n = !0, r = new ResizeObserver((r) => {
50
52
  n && r.some((t) => t.target === e) && t();
@@ -54,16 +56,16 @@ function u(e, t) {
54
56
  };
55
57
  }
56
58
  //#endregion
57
- //#region src/dom/scroll-anchor/captureScrollAnchor.ts
58
- var d = /* @__PURE__ */ new WeakMap();
59
- function f(e, t) {
59
+ //#region src/dom/domScrollConstants.ts
60
+ var m = "instant", h = "overflow-anchor", g = /* @__PURE__ */ new WeakMap();
61
+ function _(e, t) {
60
62
  if (!e?.isConnected || !t?.isConnected || e === t || !e.contains(t)) return null;
61
- d.get(e)?.release();
62
- let n = t.getBoundingClientRect().top - e.getBoundingClientRect().top - e.clientTop + e.scrollTop, r = e.style.getPropertyValue("overflow-anchor"), i = e.style.getPropertyPriority("overflow-anchor"), a = !0;
63
- e.style.setProperty("overflow-anchor", "none", "important");
64
- let o = e.style.getPropertyValue("overflow-anchor"), s = e.style.getPropertyPriority("overflow-anchor"), c = () => e.style.getPropertyValue("overflow-anchor") === o && e.style.getPropertyPriority("overflow-anchor") === s, l = {
63
+ g.get(e)?.release();
64
+ let n = t.getBoundingClientRect().top - e.getBoundingClientRect().top - e.clientTop + e.scrollTop, r = e.style.getPropertyValue(h), i = e.style.getPropertyPriority(h), a = !0;
65
+ e.style.setProperty(h, "none", "important");
66
+ let o = e.style.getPropertyValue(h), s = e.style.getPropertyPriority(h), c = () => e.style.getPropertyValue(h) === o && e.style.getPropertyPriority(h) === s, l = {
65
67
  release() {
66
- a && (a = !1, d.delete(e), c() && (r ? e.style.setProperty("overflow-anchor", r, i) : e.style.removeProperty("overflow-anchor")));
68
+ a && (a = !1, g.delete(e), c() && (r ? e.style.setProperty(h, r, i) : e.style.removeProperty(h)));
67
69
  },
68
70
  restore() {
69
71
  if (!a) return !1;
@@ -72,18 +74,19 @@ function f(e, t) {
72
74
  let r = t.getBoundingClientRect().top - e.getBoundingClientRect().top - e.clientTop + e.scrollTop - n;
73
75
  return r !== 0 && e.scrollBy({
74
76
  top: r,
75
- behavior: "instant"
77
+ behavior: m
76
78
  }), !0;
77
79
  } finally {
78
80
  l.release();
79
81
  }
80
82
  }
81
83
  };
82
- return d.set(e, l), l;
84
+ return g.set(e, l), l;
83
85
  }
84
86
  //#endregion
85
87
  //#region src/dom/useClickOutside.ts
86
- function p(t, n) {
88
+ var v = "mousedown";
89
+ function y(t, n) {
87
90
  e(() => {
88
91
  let e = (e) => {
89
92
  if (Array.isArray(t)) {
@@ -92,12 +95,12 @@ function p(t, n) {
92
95
  r && n();
93
96
  } else t.current && !t.current.contains(e.target) && n();
94
97
  };
95
- return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
98
+ return document.addEventListener(v, e), () => document.removeEventListener(v, e);
96
99
  }, [t, n]);
97
100
  }
98
101
  //#endregion
99
102
  //#region src/dom/useElementHeightObserver.ts
100
- function m(e) {
103
+ function b(e) {
101
104
  let [t, r] = i(0);
102
105
  return n(() => {
103
106
  let t = e.current;
@@ -110,8 +113,11 @@ function m(e) {
110
113
  }, [e.current]), t;
111
114
  }
112
115
  //#endregion
116
+ //#region src/dom/domEventConstants.ts
117
+ var x = "keydown", S = "resize";
118
+ //#endregion
113
119
  //#region src/dom/useEscapeDismiss.ts
114
- function h({ active: n, onDismiss: r, enabled: i = !0, documentTarget: a, containerRef: o }) {
120
+ function C({ active: n, onDismiss: r, enabled: i = !0, documentTarget: a, containerRef: o }) {
115
121
  let s = t(() => r());
116
122
  e(() => {
117
123
  if (!n || !i) return;
@@ -122,7 +128,7 @@ function h({ active: n, onDismiss: r, enabled: i = !0, documentTarget: a, contai
122
128
  let n = e.activeElement, r = o?.current;
123
129
  r && n instanceof Node && n !== r && !r.contains(n) || (t.preventDefault(), s());
124
130
  };
125
- return e.addEventListener("keydown", t, !0), () => e.removeEventListener("keydown", t, !0);
131
+ return e.addEventListener(x, t, !0), () => e.removeEventListener(x, t, !0);
126
132
  }, [
127
133
  n,
128
134
  i,
@@ -131,10 +137,10 @@ function h({ active: n, onDismiss: r, enabled: i = !0, documentTarget: a, contai
131
137
  ]);
132
138
  }
133
139
  //#endregion
134
- //#region src/dom/useOverlayFocus.ts
135
- var g = "button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [contenteditable=\"true\"]:not([tabindex=\"-1\"]), [contenteditable=\"\"]:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])";
136
- function _({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o = "auto", restoreFocusTarget: s, containerRef: c }) {
137
- let l = r(null), u = c ?? l, d = r(null), f = t((e) => Array.from(e.querySelectorAll(g)).filter((e) => !e.hasAttribute("aria-hidden"))), p = t((e) => {
140
+ //#region src/dom/overlayFocusConstants.ts
141
+ var w = "auto", T = "button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [contenteditable=\"true\"]:not([tabindex=\"-1\"]), [contenteditable=\"\"]:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])";
142
+ function E({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o = w, restoreFocusTarget: s, containerRef: c }) {
143
+ let l = r(null), u = c ?? l, d = r(null), f = t((e) => Array.from(e.querySelectorAll(T)).filter((e) => !e.hasAttribute("aria-hidden"))), p = t((e) => {
138
144
  if (o === "container") return e;
139
145
  if (typeof o == "function") return o(e) ?? e;
140
146
  let t = f(e);
@@ -149,7 +155,7 @@ function _({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o
149
155
  return;
150
156
  }
151
157
  let n = p(e);
152
- n instanceof HTMLElement && n.isConnected && n.focus({ preventScroll: !0 }), i && e.addEventListener("keydown", o);
158
+ n instanceof HTMLElement && n.isConnected && n.focus({ preventScroll: !0 }), i && e.addEventListener(x, o);
153
159
  }, o = (t) => {
154
160
  if (!i || t.key !== "Tab" || !e) return;
155
161
  let n = f(e);
@@ -165,7 +171,7 @@ function _({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o
165
171
  o === a && (t.preventDefault(), r.focus());
166
172
  };
167
173
  return r(), () => {
168
- if (window.cancelAnimationFrame(t), i && e && e.removeEventListener("keydown", o), !a) return;
174
+ if (window.cancelAnimationFrame(t), i && e && e.removeEventListener(x, o), !a) return;
169
175
  let n = m();
170
176
  n?.isConnected && n.focus({ preventScroll: !0 });
171
177
  };
@@ -178,15 +184,15 @@ function _({ active: n, trapFocus: i = !1, restoreFocus: a = !0, initialFocus: o
178
184
  }
179
185
  //#endregion
180
186
  //#region src/dom/useFocusTrap.ts
181
- var v = (e) => _({
187
+ var D = (e) => E({
182
188
  active: e,
183
189
  trapFocus: !0,
184
190
  restoreFocus: !0,
185
- initialFocus: "auto"
191
+ initialFocus: w
186
192
  });
187
193
  //#endregion
188
194
  //#region src/dom/useIntersectionObserver.ts
189
- function y(t, n) {
195
+ function ee(t, n) {
190
196
  let [r, a] = i(!1);
191
197
  return e(() => {
192
198
  let e = t.current;
@@ -201,21 +207,19 @@ function y(t, n) {
201
207
  }
202
208
  //#endregion
203
209
  //#region src/dom/useIsTouchDevice.ts
204
- var b = () => {
210
+ var O = () => {
205
211
  let [t, n] = i(!1);
206
212
  return e(() => {
207
213
  let e = () => {
208
214
  let e = window.matchMedia("(pointer: coarse)").matches || "ontouchstart" in window || navigator.maxTouchPoints > 0;
209
215
  n(e);
210
216
  };
211
- return e(), window.addEventListener("resize", e), () => {
212
- window.removeEventListener("resize", e);
217
+ return e(), window.addEventListener(S, e), () => {
218
+ window.removeEventListener(S, e);
213
219
  };
214
220
  }, []), t;
215
- };
216
- //#endregion
217
- //#region src/dom/document-scroll/canConsumeVerticalTouchScroll.ts
218
- function x(e, t, n) {
221
+ }, k = 1;
222
+ function A(e, t, n) {
219
223
  let r = e.defaultView;
220
224
  if (!r) return !0;
221
225
  for (let i of t) {
@@ -225,14 +229,14 @@ function x(e, t, n) {
225
229
  if (!/^(auto|scroll|overlay)$/.test(t.overflowY)) continue;
226
230
  if (t.flexDirection === "column-reverse" || t.writingMode && t.writingMode !== "horizontal-tb") return !0;
227
231
  let a = Math.max(0, i.scrollHeight - i.clientHeight), o = Math.max(0, Math.min(a, i.scrollTop));
228
- if (n > 0 ? a - o > 1 : o > 1) return !0;
232
+ if (n > 0 ? a - o > k : o > k) return !0;
229
233
  if (/^(contain|none)$/.test(t.overscrollBehaviorY)) return !1;
230
234
  }
231
235
  return !1;
232
236
  }
233
237
  //#endregion
234
238
  //#region src/dom/document-scroll/isNativeTouchInteraction.ts
235
- function S(e, t) {
239
+ function j(e, t) {
236
240
  let n = e.defaultView;
237
241
  if (!n) return !0;
238
242
  let r = !1, i;
@@ -251,11 +255,12 @@ function S(e, t) {
251
255
  }
252
256
  //#endregion
253
257
  //#region src/dom/document-scroll/attachDocumentTouchScrollGuard.ts
254
- function C(e) {
258
+ var M = "touchstart", N = "touchmove", P = "touchend", F = "touchcancel";
259
+ function te(e) {
255
260
  let t = e.defaultView, n = null, r = !1, i = (i) => {
256
261
  if (r) return;
257
262
  let a = i.touches[0], o = i.composedPath();
258
- if (i.touches.length !== 1 || !a || (t?.visualViewport?.scale ?? 1) > 1 || S(e, o)) {
263
+ if (i.touches.length !== 1 || !a || (t?.visualViewport?.scale ?? 1) > 1 || j(e, o)) {
259
264
  r = !0, n = null;
260
265
  return;
261
266
  }
@@ -278,92 +283,92 @@ function C(e) {
278
283
  x: a.clientX,
279
284
  y: a.clientY,
280
285
  path: c
281
- }, S(e, c)) {
286
+ }, j(e, c)) {
282
287
  r = !0;
283
288
  return;
284
289
  }
285
- !i.cancelable || i.defaultPrevented || !u || Math.abs(l) >= Math.abs(u) || x(e, c, u) || i.preventDefault();
290
+ !i.cancelable || i.defaultPrevented || !u || Math.abs(l) >= Math.abs(u) || A(e, c, u) || i.preventDefault();
286
291
  }, o = (e) => {
287
292
  e.touches.length > 0 || (n = null, r = !1);
288
293
  };
289
- return e.addEventListener("touchstart", i, {
294
+ return e.addEventListener(M, i, {
290
295
  capture: !0,
291
296
  passive: !0
292
- }), e.addEventListener("touchmove", a, {
297
+ }), e.addEventListener(N, a, {
293
298
  capture: !0,
294
299
  passive: !1
295
- }), e.addEventListener("touchend", o, {
300
+ }), e.addEventListener(P, o, {
296
301
  capture: !0,
297
302
  passive: !0
298
- }), e.addEventListener("touchcancel", o, {
303
+ }), e.addEventListener(F, o, {
299
304
  capture: !0,
300
305
  passive: !0
301
306
  }), () => {
302
- e.removeEventListener("touchstart", i, !0), e.removeEventListener("touchmove", a, !0), e.removeEventListener("touchend", o, !0), e.removeEventListener("touchcancel", o, !0), n = null;
307
+ e.removeEventListener(M, i, !0), e.removeEventListener(N, a, !0), e.removeEventListener(P, o, !0), e.removeEventListener(F, o, !0), n = null;
303
308
  };
304
309
  }
305
310
  //#endregion
306
311
  //#region src/dom/document-scroll/acquireDocumentScrollLock.ts
307
- var w = /* @__PURE__ */ new WeakMap();
308
- function T(e, t) {
312
+ var I = "overflow", L = "overflow-x", R = "overflow-y", z = "position", B = "top", V = "left", H = "width", U = "box-sizing", W = "padding-right", G = "hidden", K = /* @__PURE__ */ new WeakMap();
313
+ function q(e, t) {
309
314
  return t.map((t) => ({
310
315
  name: t,
311
316
  value: e.getPropertyValue(t),
312
317
  priority: e.getPropertyPriority(t)
313
318
  }));
314
319
  }
315
- function E(e, t) {
320
+ function J(e, t) {
316
321
  for (let { name: n } of t) e.removeProperty(n);
317
322
  for (let { name: n, value: r, priority: i } of t) r && e.setProperty(n, r, i);
318
323
  }
319
- function D(e, t) {
324
+ function Y(e, t) {
320
325
  let n = e.defaultView, r = e.body;
321
326
  if (!n || !r) return () => void 0;
322
- let i = w.get(e);
327
+ let i = K.get(e);
323
328
  if (!i) {
324
- let t = e.documentElement.style, a = r.style, o = T(t, [
325
- "overflow",
326
- "overflow-x",
327
- "overflow-y"
328
- ]), s = T(a, [
329
- "position",
330
- "top",
331
- "left",
332
- "width",
333
- "overflow",
334
- "overflow-x",
335
- "overflow-y",
336
- "box-sizing",
337
- "padding-right"
338
- ]), c = T(a, ["padding-right"]), l = n.scrollX, u = n.scrollY, d = Math.max(0, n.innerWidth - e.documentElement.clientWidth), f = Number.parseFloat(n.getComputedStyle(r).paddingRight) || 0, p = /* @__PURE__ */ new Map();
339
- t.setProperty("overflow", "hidden"), a.setProperty("position", "fixed"), a.setProperty("top", `${-u}px`), a.setProperty("left", `${-l}px`), a.setProperty("width", "100%"), a.setProperty("overflow", "hidden"), a.setProperty("box-sizing", "border-box");
340
- let m = C(e);
329
+ let t = e.documentElement.style, a = r.style, o = q(t, [
330
+ I,
331
+ L,
332
+ R
333
+ ]), s = q(a, [
334
+ z,
335
+ B,
336
+ V,
337
+ H,
338
+ I,
339
+ L,
340
+ R,
341
+ U,
342
+ W
343
+ ]), c = q(a, [W]), l = n.scrollX, u = n.scrollY, d = Math.max(0, n.innerWidth - e.documentElement.clientWidth), f = Number.parseFloat(n.getComputedStyle(r).paddingRight) || 0, p = /* @__PURE__ */ new Map();
344
+ t.setProperty(I, G), a.setProperty(z, "fixed"), a.setProperty(B, `${-u}px`), a.setProperty(V, `${-l}px`), a.setProperty(H, "100%"), a.setProperty(I, G), a.setProperty(U, "border-box");
345
+ let h = te(e);
341
346
  i = {
342
347
  leases: p,
343
348
  updateCompensation: () => {
344
- d > 0 && [...p.values()].some(Boolean) ? a.setProperty("padding-right", `${f + d}px`) : E(a, c);
349
+ d > 0 && [...p.values()].some(Boolean) ? a.setProperty(W, `${f + d}px`) : J(a, c);
345
350
  },
346
351
  restore: () => {
347
- m(), E(t, o), E(a, s), n.scrollTo({
352
+ h(), J(t, o), J(a, s), n.scrollTo({
348
353
  left: l,
349
354
  top: u,
350
- behavior: "instant"
355
+ behavior: m
351
356
  });
352
357
  }
353
- }, w.set(e, i);
358
+ }, K.set(e, i);
354
359
  }
355
360
  let a = Symbol();
356
361
  return i.leases.set(a, t), i.updateCompensation(), () => {
357
- i.leases.delete(a) && (i.leases.size > 0 ? i.updateCompensation() : (w.delete(e), i.restore()));
362
+ i.leases.delete(a) && (i.leases.size > 0 ? i.updateCompensation() : (K.delete(e), i.restore()));
358
363
  };
359
364
  }
360
365
  //#endregion
361
366
  //#region src/dom/useDocumentScrollLock.ts
362
- function O({ active: t, documentTarget: n, compensateScrollbar: r = !1 }) {
367
+ function X({ active: t, documentTarget: n, compensateScrollbar: r = !1 }) {
363
368
  e(() => {
364
369
  if (!t) return;
365
370
  let e = n === void 0 ? typeof document > "u" ? null : document : n;
366
- if (e) return D(e, r);
371
+ if (e) return Y(e, r);
367
372
  }, [
368
373
  t,
369
374
  n,
@@ -372,16 +377,16 @@ function O({ active: t, documentTarget: n, compensateScrollbar: r = !1 }) {
372
377
  }
373
378
  //#endregion
374
379
  //#region src/dom/visual-viewport/attachVisualViewportFrame.ts
375
- var k = [
380
+ var Z = "scroll", Q = [
376
381
  "--visual-viewport-top",
377
382
  "--visual-viewport-left",
378
383
  "--visual-viewport-width",
379
384
  "--visual-viewport-height"
380
- ], A = /* @__PURE__ */ new WeakMap();
381
- function j(e) {
385
+ ], $ = /* @__PURE__ */ new WeakMap();
386
+ function ne(e) {
382
387
  let t = e.ownerDocument.defaultView;
383
388
  if (!t) return () => void 0;
384
- let n = t.visualViewport, r = e.style, i = k.map((e) => ({
389
+ let n = t.visualViewport, r = e.style, i = Q.map((e) => ({
385
390
  name: e,
386
391
  value: r.getPropertyValue(e),
387
392
  priority: r.getPropertyPriority(e)
@@ -398,37 +403,37 @@ function j(e) {
398
403
  t.innerWidth,
399
404
  t.innerHeight
400
405
  ];
401
- k.forEach((t, n) => {
406
+ Q.forEach((t, n) => {
402
407
  let o = `${Number.isFinite(e[n]) ? e[n] : i[n]}px`;
403
408
  a.get(t) !== o && (r.setProperty(t, o), a.set(t, o));
404
409
  });
405
410
  }, c = () => {
406
411
  o ||= t.requestAnimationFrame(s);
407
412
  };
408
- return s(), n?.addEventListener("resize", c), n?.addEventListener("scroll", c), t.addEventListener("resize", c), () => {
409
- t.cancelAnimationFrame(o), n?.removeEventListener("resize", c), n?.removeEventListener("scroll", c), t.removeEventListener("resize", c);
413
+ return s(), n?.addEventListener(S, c), n?.addEventListener(Z, c), t.addEventListener(S, c), () => {
414
+ t.cancelAnimationFrame(o), n?.removeEventListener(S, c), n?.removeEventListener(Z, c), t.removeEventListener(S, c);
410
415
  for (let { name: e, value: t, priority: n } of i) r.getPropertyValue(e) !== a.get(e) || r.getPropertyPriority(e) || (t ? r.setProperty(e, t, n) : r.removeProperty(e));
411
416
  };
412
417
  }
413
- function M(e) {
414
- let t = A.get(e);
418
+ function re(e) {
419
+ let t = $.get(e);
415
420
  t || (t = {
416
421
  leases: /* @__PURE__ */ new Set(),
417
- detach: j(e)
418
- }, A.set(e, t));
422
+ detach: ne(e)
423
+ }, $.set(e, t));
419
424
  let n = Symbol();
420
425
  return t.leases.add(n), () => {
421
- !t.leases.delete(n) || t.leases.size > 0 || (A.delete(e), t.detach());
426
+ !t.leases.delete(n) || t.leases.size > 0 || ($.delete(e), t.detach());
422
427
  };
423
428
  }
424
429
  //#endregion
425
430
  //#region src/dom/useVisualViewportFrame.ts
426
- function N({ active: t, containerRef: n }) {
431
+ function ie({ active: t, containerRef: n }) {
427
432
  e(() => {
428
433
  if (!t || typeof window > "u") return;
429
434
  let e = 0, r, i = () => {
430
435
  let t = n.current;
431
- t ? r = M(t) : e = window.requestAnimationFrame(i);
436
+ t ? r = re(t) : e = window.requestAnimationFrame(i);
432
437
  };
433
438
  return i(), () => {
434
439
  window.cancelAnimationFrame(e), r?.();
@@ -436,6 +441,6 @@ function N({ active: t, containerRef: n }) {
436
441
  }, [t, n]);
437
442
  }
438
443
  //#endregion
439
- export { v as a, m as c, u as d, l as f, a as g, s as h, y as i, p as l, o as m, O as n, _ as o, c as p, b as r, h as s, N as t, f as u };
444
+ export { D as a, b as c, p as d, f, a as g, s as h, ee as i, y as l, o as m, X as n, E as o, d as p, O as r, C as s, ie as t, _ as u };
440
445
 
441
- //# sourceMappingURL=dom-BK22UmgF.js.map
446
+ //# sourceMappingURL=dom-ZSeWZ0Gg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-ZSeWZ0Gg.js","names":[],"sources":["../../src/dom/downloadFile.ts","../../src/dom/installFaviconOverride.ts","../../src/dom/getOrCreatePortalRoot.ts","../../src/dom/observeElementResize.ts","../../src/dom/domScrollConstants.ts","../../src/dom/scroll-anchor/captureScrollAnchor.ts","../../src/dom/useClickOutside.ts","../../src/dom/useElementHeightObserver.ts","../../src/dom/domEventConstants.ts","../../src/dom/useEscapeDismiss.ts","../../src/dom/overlayFocusConstants.ts","../../src/dom/useOverlayFocus.ts","../../src/dom/useFocusTrap.ts","../../src/dom/useIntersectionObserver.ts","../../src/dom/useIsTouchDevice.ts","../../src/dom/document-scroll/canConsumeVerticalTouchScroll.ts","../../src/dom/document-scroll/isNativeTouchInteraction.ts","../../src/dom/document-scroll/attachDocumentTouchScrollGuard.ts","../../src/dom/document-scroll/acquireDocumentScrollLock.ts","../../src/dom/useDocumentScrollLock.ts","../../src/dom/visual-viewport/attachVisualViewportFrame.ts","../../src/dom/useVisualViewportFrame.ts"],"sourcesContent":["export function downloadFileFromObjectURL(filename: string, objectUrl: string) {\n\tconst link = document.createElement(\"a\");\n\n\tlink.href = objectUrl;\n\tlink.download = filename;\n\tlink.click();\n\n\twindow.setTimeout(() => {\n\t\twindow.URL.revokeObjectURL(objectUrl);\n\t}, 0);\n}\n\nexport function downloadFileFromBlob(filename: string, blob: Blob) {\n\tconst objectUrl = window.URL.createObjectURL(blob);\n\tdownloadFileFromObjectURL(filename, objectUrl);\n}\n\nexport function downloadFileFromJson(filename: string, payload: unknown) {\n\tconst blob = new Blob([JSON.stringify(payload, null, 2)], { type: \"application/json;charset=utf-8\" });\n\tdownloadFileFromBlob(filename, blob);\n}\n","// Снимок и восстановление используют один набор принадлежащих override атрибутов.\nconst ICON_HREF_ATTRIBUTE = \"href\";\nconst ICON_TYPE_ATTRIBUTE = \"type\";\nconst ICON_SIZES_ATTRIBUTE = \"sizes\";\n\n/**\n * Временный SVG favicon с симметричным восстановлением атрибутов. Сохраняет\n * media исходных links; не меняет Apple/mask icons и не удаляет чужие узлы head.\n */\nexport function installFaviconOverride(document: Document, href: string): () => void {\n\tconst icons = [...document.querySelectorAll<HTMLLinkElement>('link[rel=\"icon\"]')];\n\tconst snapshots = icons.map((icon) => ({\n\t\ticon,\n\t\thref: icon.getAttribute(ICON_HREF_ATTRIBUTE),\n\t\ttype: icon.getAttribute(ICON_TYPE_ATTRIBUTE),\n\t\tsizes: icon.getAttribute(ICON_SIZES_ATTRIBUTE)\n\t}));\n\tfor (const icon of icons) {\n\t\ticon.setAttribute(ICON_HREF_ATTRIBUTE, href);\n\t\ticon.setAttribute(ICON_TYPE_ATTRIBUTE, \"image/svg+xml\");\n\t\ticon.setAttribute(ICON_SIZES_ATTRIBUTE, \"any\");\n\t}\n\treturn () => {\n\t\tfor (const snapshot of snapshots) {\n\t\t\tif (snapshot.icon.getAttribute(ICON_HREF_ATTRIBUTE) !== href) continue;\n\t\t\tfor (const attribute of [ICON_HREF_ATTRIBUTE, ICON_TYPE_ATTRIBUTE, ICON_SIZES_ATTRIBUTE] as const) {\n\t\t\t\tconst value = snapshot[attribute];\n\t\t\t\tif (value === null) snapshot.icon.removeAttribute(attribute);\n\t\t\t\telse snapshot.icon.setAttribute(attribute, value);\n\t\t\t}\n\t\t}\n\t};\n}\n","export function getOrCreatePortalRoot(id: string): HTMLElement | null {\n\tif (typeof document === \"undefined\") {\n\t\treturn null;\n\t}\n\n\tconst existingElement = document.getElementById(id);\n\tif (existingElement instanceof HTMLElement) {\n\t\treturn existingElement;\n\t}\n\n\tconst portalRoot = document.createElement(\"div\");\n\tportalRoot.id = id;\n\tdocument.body.append(portalRoot);\n\n\treturn portalRoot;\n}\n","/**\n * Наблюдает изменение одного DOM-контейнера без React state. Callback вызывается\n * в batched delivery ResizeObserver, поэтому дополнительный animation frame не нужен.\n * Возвращённый cleanup отключает observer и игнорирует уже поставленную delivery.\n */\nexport function observeElementResize(element: HTMLElement, onResize: () => void): () => void {\n\tif (typeof ResizeObserver === \"undefined\") return () => undefined;\n\tlet active = true;\n\tconst observer = new ResizeObserver((entries) => {\n\t\tif (active && entries.some((entry) => entry.target === element)) onResize();\n\t});\n\tobserver.observe(element);\n\treturn () => {\n\t\tif (!active) return;\n\t\tactive = false;\n\t\tobserver.disconnect();\n\t};\n}\n","/** Компенсация позиции не должна наследовать пользовательский CSS smooth scrolling. */\nexport const DOM_INSTANT_SCROLL_BEHAVIOR = \"instant\";\n","import { DOM_INSTANT_SCROLL_BEHAVIOR } from \"../domScrollConstants\";\n\nimport { type CapturedScrollAnchor } from \"./scrollAnchorTypes\";\n\nconst OVERFLOW_ANCHOR_PROPERTY = \"overflow-anchor\";\n\n// Один scroll host не может одновременно компенсировать один и тот же prepend дважды.\nconst activeAnchors = new WeakMap<HTMLElement, CapturedScrollAnchor>();\n\n/**\n * Захватывает позицию сохраняемого элемента перед изменением обычного вертикального списка.\n * Вызывать только на browser event/effect boundary; restore — после DOM commit, release — при отмене.\n * Новый захват того же viewport завершает предыдущий без прокрутки.\n */\nexport function captureScrollAnchor(viewport: HTMLElement | null, anchor: HTMLElement | null): CapturedScrollAnchor | null {\n\tif (!viewport?.isConnected || !anchor?.isConnected || viewport === anchor || !viewport.contains(anchor)) return null;\n\n\tactiveAnchors.get(viewport)?.release();\n\tconst initialOffset =\n\t\tanchor.getBoundingClientRect().top - viewport.getBoundingClientRect().top - viewport.clientTop + viewport.scrollTop;\n\tconst initialStyle = viewport.style.getPropertyValue(OVERFLOW_ANCHOR_PROPERTY);\n\tconst initialPriority = viewport.style.getPropertyPriority(OVERFLOW_ANCHOR_PROPERTY);\n\tlet active = true;\n\n\t// Native anchoring иначе успеет компенсировать prepend до restore и приведёт к двойному сдвигу.\n\tviewport.style.setProperty(OVERFLOW_ANCHOR_PROPERTY, \"none\", \"important\");\n\t// В браузере без этого CSS-свойства native anchoring тоже отсутствует: сравниваем фактически принятый стиль.\n\tconst ownedStyle = viewport.style.getPropertyValue(OVERFLOW_ANCHOR_PROPERTY);\n\tconst ownedPriority = viewport.style.getPropertyPriority(OVERFLOW_ANCHOR_PROPERTY);\n\tconst ownsStyle = () =>\n\t\tviewport.style.getPropertyValue(OVERFLOW_ANCHOR_PROPERTY) === ownedStyle &&\n\t\tviewport.style.getPropertyPriority(OVERFLOW_ANCHOR_PROPERTY) === ownedPriority;\n\n\tconst operation: CapturedScrollAnchor = {\n\t\trelease() {\n\t\t\tif (!active) return;\n\t\t\tactive = false;\n\t\t\tactiveAnchors.delete(viewport);\n\t\t\t// Не затираем новое решение host, если он сам изменил свойство во время ожидания.\n\t\t\tif (!ownsStyle()) return;\n\t\t\tif (initialStyle) viewport.style.setProperty(OVERFLOW_ANCHOR_PROPERTY, initialStyle, initialPriority);\n\t\t\telse viewport.style.removeProperty(OVERFLOW_ANCHOR_PROPERTY);\n\t\t},\n\t\trestore() {\n\t\t\tif (!active) return false;\n\t\t\ttry {\n\t\t\t\tif (!viewport.isConnected || !anchor.isConnected || !viewport.contains(anchor) || !ownsStyle()) return false;\n\t\t\t\tconst currentOffset =\n\t\t\t\t\tanchor.getBoundingClientRect().top - viewport.getBoundingClientRect().top - viewport.clientTop + viewport.scrollTop;\n\t\t\t\tconst delta = currentOffset - initialOffset;\n\t\t\t\t// Content-space delta не отменяет ручную прокрутку между запросом и commit.\n\t\t\t\t// Instant не наследует CSS smooth; горизонтальная позиция остаётся неизменной.\n\t\t\t\tif (delta !== 0) viewport.scrollBy({ top: delta, behavior: DOM_INSTANT_SCROLL_BEHAVIOR });\n\t\t\t\treturn true;\n\t\t\t} finally {\n\t\t\t\toperation.release();\n\t\t\t}\n\t\t}\n\t};\n\tactiveAnchors.set(viewport, operation);\n\treturn operation;\n}\n","import { type RefObject, useEffect } from \"react\";\n\nconst MOUSE_DOWN_EVENT = \"mousedown\";\n\nexport function useClickOutside(ref: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[], handler: () => void) {\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (Array.isArray(ref)) {\n\t\t\t\tlet isOutside = true;\n\t\t\t\tfor (const r of ref) {\n\t\t\t\t\tif (r.current && r.current.contains(event.target as Node)) {\n\t\t\t\t\t\tisOutside = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isOutside) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} else if (ref.current && !ref.current.contains(event.target as Node)) {\n\t\t\t\thandler();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener(MOUSE_DOWN_EVENT, handleClickOutside);\n\t\treturn () => document.removeEventListener(MOUSE_DOWN_EVENT, handleClickOutside);\n\t}, [ref, handler]);\n}\n","import { type RefObject, useLayoutEffect, useState } from \"react\";\n\nexport function useElementHeightObserver<TElement extends HTMLElement>(elementRef: RefObject<TElement | null>) {\n\tconst [height, setHeight] = useState(0);\n\n\tuseLayoutEffect(() => {\n\t\tconst element = elementRef.current;\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\tconst nextHeight = entries[0]?.contentRect.height ?? element.getBoundingClientRect().height;\n\t\t\tsetHeight(nextHeight);\n\t\t});\n\t\tobserver.observe(element);\n\n\t\treturn () => observer.disconnect();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps, react-hooks/refs\n\t}, [elementRef.current]);\n\n\treturn height;\n}\n","/** Общие имена событий сохраняют симметрию подписки и её освобождения в DOM-модуле. */\nexport const DOM_KEYDOWN_EVENT = \"keydown\";\nexport const DOM_RESIZE_EVENT = \"resize\";\n","import { type RefObject, useEffect, useEffectEvent } from \"react\";\n\nimport { KEYBOARD_KEY_ESCAPE } from \"../utils/keyboardConstants\";\n\nimport { DOM_KEYDOWN_EVENT } from \"./domEventConstants\";\n\ninterface UseEscapeDismissOptions {\n\tactive: boolean;\n\tonDismiss: () => void;\n\tenabled?: boolean;\n\tdocumentTarget?: Document | null;\n\tcontainerRef?: RefObject<HTMLElement | null>;\n}\n\n/**\n * Подписывает overlay на закрытие по клавише Escape.\n */\nexport function useEscapeDismiss({ active, onDismiss, enabled = true, documentTarget, containerRef }: UseEscapeDismissOptions) {\n\tconst dismiss = useEffectEvent(() => onDismiss());\n\n\tuseEffect(() => {\n\t\tif (!active || !enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetDocument = documentTarget ?? (typeof document === \"undefined\" ? null : document);\n\t\tif (!targetDocument) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key !== KEYBOARD_KEY_ESCAPE /*|| event.defaultPrevented*/) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst activeElement = targetDocument.activeElement;\n\t\t\tconst container = containerRef?.current;\n\t\t\tif (container && activeElement instanceof Node && activeElement !== container && !container.contains(activeElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\tdismiss();\n\t\t};\n\n\t\ttargetDocument.addEventListener(DOM_KEYDOWN_EVENT, handleKeyDown, true);\n\t\treturn () => targetDocument.removeEventListener(DOM_KEYDOWN_EVENT, handleKeyDown, true);\n\t}, [active, enabled, documentTarget, containerRef]);\n}\n","/** Начальный фокус одинаково трактуется основным hook и обёрткой focus trap. */\nexport const OVERLAY_INITIAL_FOCUS_AUTO = \"auto\";\nexport const OVERLAY_INITIAL_FOCUS_CONTAINER = \"container\";\n","import { type RefObject, useEffect, useEffectEvent, useRef } from \"react\";\n\nimport { KEYBOARD_KEY_TAB } from \"../utils/keyboardConstants\";\n\nimport { DOM_KEYDOWN_EVENT } from \"./domEventConstants\";\nimport { OVERLAY_INITIAL_FOCUS_AUTO, OVERLAY_INITIAL_FOCUS_CONTAINER } from \"./overlayFocusConstants\";\n\nconst focusableElementsSelector =\n\t'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [contenteditable=\"true\"]:not([tabindex=\"-1\"]), [contenteditable=\"\"]:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])';\n\nexport interface UseOverlayFocusOptions<T extends HTMLElement> {\n\tactive: boolean;\n\ttrapFocus?: boolean;\n\trestoreFocus?: boolean;\n\tinitialFocus?:\n\t\ttypeof OVERLAY_INITIAL_FOCUS_AUTO | typeof OVERLAY_INITIAL_FOCUS_CONTAINER | ((container: T) => HTMLElement | null | undefined);\n\trestoreFocusTarget?: () => HTMLElement | null | undefined;\n\tcontainerRef?: RefObject<T | null>;\n}\n\n/**\n * Возвращает ref overlay-контейнера и управляет начальными/возвратными переходами фокуса.\n * Открытие и закрытие не прокручивают документ: портал может получить фокус\n * до завершения позиционирования. Пользовательский Tab по-прежнему раскрывает\n * выбранный элемент в прокручиваемом содержимом overlay.\n */\nexport function useOverlayFocus<T extends HTMLElement>({\n\tactive,\n\ttrapFocus = false,\n\trestoreFocus = true,\n\tinitialFocus = OVERLAY_INITIAL_FOCUS_AUTO,\n\trestoreFocusTarget,\n\tcontainerRef\n}: UseOverlayFocusOptions<T>) {\n\tconst internalOverlayRef = useRef<T | null>(null);\n\tconst overlayRef = containerRef ?? internalOverlayRef;\n\tconst previousActiveElementRef = useRef<HTMLElement | null>(null);\n\n\t/**\n\t * Собирает фокусируемые элементы overlay в актуальном DOM-порядке.\n\t */\n\tconst getFocusableElements = useEffectEvent((container: T) =>\n\t\tArray.from(container.querySelectorAll<HTMLElement>(focusableElementsSelector)).filter(\n\t\t\t(element) => !element.hasAttribute(\"aria-hidden\")\n\t\t)\n\t);\n\n\t/**\n\t * Вычисляет стартовый фокус при открытии overlay.\n\t */\n\tconst resolveInitialFocus = useEffectEvent((container: T) => {\n\t\tif (initialFocus === OVERLAY_INITIAL_FOCUS_CONTAINER) {\n\t\t\treturn container;\n\t\t}\n\n\t\tif (typeof initialFocus === \"function\") {\n\t\t\treturn initialFocus(container) ?? container;\n\t\t}\n\n\t\tconst focusableElements = getFocusableElements(container);\n\t\treturn (\n\t\t\tfocusableElements.find((element) => element.hasAttribute(\"autofocus\") || element.hasAttribute(\"autoFocus\")) ??\n\t\t\tfocusableElements[0] ??\n\t\t\tcontainer\n\t\t);\n\t});\n\n\t/**\n\t * Вычисляет элемент, которому нужно вернуть фокус после закрытия overlay.\n\t */\n\tconst resolveRestoreFocusTarget = useEffectEvent(() => restoreFocusTarget?.() ?? previousActiveElementRef.current);\n\n\tuseEffect(() => {\n\t\tif (!active) {\n\t\t\treturn;\n\t\t}\n\n\t\tpreviousActiveElementRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n\t\tlet overlayElement: T | null = null;\n\t\tlet rafId = 0;\n\n\t\t/**\n\t\t * Цикл откладывает инициализацию, пока ref контейнера не будет привязан к DOM.\n\t\t */\n\t\tconst attachOverlay = () => {\n\t\t\toverlayElement = overlayRef.current;\n\t\t\tif (!overlayElement) {\n\t\t\t\trafId = window.requestAnimationFrame(attachOverlay);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst focusTarget = resolveInitialFocus(overlayElement);\n\t\t\tif (focusTarget instanceof HTMLElement && focusTarget.isConnected) {\n\t\t\t\tfocusTarget.focus({ preventScroll: true });\n\t\t\t}\n\n\t\t\tif (trapFocus) {\n\t\t\t\toverlayElement.addEventListener(DOM_KEYDOWN_EVENT, handleTabKey);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Зацикливает Tab внутри overlay, пока он открыт как модальный слой.\n\t\t */\n\t\tconst handleTabKey = (event: KeyboardEvent) => {\n\t\t\tif (!trapFocus || event.key !== KEYBOARD_KEY_TAB || !overlayElement) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst focusableElements = getFocusableElements(overlayElement);\n\t\t\tif (focusableElements.length === 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\toverlayElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstElement = focusableElements[0];\n\t\t\tconst lastElement = focusableElements[focusableElements.length - 1];\n\t\t\tconst activeElement = document.activeElement;\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tif (activeElement === firstElement || activeElement === overlayElement) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tlastElement.focus();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (activeElement === lastElement) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tfirstElement.focus();\n\t\t\t}\n\t\t};\n\n\t\tattachOverlay();\n\n\t\treturn () => {\n\t\t\twindow.cancelAnimationFrame(rafId);\n\t\t\tif (trapFocus && overlayElement) {\n\t\t\t\toverlayElement.removeEventListener(DOM_KEYDOWN_EVENT, handleTabKey);\n\t\t\t}\n\n\t\t\tif (!restoreFocus) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst restoreTarget = resolveRestoreFocusTarget();\n\t\t\tif (restoreTarget?.isConnected) {\n\t\t\t\trestoreTarget.focus({ preventScroll: true });\n\t\t\t}\n\t\t};\n\t}, [active, trapFocus, restoreFocus, overlayRef]);\n\n\treturn overlayRef;\n}\n","import { OVERLAY_INITIAL_FOCUS_AUTO } from \"./overlayFocusConstants\";\nimport { useOverlayFocus } from \"./useOverlayFocus\";\n\n/**\n * Совместимый wrapper для overlay с фокус-ловушкой.\n */\nexport const useFocusTrap = (isOpen: boolean) => {\n\treturn useOverlayFocus<HTMLDivElement>({\n\t\tactive: isOpen,\n\t\ttrapFocus: true,\n\t\trestoreFocus: true,\n\t\tinitialFocus: OVERLAY_INITIAL_FOCUS_AUTO\n\t});\n};\n","import { useEffect, useState } from \"react\";\n\nexport function useIntersectionObserver(ref: React.RefObject<Element | null>, options?: IntersectionObserverInit) {\n\tconst [isIntersecting, setIsIntersecting] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst el = ref.current;\n\t\tif (!el) return;\n\n\t\tconst observer = new IntersectionObserver(([entry]) => {\n\t\t\tsetIsIntersecting(entry.isIntersecting);\n\t\t}, options);\n\n\t\tobserver.observe(el);\n\n\t\treturn () => {\n\t\t\tif (el) {\n\t\t\t\tobserver.unobserve(el);\n\t\t\t}\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [options, ref]); // не забыть, что ref.current может меняться\n\n\treturn { isIntersecting };\n}\n","import { useEffect, useState } from \"react\";\n\nimport { DOM_RESIZE_EVENT } from \"./domEventConstants\";\n\nexport const useIsTouchDevice = () => {\n\tconst [isTouchDevice, setIsTouchDevice] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst checkTouchDevice = () => {\n\t\t\tconst isTouch = window.matchMedia(\"(pointer: coarse)\").matches || \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n\t\t\tsetIsTouchDevice(isTouch);\n\t\t};\n\n\t\tcheckTouchDevice();\n\n\t\t// Обработчик для изменений в типе устройства\n\t\twindow.addEventListener(DOM_RESIZE_EVENT, checkTouchDevice);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(DOM_RESIZE_EVENT, checkTouchDevice);\n\t\t};\n\t}, []);\n\n\treturn isTouchDevice;\n};\n","const SCROLL_EDGE_TOLERANCE_PX = 1;\n\n/** Проверяет обычную вложенную scroll-цепочку; корневой документ не является разрешённым host. */\nexport function canConsumeVerticalTouchScroll(documentTarget: Document, path: readonly EventTarget[], deltaY: number): boolean {\n\tconst view = documentTarget.defaultView;\n\tif (!view) return true;\n\tfor (const entry of path) {\n\t\tif (entry === documentTarget.body || entry === documentTarget.documentElement) break;\n\t\tif (!(entry instanceof view.Element) || !entry.isConnected) continue;\n\t\tconst style = view.getComputedStyle(entry);\n\t\tif (!/^(auto|scroll|overlay)$/.test(style.overflowY)) continue;\n\t\t// Reverse/writing-mode layout имеет другую систему координат. В этом patch\n\t\t// не подменяем её предположением 0..max и не реализуем собственную scroll physics.\n\t\tif (style.flexDirection === \"column-reverse\" || (style.writingMode && style.writingMode !== \"horizontal-tb\")) return true;\n\t\tconst maximum = Math.max(0, entry.scrollHeight - entry.clientHeight);\n\t\tconst top = Math.max(0, Math.min(maximum, entry.scrollTop));\n\t\t// scrollTop дробный, а scrollHeight/clientHeight округлены: 1 CSS px\n\t\t// допуска перекрывает ложный остаток на физически достигнутом краю.\n\t\tif (deltaY > 0 ? maximum - top > SCROLL_EDGE_TOLERANCE_PX : top > SCROLL_EDGE_TOLERANCE_PX) return true;\n\t\t// На краю contain/none движение не должно переходить к следующему ancestor.\n\t\tif (/^(contain|none)$/.test(style.overscrollBehaviorY)) return false;\n\t}\n\treturn false;\n}\n","/** Редактирование/выделение остаются у браузера: перехват move способен сорвать drag каретки. */\nexport function isNativeTouchInteraction(documentTarget: Document, path: readonly EventTarget[]): boolean {\n\tconst view = documentTarget.defaultView;\n\tif (!view) return true;\n\tlet editableBoundarySeen = false;\n\tlet target: Element | undefined;\n\tfor (const entry of path) {\n\t\tif (!(entry instanceof view.Element)) continue;\n\t\ttarget ??= entry;\n\t\tif (entry.matches(\"input:not(:disabled), textarea:not(:disabled), select:not(:disabled), audio[controls], video[controls]\")) {\n\t\t\treturn true;\n\t\t}\n\t\tif (editableBoundarySeen) continue;\n\t\tconst editable = entry.getAttribute(\"contenteditable\")?.toLowerCase();\n\t\tif (editable === \"\" || editable === \"true\" || editable === \"plaintext-only\") return true;\n\t\tif (editable === \"false\") editableBoundarySeen = true;\n\t}\n\tconst selection = documentTarget.getSelection();\n\t// Чужое выделение не отключает защиту заголовка/фона на всей странице.\n\tif (!target || !selection || selection.isCollapsed) return false;\n\tfor (let index = 0; index < selection.rangeCount; index += 1) {\n\t\tif (selection.getRangeAt(index).intersectsNode(target)) return true;\n\t}\n\treturn false;\n}\n","import { canConsumeVerticalTouchScroll } from \"./canConsumeVerticalTouchScroll\";\nimport { isNativeTouchInteraction } from \"./isNativeTouchInteraction\";\n\n// Один и тот же набор событий используется при подключении и снятии защиты жеста.\nconst TOUCH_START_EVENT = \"touchstart\";\nconst TOUCH_MOVE_EVENT = \"touchmove\";\nconst TOUCH_END_EVENT = \"touchend\";\nconst TOUCH_CANCEL_EVENT = \"touchcancel\";\n\ntype TouchScrollObservation = Readonly<{\n\tidentifier: number;\n\tx: number;\n\ty: number;\n\tpath: readonly EventTarget[];\n}>;\n\n/**\n * Safari может передать вертикальный pan корню при открытой клавиатуре даже\n * с fixed body. Страхуем пустую область/достигнутый край, не имитируя скроллинг.\n * Один listener set живёт ровно столько же, сколько общий document lock.\n */\nexport function attachDocumentTouchScrollGuard(documentTarget: Document): () => void {\n\tconst view = documentTarget.defaultView;\n\tlet observation: TouchScrollObservation | null = null;\n\tlet bypassGesture = false;\n\n\tconst onStart = (event: TouchEvent): void => {\n\t\t// После pinch даже оставшийся один палец принадлежит тому же native gesture.\n\t\tif (bypassGesture) return;\n\t\tconst touch = event.touches[0];\n\t\tconst path = event.composedPath();\n\t\tif (\n\t\t\tevent.touches.length !== 1 ||\n\t\t\t!touch ||\n\t\t\t(view?.visualViewport?.scale ?? 1) > 1 ||\n\t\t\tisNativeTouchInteraction(documentTarget, path)\n\t\t) {\n\t\t\tbypassGesture = true;\n\t\t\tobservation = null;\n\t\t\treturn;\n\t\t}\n\t\tobservation = { identifier: touch.identifier, x: touch.clientX, y: touch.clientY, path };\n\t};\n\n\tconst onMove = (event: TouchEvent): void => {\n\t\tif (bypassGesture || !observation) return;\n\t\tconst touch = event.touches[0];\n\t\tif (event.touches.length !== 1 || !touch || touch.identifier !== observation.identifier || (view?.visualViewport?.scale ?? 1) > 1) {\n\t\t\tbypassGesture = true;\n\t\t\tobservation = null;\n\t\t\treturn;\n\t\t}\n\t\tconst { x, y, path } = observation;\n\t\tconst deltaX = x - touch.clientX;\n\t\tconst deltaY = y - touch.clientY;\n\t\tobservation = { identifier: touch.identifier, x: touch.clientX, y: touch.clientY, path };\n\t\tif (isNativeTouchInteraction(documentTarget, path)) {\n\t\t\tbypassGesture = true;\n\t\t\treturn;\n\t\t}\n\t\t// Горизонтальные жесты, wheel и touchstart остаются без изменений.\n\t\tif (!event.cancelable || event.defaultPrevented || !deltaY || Math.abs(deltaX) >= Math.abs(deltaY)) return;\n\t\tif (!canConsumeVerticalTouchScroll(documentTarget, path, deltaY)) event.preventDefault();\n\t};\n\n\tconst onEnd = (event: TouchEvent): void => {\n\t\tif (event.touches.length > 0) return;\n\t\tobservation = null;\n\t\tbypassGesture = false;\n\t};\n\n\tdocumentTarget.addEventListener(TOUCH_START_EVENT, onStart, { capture: true, passive: true });\n\tdocumentTarget.addEventListener(TOUCH_MOVE_EVENT, onMove, { capture: true, passive: false });\n\tdocumentTarget.addEventListener(TOUCH_END_EVENT, onEnd, { capture: true, passive: true });\n\tdocumentTarget.addEventListener(TOUCH_CANCEL_EVENT, onEnd, { capture: true, passive: true });\n\treturn () => {\n\t\tdocumentTarget.removeEventListener(TOUCH_START_EVENT, onStart, true);\n\t\tdocumentTarget.removeEventListener(TOUCH_MOVE_EVENT, onMove, true);\n\t\tdocumentTarget.removeEventListener(TOUCH_END_EVENT, onEnd, true);\n\t\tdocumentTarget.removeEventListener(TOUCH_CANCEL_EVENT, onEnd, true);\n\t\tobservation = null;\n\t};\n}\n","import { DOM_INSTANT_SCROLL_BEHAVIOR } from \"../domScrollConstants\";\n\nimport { attachDocumentTouchScrollGuard } from \"./attachDocumentTouchScrollGuard\";\n\n// Имена принадлежащих lock CSS-свойств общие для снимка, применения и восстановления.\nconst OVERFLOW_PROPERTY = \"overflow\";\nconst OVERFLOW_X_PROPERTY = \"overflow-x\";\nconst OVERFLOW_Y_PROPERTY = \"overflow-y\";\nconst POSITION_PROPERTY = \"position\";\nconst TOP_PROPERTY = \"top\";\nconst LEFT_PROPERTY = \"left\";\nconst WIDTH_PROPERTY = \"width\";\nconst BOX_SIZING_PROPERTY = \"box-sizing\";\nconst PADDING_RIGHT_PROPERTY = \"padding-right\";\nconst HIDDEN_OVERFLOW_VALUE = \"hidden\";\n\ntype InlineProperty = Readonly<{ name: string; value: string; priority: string }>;\n\ntype DocumentScrollLock = Readonly<{\n\tleases: Map<symbol, boolean>;\n\tupdateCompensation: () => void;\n\trestore: () => void;\n}>;\n\nconst locks = new WeakMap<Document, DocumentScrollLock>();\n\n/** Снимок ограничен принадлежащими lock свойствами, остальные inline-правки не затрагиваются. */\nfunction captureProperties(style: CSSStyleDeclaration, names: readonly string[]): readonly InlineProperty[] {\n\treturn names.map((name) => ({ name, value: style.getPropertyValue(name), priority: style.getPropertyPriority(name) }));\n}\n\nfunction restoreProperties(style: CSSStyleDeclaration, properties: readonly InlineProperty[]): void {\n\t// Сначала снимаем весь принадлежащий нам shorthand/longhand набор: иначе позднее\n\t// удаление пустого longhand может отменить только что восстановленный shorthand.\n\tfor (const { name } of properties) style.removeProperty(name);\n\tfor (const { name, value, priority } of properties) {\n\t\tif (value) style.setProperty(name, value, priority);\n\t}\n}\n\n/** Один владелец body/html на документ предотвращает преждевременный unlock вложенных overlays. */\nexport function acquireDocumentScrollLock(documentTarget: Document, compensateScrollbar: boolean): () => void {\n\tconst view = documentTarget.defaultView;\n\tconst body = documentTarget.body;\n\tif (!view || !body) return () => undefined;\n\n\tlet lock = locks.get(documentTarget);\n\tif (!lock) {\n\t\tconst rootStyle = documentTarget.documentElement.style;\n\t\tconst bodyStyle = body.style;\n\t\tconst rootProperties = captureProperties(rootStyle, [OVERFLOW_PROPERTY, OVERFLOW_X_PROPERTY, OVERFLOW_Y_PROPERTY]);\n\t\tconst bodyProperties = captureProperties(bodyStyle, [\n\t\t\tPOSITION_PROPERTY,\n\t\t\tTOP_PROPERTY,\n\t\t\tLEFT_PROPERTY,\n\t\t\tWIDTH_PROPERTY,\n\t\t\tOVERFLOW_PROPERTY,\n\t\t\tOVERFLOW_X_PROPERTY,\n\t\t\tOVERFLOW_Y_PROPERTY,\n\t\t\tBOX_SIZING_PROPERTY,\n\t\t\tPADDING_RIGHT_PROPERTY\n\t\t]);\n\t\tconst originalPadding = captureProperties(bodyStyle, [PADDING_RIGHT_PROPERTY]);\n\t\tconst scrollX = view.scrollX;\n\t\tconst scrollY = view.scrollY;\n\t\tconst scrollbarWidth = Math.max(0, view.innerWidth - documentTarget.documentElement.clientWidth);\n\t\tconst computedPadding = Number.parseFloat(view.getComputedStyle(body).paddingRight) || 0;\n\t\tconst leases = new Map<symbol, boolean>();\n\n\t\t// Fixed body нужен и при iOS visual-viewport pan: одного overflow hidden недостаточно.\n\t\trootStyle.setProperty(OVERFLOW_PROPERTY, HIDDEN_OVERFLOW_VALUE);\n\t\tbodyStyle.setProperty(POSITION_PROPERTY, \"fixed\");\n\t\tbodyStyle.setProperty(TOP_PROPERTY, `${-scrollY}px`);\n\t\tbodyStyle.setProperty(LEFT_PROPERTY, `${-scrollX}px`);\n\t\tbodyStyle.setProperty(WIDTH_PROPERTY, \"100%\");\n\t\tbodyStyle.setProperty(OVERFLOW_PROPERTY, HIDDEN_OVERFLOW_VALUE);\n\t\tbodyStyle.setProperty(BOX_SIZING_PROPERTY, \"border-box\");\n\t\tconst releaseTouchGuard = attachDocumentTouchScrollGuard(documentTarget);\n\n\t\tlock = {\n\t\t\tleases,\n\t\t\tupdateCompensation: () => {\n\t\t\t\tif (scrollbarWidth > 0 && [...leases.values()].some(Boolean)) {\n\t\t\t\t\tbodyStyle.setProperty(PADDING_RIGHT_PROPERTY, `${computedPadding + scrollbarWidth}px`);\n\t\t\t\t} else restoreProperties(bodyStyle, originalPadding);\n\t\t\t},\n\t\t\trestore: () => {\n\t\t\t\treleaseTouchGuard();\n\t\t\t\trestoreProperties(rootStyle, rootProperties);\n\t\t\t\trestoreProperties(bodyStyle, bodyProperties);\n\t\t\t\tview.scrollTo({ left: scrollX, top: scrollY, behavior: DOM_INSTANT_SCROLL_BEHAVIOR });\n\t\t\t}\n\t\t};\n\t\tlocks.set(documentTarget, lock);\n\t}\n\n\tconst lease = Symbol();\n\tlock.leases.set(lease, compensateScrollbar);\n\tlock.updateCompensation();\n\treturn () => {\n\t\tif (!lock.leases.delete(lease)) return;\n\t\tif (lock.leases.size > 0) lock.updateCompensation();\n\t\telse {\n\t\t\tlocks.delete(documentTarget);\n\t\t\tlock.restore();\n\t\t}\n\t};\n}\n","import { useEffect } from \"react\";\n\nimport { acquireDocumentScrollLock } from \"./document-scroll/acquireDocumentScrollLock\";\nimport { type UseDocumentScrollLockOptions } from \"./document-scroll/documentScrollLockTypes\";\n\n/** Блокирует фоновую прокрутку до освобождения последнего потребителя; не управляет focus/inert. */\nexport function useDocumentScrollLock({ active, documentTarget, compensateScrollbar = false }: UseDocumentScrollLockOptions): void {\n\tuseEffect(() => {\n\t\tif (!active) return;\n\t\tconst target = documentTarget === undefined ? (typeof document === \"undefined\" ? null : document) : documentTarget;\n\t\tif (!target) return;\n\t\treturn acquireDocumentScrollLock(target, compensateScrollbar);\n\t}, [active, documentTarget, compensateScrollbar]);\n}\n","import { DOM_RESIZE_EVENT } from \"../domEventConstants\";\n\nconst VIEWPORT_SCROLL_EVENT = \"scroll\";\n\nconst properties = [\"--visual-viewport-top\", \"--visual-viewport-left\", \"--visual-viewport-width\", \"--visual-viewport-height\"] as const;\n\nconst attachments = new WeakMap<HTMLElement, { leases: Set<symbol>; detach: () => void }>();\n\n/** Подписка меняет CSS-переменные конкретной поверхности, не вызывает React render на каждом pan. */\nfunction createVisualViewportFrame(container: HTMLElement): () => void {\n\tconst view = container.ownerDocument.defaultView;\n\tif (!view) return () => undefined;\n\tconst viewport = view.visualViewport;\n\tconst style = container.style;\n\tconst previous = properties.map((name) => ({ name, value: style.getPropertyValue(name), priority: style.getPropertyPriority(name) }));\n\tconst ownedValues = new Map<string, string>();\n\tlet frame = 0;\n\n\tconst update = (): void => {\n\t\tframe = 0;\n\t\tconst bounds = [\n\t\t\tviewport?.offsetTop ?? 0,\n\t\t\tviewport?.offsetLeft ?? 0,\n\t\t\tviewport?.width ?? view.innerWidth,\n\t\t\tviewport?.height ?? view.innerHeight\n\t\t];\n\t\tconst fallback = [0, 0, view.innerWidth, view.innerHeight];\n\t\tproperties.forEach((name, index) => {\n\t\t\tconst value = `${Number.isFinite(bounds[index]) ? bounds[index] : fallback[index]}px`;\n\t\t\tif (ownedValues.get(name) === value) return;\n\t\t\tstyle.setProperty(name, value);\n\t\t\townedValues.set(name, value);\n\t\t});\n\t};\n\n\tconst schedule = (): void => {\n\t\tif (!frame) frame = view.requestAnimationFrame(update);\n\t};\n\n\tupdate();\n\tviewport?.addEventListener(DOM_RESIZE_EVENT, schedule);\n\tviewport?.addEventListener(VIEWPORT_SCROLL_EVENT, schedule);\n\tview.addEventListener(DOM_RESIZE_EVENT, schedule);\n\treturn () => {\n\t\tview.cancelAnimationFrame(frame);\n\t\tviewport?.removeEventListener(DOM_RESIZE_EVENT, schedule);\n\t\tviewport?.removeEventListener(VIEWPORT_SCROLL_EVENT, schedule);\n\t\tview.removeEventListener(DOM_RESIZE_EVENT, schedule);\n\t\tfor (const { name, value, priority } of previous) {\n\t\t\t// Не затираем новое значение, если внешний owner уже забрал это CSS-свойство.\n\t\t\tif (style.getPropertyValue(name) !== ownedValues.get(name) || style.getPropertyPriority(name)) continue;\n\t\t\tif (value) style.setProperty(name, value, priority);\n\t\t\telse style.removeProperty(name);\n\t\t}\n\t};\n}\n\n/** Несколько модалок могут разделять portal-root; его frame снимается только последним owner. */\nexport function attachVisualViewportFrame(container: HTMLElement): () => void {\n\tlet attachment = attachments.get(container);\n\tif (!attachment) {\n\t\tattachment = { leases: new Set(), detach: createVisualViewportFrame(container) };\n\t\tattachments.set(container, attachment);\n\t}\n\tconst lease = Symbol();\n\tattachment.leases.add(lease);\n\treturn () => {\n\t\tif (!attachment.leases.delete(lease) || attachment.leases.size > 0) return;\n\t\tattachments.delete(container);\n\t\tattachment.detach();\n\t};\n}\n","import { useEffect } from \"react\";\n\nimport { attachVisualViewportFrame } from \"./visual-viewport/attachVisualViewportFrame\";\nimport { type UseVisualViewportFrameOptions } from \"./visual-viewport/visualViewportFrameTypes\";\n\n/** CSS frame использует реальные visualViewport размеры без отмены pinch zoom; SSR оставляет CSS fallback. */\nexport function useVisualViewportFrame({ active, containerRef }: UseVisualViewportFrameOptions): void {\n\tuseEffect(() => {\n\t\tif (!active || typeof window === \"undefined\") return;\n\t\tlet frame = 0;\n\t\tlet detach: (() => void) | undefined;\n\t\t// Portal может установить ref позже родительского effect; ожидание завершается при cleanup.\n\t\tconst attach = () => {\n\t\t\tconst container = containerRef.current;\n\t\t\tif (container) detach = attachVisualViewportFrame(container);\n\t\t\telse frame = window.requestAnimationFrame(attach);\n\t\t};\n\t\tattach();\n\t\treturn () => {\n\t\t\twindow.cancelAnimationFrame(frame);\n\t\t\tdetach?.();\n\t\t};\n\t}, [active, containerRef]);\n}\n"],"mappings":"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"}